tp: parse tracing_started event and drop ftrace packets before it

ftrace can occasionally be buggy and may lead to events being included
in the trace from well before the tracing started. Until now we've just
included these events in the trace even though they really shouldn't be.

This CL introduces parsing of the tracing_started TraceServiceEvent
which gives the timestamp where tracing started (before any producer
is informed of tracing being ready).

We then use this timestamp and filter out all events before it. This
filtering is restricted to ftrace only as it's the only data source
fully under our control - if other producers want to write data from
before trace start, that's their choice.

Bug: 154156099
Change-Id: I8be103d091cd13c85a695688ae7e13c852b93e25
19 files changed
tree: 54fa8d9eca905049bc50b7f94fafbca55932f433
  1. bazel/
  2. build_overrides/
  3. buildtools/
  4. debian/
  5. docs/
  6. examples/
  7. gn/
  8. include/
  9. infra/
  10. protos/
  11. src/
  12. test/
  13. tools/
  14. ui/
  15. .clang-format
  16. .clang-tidy
  17. .gitignore
  18. .gn
  19. .style.yapf
  20. Android.bp
  21. Android.bp.extras
  22. BUILD
  23. BUILD.extras
  24. BUILD.gn
  25. CHANGELOG
  26. codereview.settings
  27. heapprofd.rc
  28. LICENSE
  29. METADATA
  30. MODULE_LICENSE_APACHE2
  31. OWNERS
  32. perfetto.rc
  33. PRESUBMIT.py
  34. README.chromium
  35. README.md
  36. TEST_MAPPING
  37. traced_perf.rc
  38. 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.