ctp: overhaul worker API to make everything more resilient

This CL attempts to make CTP more resilient to workers restarting.
Specifically on Google infra, restarts of workers is fully expected
every few days and we need to be able to survive these.

The only real way to do this is to make all the worker state
ephemeral and make the orchestrator the source of truth. We do this
by moving to a "reconciliation" (i.e. Kubernetes) syle model. Concretely, the orchestrator holds onto all the state and pushes
this out to the workers every 15s. That way, even if a worker
restarts, it'll be in sync within some time.

This allows significant simplifications of the worker APIs as we no
longer need to track create/destroy etc only the presence/absence of
stateless traces. While doing this, also strip out all notion of
stateful trace processing which will need some serious thoughts on
designing this without losing state.

In the future, we might even make the manager stateless by moving that
state to a database system which can be accessed by all the components.
That way, the worker can pull the state rather than the manager pushing
it out. That again requires some significant thought and introduces yet
another component so we don't do that in this CL.

Change-Id: I8aadce37f86fbaddab59a512ceae61b9f7de755f
Bug: 278208757
15 files changed
tree: f8f3af07db8a013ce13c8c86e73dd34312ae8411
  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. PRESUBMIT.py
  42. README.chromium
  43. README.md
  44. TEST_MAPPING
  45. traced_perf.rc
  46. 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.