Trace processor: Allow recursive clock sync resolution.

This CL makes clock sync more flexible and allows recursive
resolution. Previously we did require that each clock snapshot
did snapshot all clocks at the same time in order to be able to
resolve another domain to the trace time.
This CL allows to translate clock domains by recursively traversing
the clock snapshot tree.
This allows to deal with scenarios like:
- At time X, clock domains A and B are snapshotted.
- At time Y, clock domains B and C are snapshotted.
- Translated a timestamp from domain A to C even if we never saw
a snapshot that contains A and C at the same time.

This CL does NOT address:
 - user-defined sequence-scoped clocks.
 - custom resolutions.

Bug: 134400640
Bug: 138819158
Change-Id: I38969708fff72a5eca9464bfce8906b0605646ab
8 files changed
tree: c31b235f80d958e7959d7aea9c5f59b12e644dcb
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. ui/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD
  20. BUILD.extras
  21. BUILD.gn
  22. codereview.settings
  23. heapprofd.rc
  24. MODULE_LICENSE_APACHE2
  25. NOTICE
  26. OWNERS
  27. perfetto.rc
  28. PRESUBMIT.py
  29. README.chromium
  30. README.md
  31. TEST_MAPPING
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.

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.