service: Support startup tracing via SMBs supplied by producers

Adapts SharedMemoryArbiter to support creation of unbound arbiters and
trace writers for startup tracing, intended for use with
producer-provided shared memory buffers.

While unbound, trace writers can be created and associated with a
startup tracing session using CreateStartupTraceWriter().

Because the target buffer ID for these TraceWriters is unknown until
the tracing session is started by the service, they use a placeholder
buffer ID that is translated by SharedMemoryArbiterImpl once the
startup tracing session's target buffer is bound.

In unbound state, the arbiter will buffer any messages for the service
until the arbiter and the startup session are bound.

Chromium side: https://chromium-review.googlesource.com/c/chromium/src/+/1978682

Bug: 147742905
Change-Id: I64aef618d189360340c0da73b835a71b96eb7904
10 files changed
tree: 1ad40de9b74b6d9d8f6726cc8c7c26adcc82d581
  1. bazel/
  2. build_overrides/
  3. buildtools/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  11. test/
  12. tools/
  13. ui/
  14. .clang-format
  15. .gitignore
  16. .gn
  17. .style.yapf
  18. Android.bp
  19. Android.bp.extras
  20. BUILD
  21. BUILD.extras
  22. BUILD.gn
  23. codereview.settings
  24. heapprofd.rc
  25. LICENSE
  26. MODULE_LICENSE_APACHE2
  27. NOTICE
  28. OWNERS
  29. perfetto.rc
  30. PRESUBMIT.py
  31. README.chromium
  32. README.md
  33. TEST_MAPPING
  34. WORKSPACE
README.md

Perfetto - Performance instrumentation and tracing

Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.

See www.perfetto.dev for docs.

Contributing

See /docs/contributing.md for instructions.

The source-of-truth repo is Android's Gerrit. The GitHub repo is a read-only mirror.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.

Community

You can reach us on our Discord channel. If you prefer using IRC we have an experimental Discord <> IRC bridge synced with #perfetto-dev on Freenode.