stdlib: Add support for DSU dependent devices

Add support for devices that depend on DSU for power estimates. The
callflow will short circuit device-specific tables that are unnecessary
for that device's calculation. For example, a device that depends on DSU
calculations will short circuit tables that use CPU dependent
calculations.

Runtime of existing Wattson test cases remain the same before and after
this patch (~4300ms).

SQL modules callflow:
 ┌────────┐   ┌────────┐
 │cpu_idle│   │cpu_freq│
 └┬───────┘   └───────┬┘
  │                   │
  │  ┌─────────────┐  │     ┌───────┐
  └─►│cpu_freq_idle│◄─┘     │devfreq│
     └──────┬──────┘        └───┬───┘
            │                   │
       ┌────▼────┐              │
    ┌──┤cpu_split├──────────┐   │
    │  └─────────┘          │   │
    │                       │   │
┌───▼────────────┐ ┌────────▼───▼───┐
│w_cpu_dependence│ │w_dsu_dependence│
└───┬────────────┘ └────────┬───────┘
    │                       │
    │      ┌─────────┐      │
    └─────►│estimates│◄─────┘
           └─────────┘

Bug: 370829192
Test: tools/diff_test_trace_processor.py out/linux/trace_processor_shell --name-filter '.*wattson.*'
Change-Id: I8eb611450605837ed88aea5f5d2934c572e11730
Signed-off-by: Samuel Wu <wusamuel@google.com>
8 files changed
tree: e48e5cf42084e63073b58938797207e82e77344f
  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. .bazelignore
  19. .bazelrc
  20. .clang-format
  21. .clang-tidy
  22. .git-blame-ignore-revs
  23. .gitattributes
  24. .gitignore
  25. .gn
  26. .style.yapf
  27. Android.bp
  28. Android.bp.extras
  29. BUILD
  30. BUILD.extras
  31. BUILD.gn
  32. CHANGELOG
  33. codereview.settings
  34. DIR_METADATA
  35. heapprofd.rc
  36. LICENSE
  37. meson.build
  38. METADATA
  39. MODULE_LICENSE_APACHE2
  40. OWNERS
  41. perfetto.rc
  42. PerfettoIntegrationTests.xml
  43. persistent_cfg.pbtxt
  44. PRESUBMIT.py
  45. README.chromium
  46. README.md
  47. TEST_MAPPING
  48. traced_perf.rc
  49. WATCHLISTS
  50. 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.