Home | History | Annotate | Download | only in docs
      1 # Perfetto benchmarks
      2 
      3 
      4 *** note
      5 **This doc is WIP**, stay tuned.
      6 <!-- TODO(primiano): Summarize results of perfetto_benchmarks  -->
      7 ***
      8 
      9 This doc should show the charts of `perfetto_benchmarks`, showing cpu usage and
     10 tracing bandwidth for both writing (producer->service) and reading
     11 (service->file / service->consumer).
     12 
     13 In two modes:
     14 - Measure peak tracing bandwidth saturating the cpu: the producer(s) write as
     15   much data as they can, reaching 100% cpu usage.
     16 - Measure CPU overhead vs constant bandwidth: the producer(s) writes data at a
     17   pre-defined rate.
     18 
     19 Tweaking the various parameters, such as:
     20 - Number of writers
     21 - Size of the shared memory buffer
     22 - Size of each TracePacket.
     23 
     24 **TL;DR:**  
     25 Peak producer-to-service tracing bandwidth:
     26 * Linux desktop: ~1.3 GB/s
     27 * Android Pixel: ~1 GB/s
     28 
     29 Producer-to-service CPU overhead when writing ~3 MB/s: 0.01 - 0.03
     30 (0.01 := 1% cpu time of one core)
     31 
     32 CPU overhead for translating ftrace raw pipe into protobuf:
     33 * Android Pixel: 0.00-0.01 when idle.
     34 * Android Pixel: 0.02-0.04 with 8 cores @ 8.0 CPU usage (raytracer).
     35 * Linux desktop: TBD
     36