Re: [PATCH 4/5] perf record: mmap output file - v5

From: David Ahern
Date: Tue Nov 12 2013 - 10:36:14 EST


On 11/12/13, 8:19 AM, Peter Zijlstra wrote:
On Tue, Nov 12, 2013 at 12:07:51PM -0300, Arnaldo Carvalho de Melo wrote:
Em Tue, Nov 12, 2013 at 03:57:07PM +0100, Peter Zijlstra escreveu:
On Tue, Nov 12, 2013 at 07:46:56AM -0700, David Ahern wrote:
When recording raw_syscalls for the entire system, e.g.,
perf record -e raw_syscalls:*,sched:sched_switch -a -- sleep 1

you end up with a negative feedback loop as perf itself calls write() fairly
often. This patch handles the problem by mmap'ing the file in chunks of 64M at
a time and copies events from the event buffers to the file avoiding write
system calls.

You know this completely fails the moment you trace faults, because
every new access to one of those pages (to mark it dirty) will trigger a
fault. And we'll take a bunch more faults -- one for each page -- than
we ever did write() syscalls.

So we should provide a neon lettered warning when doing that, no? :-)

Dunno.. it _should_ all work. Try it and see what it does.. Once the
events are bigger than a page things might get 'interesting' though.


one option here is not allow page faults and system wide system calls. system wide tracing needs mmap; page faults for a task can use write(). I left that option in case something like this came up.

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/