stdlib: Add system_state library for Wattson

Setup Wattson as a new library within Perfetto's standard library. This
patch moves the existing query used for Wattson, which calculates the
CPU subsystem system state, into Perfetto's standard library. Future
work will build upon the system state implemented in this patch and move
the entire energy estimation logic into the standard library.

The SQL files are organized by properties of the CPU subsystem,
such as CPU frequency, CPU idle state, and ARM DSU PMU counters, which
correspond to cpu_freq.sql, cpu_idle.sql, and arm_dsu.sql respectively.
Specific tables can be included and joined together later on as needed,
as is done in system_state.sql, which aggregates the frequency, idle
state, suspend, and DSU counters into the final CPU system state.

The patch has a test for each of Pixel phone and Pixel watch, testing
the end-to-end system states of two different devices, with specific
support for ARM DSU PMU and suspend/resume testing respectively.
Additionally, there are unit tests of the smaller building blocks, such
as individual cpu_idle, cpu_freq, and device name extraction tests.

Test: tools/diff_test_trace_processor.py out/linux/trace_processor_shell --name-filter '.*wattson.*'
Bug: 329507878
Change-Id: Ia3baed71056b3141901a7d1a28bbf3e237284c75
Signed-off-by: Samuel Wu <wusamuel@google.com>
15 files changed
tree: 3888bc5664ebf9e86784e9d76a6e452e48eb74db
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. third_party/
  16. tools/
  17. ui/
  18. .clang-format
  19. .clang-tidy
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .style.yapf
  25. Android.bp
  26. Android.bp.extras
  27. BUILD
  28. BUILD.extras
  29. BUILD.gn
  30. CHANGELOG
  31. codereview.settings
  32. DIR_METADATA
  33. heapprofd.rc
  34. LICENSE
  35. meson.build
  36. METADATA
  37. MODULE_LICENSE_APACHE2
  38. OWNERS
  39. perfetto.rc
  40. PerfettoIntegrationTests.xml
  41. persistent_cfg.pbtxt
  42. PRESUBMIT.py
  43. README.chromium
  44. README.md
  45. TEST_MAPPING
  46. traced_perf.rc
  47. WATCHLISTS
  48. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.