perfetto icon indicating copy to clipboard operation
perfetto copied to clipboard

core: Introduce TraceBufferV2

Open primiano opened this issue 7 months ago • 1 comments

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)

primiano avatar Sep 25 '25 21:09 primiano

@ddiproietto @sashwinbalaji this is finally ready for review!

primiano avatar Oct 02 '25 23:10 primiano

@sashwinbalaji mind taking another look when you have some time. i'm back on this

primiano avatar Dec 11 '25 19:12 primiano

🎨 Perfetto UI Build

✅ UI build is ready: https://storage.googleapis.com/perfetto-ci-artifacts/gh-20275822614-1-ui/ui/index.html

github-actions[bot] avatar Dec 11 '25 19:12 github-actions[bot]