trace_processor: overhaul and reenable args and raw tables

This CL reintroduces the args table but with args deduped by "arg set".

An arg set is a collection of args which appear together. Since it is
very common for a group of args to appear together with the same values.
For example, the args for sched_switch where swapper -> process A or
the extreme case where regardless of how many CPU idle events there are,
there will only be 32 possible pairs of (idle state, cpu) for a 8 CPU
machine.

Thus, for each arg set we create, we can hash it, see if it's already
in the args table and if so we just refer to that existing set.

The logic for this is done by a newly introduced class ArgTracker which
buffers args being added for each row of another table and flushes to
storage at the end of the packet.

We also need to add columns to raw and counters tables to allow them to
reference the arg set in the args table.

Bug: 122513680
Change-Id: I1e99fa9eda3054b16ca48f0aaf03dde47fbbbdce
18 files changed
tree: 1aa4c824bdad1f71bd644c04eff875fa5cd45914
  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.gn
  20. codereview.settings
  21. heapprofd.rc
  22. MODULE_LICENSE_APACHE2
  23. NOTICE
  24. OWNERS
  25. perfetto.rc
  26. PRESUBMIT.py
  27. README.chromium
  28. README.md
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.