Perfetto benchmarks

*** note This doc is WIP, stay tuned.


This doc should show the charts of perfetto_benchmarks, showing cpu usage and tracing bandwidth for both writing (producer->service) and reading (service->file / service->consumer).

In two modes:

  • Measure peak tracing bandwidth saturating the cpu: the producer(s) write as much data as they can, reaching 100% cpu usage.
  • Measure CPU overhead vs constant bandwidth: the producer(s) writes data at a pre-defined rate.

Tweaking the various parameters, such as:

  • Number of writers
  • Size of the shared memory buffer
  • Size of each TracePacket.

TL;DR:
Peak producer-to-service tracing bandwidth:

  • Linux desktop: ~1.3 GB/s
  • Android Pixel: ~1 GB/s

Producer-to-service CPU overhead when writing ~3 MB/s: 0.01 - 0.03 (0.01 := 1% cpu time of one core)

CPU overhead for translating ftrace raw pipe into protobuf:

  • Android Pixel: 0.00-0.01 when idle.
  • Android Pixel: 0.02-0.04 with 8 cores @ 8.0 CPU usage (raytracer).
  • Linux desktop: TBD