| # Perfetto benchmarks |
| |
| |
| *** note |
| **This doc is WIP**, stay tuned. |
| <!-- TODO(primiano): Summarize results of perfetto_benchmarks --> |
| *** |
| |
| 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 |