Tracing protocol: chunk QueryServiceStateResponse

The QueryServiceStateResponse IPC had a design oversight:
it was assuming that the response will fit into one IPC
message. This is not true when a lot of data sources with
large descriptors are registered. Each DataSourceDescritor
can be up to the size of an IPC message each.
Fix by chunking the response, splitting at the data source
level.
This change is binary compatible with the previous version.
The service still ensures that each chunk is a valid (but
incomplete) TracingServiceState response, so old clients
will still see the first response (which in most cases fits).

Bug: 153142114
Change-Id: I8256a440ddea1973400d8b2dd1d0496358bd2cd7
10 files changed
tree: 6a1eb51e1f91d396b448663e5e8e3e87e7c1ddce
  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. OWNERS
  28. perfetto.rc
  29. PRESUBMIT.py
  30. README.chromium
  31. README.md
  32. TEST_MAPPING
  33. traced_perf.rc
  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.