[lttng-dev] [RFC] perf sampling library for LTTng-UST

Francis Giraldeau francis.giraldeau at gmail.com
Fri Sep 23 18:43:32 UTC 2016


Hello! 

I did a small shared library for profiling code using perf sampling and LTTng-UST:

  https://github.com/giraldeau/lttng-ust/tree/sampling/liblttng-ust-sampling

It works by preloading the library when executing a program. Inside the library constructor, a perf counter is created and samples are saved inside the SIGIO handler using an LTTng-UST tracepoint. The call stack is obtained using libunwind, and thus it works even without frame pointers and with unmodified executables. 

Preliminary overhead measure with the default sampling period of 1E4 for cpu cycles is about 8.5%, or 2.2us per event. On my machine, about 38k samples per second are generated. This figure is obtained when compiling libunwind without signal re-entrance support.

Genevieve Bastien did a nice view in TraceCompass to load this trace and display the corresponding call graph view. 

  http://secretaire.dorsal.polymtl.ca/~gbastien/screenshots/lttng_sampling_callstack.png

The counter is hard coded now, but it's just a prototype to demonstrate the concept. I would find it very cool to see such feature in LTTng. What do you think?

Cheers, 

Francis


More information about the lttng-dev mailing list