processor: Parse StreamingProfilePacket timestamps during tokenization

Oystein discovered that resolving delta-timestamps during the parsing
stage is problematic, because a later ThreadDescriptor may reset the
reference value before its preceeding packets are parsed.

Simplest fix seems to be to move resolution of StreamingProfilePacket
reference timestamps into the tokenization phase. See also discussion
on aosp/1234246. Resolution of pid/tids has to remain in the parsing
phase, so we only insert into tables then.

This patch moves StreamingProfilePacket parsing into a new
ProfileModule to accomplish this. It also makes a few minor changes to
the way in which we register modules, to simplify test setup.

Bug: chromium:1046918
Change-Id: I34868e0ba9365bc050a87b654975f3089d33f341
17 files changed
tree: 8f9150775371f51bbd15b26f9de859c334a3d63b
  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. traced_perf.rc
  35. 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.