Project Description

I find myself often rerunning the same preprocessing tasks on perf captures, like one-liner scripts to merge/split per-cpu data, time-slice them, filter for specific events and finally plot charts (flamegraphs, heat map, ...). Each time one of these tools run perf-script, just loading 30s worth of events from a large machine can consume precious seconds in my modern laptop. The idea is to provide an interactive tool a la GDB and drgn where we can load the events once and manipulate them interactively to generate different visualizations.

Investigating a performance issue is often an interactive process, where you look at the data from several fronts, filter out noise, look into smaller/larger chunks, etc. There is not really a sequence of tasks to do, instead you go where the information leads you. Thus, being able to quickly manipulate the data into different formats would be a valuable addition to a performance analyst toolset.

While the initial proposal focus on perf-tool, there is nothing preventing it from supporting different capture formats (ftrace, bcc-tools, blktrace...)

Goal for this Hackweek

  • Have a CLI tool that can load perf captures into an internal object representation and expose a python-like interpreter to manipulate the data.

  • Support time-slicing and filtering the data

  • Plot time-sliced flamegraphs efficiently. Rely on one of the multiple projects to do the actual plotting. I don't want to reinvent flamegraphs generation but speed up the intermediary steps.

Resources

  • drgn, gdb

  • wireshark

  • flamegraphs

  • trace-cmd

Looking for hackers with the skills:

Nothing? Add some keywords!

This project is part of:

Hack Week 23

Activity

  • about 1 year ago: gbertazi started this project.
  • about 1 year ago: gbertazi originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    This project is one of its kind!