trace_to_text: Uses names from sched_switch

trace_to_text does not exactly replicate the behavior of the kernel
ftrace printer:

Real systrace output:
 CrRendererMain-15021 (15001) [007] ...1   700.748465: task_newtask: pid=15066 comm=CrRendererMain clone_flags=3d0f00 oom_score_adj=0
TaskSchedulerSe-15066 (15001) [006] d..3   700.748705: sched_switch: prev_comm=CrRendererMain prev_pid=15066 prev_prio=120 prev_state=S ==> next_comm=swapper/6 next_pid=0 next_prio=120
TaskSchedulerSe-15066 (15001) [006] ...2   700.748852: task_rename: pid=15066 oldcomm=CrRendererMain newcomm=TaskSchedulerSe oom_score_adj=0
TaskSchedulerSe-15066 (15001) [006] d..3   700.749199: sched_switch: prev_comm=TaskSchedulerSe prev_pid=15066 prev_prio=120 prev_state=S ==> next_comm=swapper/6 next_pid=0 next_prio=120

Our output:
 CrRendererMain-18939 (-----) [001] d..3 876.702255: task_newtask: comm=CrRendererMain pid=18956 clone_flags=4001536 oom_score_adj=905
 CrRendererMain-18956 (18905) [001] d..3 876.702766: sched_switch: prev_comm=CrRendererMain prev_pid=18956 prev_prio=120 prev_state=D ==> next_comm=swapper/1 next_pid=0 next_prio=120
 CrRendererMain-18956 (18905) [000] d..3 876.705214: task_rename: pid=18956 oldcomm=CrRendererMain newcomm=TaskSchedulerFo oom_score_adj=905
TaskSchedulerFo-18956 (18905) [000] d..3 876.705255: sched_switch: prev_comm=TaskSchedulerFo prev_pid=18956 prev_prio=120 prev_state=D ==> next_comm=CrRendererMain next_pid=18960 next_prio=12

The systrace output uses the final name for the thread (far left)
whereas trace_to_text uses the first name before the task rename
and the new name after. This confuses the catapult importer.

The real fix is to use the full trace_processor, but as a temporary
fix we can look through all sched_switch events in the first trace
to text pass to and extract the thread names from these.

Bug: 124446759
Change-Id: I7409df6e566cd1b360f67f678473856ac5d4e25b
2 files changed
tree: 7bf37e5427dfd0654265869e7b4e384272841b59
  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.