commit | c358e1a9898e67a20bfb17bcdfce5c46e697bd85 | [log] [tgz] |
---|---|---|
author | Zim <zezeozue@google.com> | Tue Jul 11 01:35:57 2023 +0100 |
committer | Zim <zezeozue@google.com> | Tue Jul 11 15:06:17 2023 +0100 |
tree | 0aeddc815d5fe7fbdf4d80bf743f02c06eccc318 | |
parent | 3844c24f9152aa4d401e1729fbf8b6926f7fcd5f [diff] |
[metrics]: Improve android.monitor_contention metric 1. parent_id: The previous definition of the parent_id was unintuitive. Previously, it was the lock contentions that were blocked by the current node. This meant that a node could have multiple parents. Now, it's been redefined to child_id. And a new parent_id field has been added which has the intuitive definition of the node blocking the current node. 2. Speed: The previous computations used some LEFT JOINs to compute the contention graph relationships. This turned out to quite expensive. Now, we use JOINs to find the parents and children separately. We can then efficiently find all the other isolated nodes with an EXCEPT. This yields a ~3x improvement on a 100MB boot trace. And makes some previously unloadable 1.6G traces load in ~6s. Test: tools/diff_test_trace_processor.py out/android/trace_processor_shell --name-filter '.*monitor.*' Change-Id: Icbf5b70fda472423028fbb33afb9186ed6354be2
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.