perfetto
perfetto copied to clipboard
core: Introduce TraceBufferV2
TraceBufferV2 is a major rewrite of the historical TraceBuffer. The main reasons for the redesign are:
- Supporting ProtoVM and future interning improvements.
- Reducing space wasted for internal fragmentation when a chunk contains only few bytes of trace data.
- Making the trace output respect more the input ordering, rather than completely reordering packets by sequence.
This CL contains a design doc that discusses various aspects and challenges of the new TraceBuffer architecture.
Benchmark results:
Apple Macbook (M4)
------------------
BM_TraceBuffer_WR_SingleWriter<TraceBufferV1> bytes_per_second=9.77742G/s
BM_TraceBuffer_WR_SingleWriter<TraceBufferV2> bytes_per_second=12.6395G/s
BM_TraceBuffer_WR_MultipleWriters<TraceBufferV1> bytes_per_second=8.65385G/s
BM_TraceBuffer_WR_MultipleWriters<TraceBufferV2> bytes_per_second=11.7582G/s
BM_TraceBuffer_RD_MixedPackets<TraceBufferV1> bytes_per_second=4.27694G/s
BM_TraceBuffer_RD_MixedPackets<TraceBufferV2> bytes_per_second=4.35475G/s
Pixel 7
-------
BM_TraceBuffer_WR_SingleWriter<TraceBufferV1> bytes_per_second=4.4379G/s
BM_TraceBuffer_WR_SingleWriter<TraceBufferV2> bytes_per_second=3.7931G/s
BM_TraceBuffer_WR_MultipleWriters<TraceBufferV1> bytes_per_second=3.19148G/s
BM_TraceBuffer_WR_MultipleWriters<TraceBufferV2> bytes_per_second=3.47354G/s
BM_TraceBuffer_RD_MixedPackets<TraceBufferV1> bytes_per_second=1.26698G/s
BM_TraceBuffer_RD_MixedPackets<TraceBufferV2> bytes_per_second=1.35394G/s
Bug: b/447426810
Stack:
-
#3091 (tb_extract)
- [This PR] (tbv2)
@ddiproietto @sashwinbalaji this is finally ready for review!
@sashwinbalaji mind taking another look when you have some time. i'm back on this
🎨 Perfetto UI Build
✅ UI build is ready: https://storage.googleapis.com/perfetto-ci-artifacts/gh-20275822614-1-ui/ui/index.html