Skip to main content

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

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,


Back to the top