TraceProcessor: improve process tracking to follow fork()/clone()

Improves the thread<>process tracking by following task_newtask
(fork() and clone()) and task_rename events.
When a thread spawn is detected (e.g., A spawns B), it associates
both of them under the same TGID, even if the TGID of neither of
them is known.
When the TGID of either of them is known it maps both threads
under the same process.

Furthermore this CL cleans up the process tracker and fixes
the UI recording page to record task_newtask instead of
process_fork: they seem equivalent but only task_newtask
contains the clone_flags that are necessary to distinguish
process fork() vs thread clone(CLONE_THREAD).

Bug: 119616981
Bug: 123602580
Test: tools/diff_test_trace_processor.py
Change-Id: I0df00aa355afa57a04f62c4d9f3a543b6d28820e
15 files changed
tree: 752786f612436a40c9b100b47306a0156343562d
  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.