User Tools

Site Tools


perf: Linux Profiling GSoC 2021

Google Summer of Code Project ideas for perf, the Linux profiling subsystem.

What is perf?

perf has two components:

  1. kernel support for performance counters, performance monitoring units and tracing;
  2. a tool for accessing the kernel provided data, recording and visualizing it.

perf has had various enhancements such as support for BPF.

Perf community

Maintainers: Peter Zijlstra <peterz at>, Ingo Molnar <mingo at>, Arnaldo Carvalho de Melo <acme at>

Mailing list: linux-perf-users at

IRC: #perf on

Code Licenses: mostly GPLv2


Mentor contacts: Ian Rogers <irogers+gsoc21 at google dot com>, Namhyung Kim <namhyung at>

Project Proposals

Bring your open proposal

If you have your own ideas for how tracing and profiling can be improved in the Linux kernel and perf tool then these are welcomed.

User Interface

Interactive perf report

Currently the perf report command will process an entire file before providing a visualization. This can be slow for large files. In contrast, the perf top command will gather data in the background while providing a visualization. This project will look to break apart perf report so that processing is performed on a background thread with the visualization periodically refreshing.

Adding or improving graphical toolkit support

Perf has different user interfaces:

  • stdio - the most basic UI that can use a pager like less,
  • tui - based on slang,
  • gtk - uses the gtk2 user interface. This option isn't enabled by default at build time.

This project will look to improve the user interface experience with perf, for example, by upgrading the gtk2 code to use gtk4. The addition of other user interfaces would be an option for this project.

Perf data converter

The perf data command allows a file to be converted to other file formats, however, currently only CTF is supported. This project will look to add support for other file formats such as Firefox's Gecko profile format or Chrome's trace event format. By supporting conversion to these file formats visualization tools will be able to show a recorded file.

Scalability and speed

Large parts of the perf command are single threaded. As CPU core counts increase, this means that programming events can be slow and the command in general can be slower that it needs to be. This project will look to provide parallel approaches to processing perf data structures such as evlist so that more concurrency happens within the perf command.

gsoc/2021-gsoc-perf.txt · Last modified: 2021/02/06 01:21 by irogers