commit | e348903832bf1e483908a1e002ec89795437a236 | [log] [tgz] |
---|---|---|
author | Ryan Savitski <rsavitski@google.com> | Fri May 03 14:46:04 2024 +0100 |
committer | Ryan Savitski <rsavitski@google.com> | Fri May 03 14:03:37 2024 +0000 |
tree | 8248278a924f8729cb7e36dd45a5749bd60c2b72 | |
parent | 0618cd50b36961e43ccf6cc1cd8791c45c9f402e [diff] |
tp: binder_tracker: fix performance issue due to insert/erase heavy workload + FlatHashMap On a 10 minute trace with ~500k binder_transaction events, ~50% of the trace parsing time is spent in binder_tracker due to a performance issue in FlatHashMap. The map implementation never cleans tombstones outside of a resize, so a heavy insert+erase workload degrades to full scans of the hash map's capacity (since it becomes 100% full with tombstones). For now, fix by switching to std::unordered_map. Myself and Primiano will look into improving the hash table itself next week. Change-Id: Iedca0e490e4a024fb59b84b485be250bd579f9d3
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.