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/