commit | 6ffe0ab56793b6764be20377f66d3148e50ce7ec | [log] [tgz] |
---|---|---|
author | Zim <zezeozue@google.com> | Mon Oct 09 21:10:30 2023 +0100 |
committer | Zim <zezeozue@google.com> | Tue Oct 10 11:33:51 2023 +0100 |
tree | 8508c5a0cb26ec61d12be85bfabae03cc9c00e29 | |
parent | a908c7a3e56a876adb553a090851700ca68fa350 [diff] |
[stdlib]: Cache critical path join with thread_states The current impl of span_join has a limitation that there must be no overlaps within a partition. This is a challenge when span joining all critical paths with all thread_states because multiple threads can share the same critical paths. This restriction means that the result of querying the critical_path + thread_state table for more than one critical path thread at a time is undefined. This is fine because the exposed APIs don't allow you do that anyways. With the introduction of macros, it would be great to expose APIs to extract the critical path over arbitrary (overlapping) time windows. This change makes such queries possible on the critical_path + thread_state table. The limitation still applies for slices but having this functionality for thread_states is quite powerful for instance to extract the critical paths over all monitor contentions in a trace. There is a performance hit to caching this result but it should speed up subsequent queries. Test: tools/diff_test_trace_processor.py out/android/trace_processor_shell --name-filter '.*thread_executing_span.*' Change-Id: I5a44f91df4d6e08e8ffae4422dc88ad7c3ea4ff8
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.