Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tracecompass-dev] Generic callstacks / callgraphs / flamegraphs


These changes sound really nice and needed.  I am personally a proponent of #3 and will definitely take advantage of it when its implemented.  While the process/thread hierarchy certainly makes sense in many contexts, it does not fit all cases and really should be abstracted.

Another issue is improving symbol resolution, which current is based on a private method (to retrieve the function name) making it hard to extend this behavior.  Maybe your changes could address this?


On Thu, Sep 8, 2016 at 6:52 PM, Geneviève Bastien <gbastien+lttng@xxxxxxxxxxxx> wrote:
Hi all,

Callgraphs and flamegraphs were added recently to Trace Compass. This is
such a great news that I want it for all my analyses!!

Some use cases: sql queries and functions calls for a web request,
execution stacks of threads used by the views of Trace Compass, a
user-defined callstack from a ust-trace.

So in the next weeks, I'll be working on making callstacks and
callgraphs and their associated views more generic. I have a few patches
on gerrit under the topic "for_jul_analyses callstack" [1] but they are
not quite ready for review. Here is the plan:

1) Add a ICallStackProvider interface, implemented by the current
CallStackAnalysis class that will provide CallStack objects that will
describe where to get the callstack from [in the state system for now]
2) Make the CallGraphAnalysis use those ICallStackProvider and their
CallStack(s) instead of the CallStackAnalysis directly and make sure all
the views still work.
3) The current call stack analysis has a hierarchy process ID -> thread
ID -> callstack where process IDs and thread IDs are conveniently
integers. But that does not cover all the use cases. So instead there
will be levels of grouping where a callstack can have as many levels as
it wishes. The current case would have 2 levels (Process and threads)
along with the final callstack level that has to be there. The current
callstack will still work as it does now with the symbol resolution.
4) Add support of XML-defined callstacks, where an XML analysis will
fill a state system with callstack-like data and will provide it as
callstack to the views.
5) Fix the flame graph so that there is more than one level of grouping
that can be shown (now is only threads, we don't have the process level)
6) Make it possible for callgraph to use any of the levels for
aggregation, as requested by the user (right now, statistics are
aggregated per thread only)

1 and 2 are done, as well as 4, but it lacks 3 to be entirely
satisfactory. Any thoughts? Comments? Additional requirements?

Best regards,


tracecompass-dev mailing list
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

Back to the top