Re: malloc() tracing in perf?
From: Pekka Enberg
Date: Thu Aug 06 2009 - 05:19:17 EST
Pekka Enberg wrote:
Hi Peter,
On Thu, 2009-08-06 at 10:48 +0300, Pekka Enberg wrote:
Hi,
It's me again :-).
I have a little user-space application that is pretty memory hungry
and I want to understand why. I started to google around for a memory
profiler or a malloc() tracer but didn't seem to find anything really
useful.
But then it hit me, why can't I have kmemtrace + perf but for
user-space? Something like the "Malloc Trace" shown here:
http://developer.apple.com/documentation/developertools/conceptual/SharkUserGuide/OtherProfilingandTracingTechniques/OtherProfilingandTracingTechniques.html#//apple_ref/doc/uid/TP40005233-CH6-SW17
Does this sound like something that could/should be part of "perf"?
How would all this work anyway? Can we intercept malloc() and free()
somehow? Where would the data be pushed? Am I just going perf-crazy
and trying to turn it into a swiss army knife because it's so easy to
use?-)
Peter Zijlstra wrote:
OK, you just trod into a wasp's nest :-)
That sounds like uprobes, the equivalent of kprobes but for userspace.
I seem to have heard people are working on such a thing, but I can't
seem to find a single LKML post with 'uprobe' in the subject in the past
two years or something (except for MTUprobe) -- so I guess its not
really going anywhere any fast.
[snip]
Right. Are dynamic tracepoints what we want for malloc() and free()
interception, though? I guess we can just do generic "userspace function
called" events and record the passed parameters. Then "perf memreport"
can just go find all the malloc() and free() calls and construct a
memory profile out of it?
That said, I'd also be interested in wiring my userspace VM garbage
collector to emit similar alloc and free events as well (because perf
already has a JIT symbol map) which makes me think we want generic
"userspace allocated memory" events.
Argh, I dropped LKML from the CC. Sorry for the duplicate email!
Pekka
--
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/