commit | a20c5efb639b2811ce4aa74c0656a5fb28b18bdf | [log] [tgz] |
---|---|---|
author | Ryan Savitski <rsavitski@google.com> | Wed Mar 31 15:26:51 2021 +0100 |
committer | Ryan Savitski <rsavitski@google.com> | Wed Mar 31 15:26:51 2021 +0100 |
tree | 925868485dfd3179be26f89993be61fa2e2ed0c9 | |
parent | 7590a6182b3cd4227c1b8a055735703473320a76 [diff] |
traced_perf: implement limiting inflight samples' heap footprint The samples are enqueued by the main thread, and freed by the unwinding thread, so the footprint accounting spans the two of them. The approach is to keep two relaxed atomic counters, where the main thread increments the allocated total, and the unwinder increments the deallocated total. The main thread also reads both to look at their difference. A bit rusty on atomics, but I think fully relaxed is fine here, as there are only two threads, and the unwinder should never decrement beyond what was allocated earlier (by the main thread, which is the reader). Could've also made it a single atomic with fetch_add and fetch_sub, don't think there's a major difference in practice either way. See aosp/1660138 for more context. Change-Id: I4aefb92147a450cd14143aa890faa905b7b6ca35
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.