commit | 1ab43b2d4bfdd1dc6c0865e92e6b1ce0016d9fa8 | [log] [tgz] |
---|---|---|
author | Kalesh Singh <kaleshsingh@google.com> | Wed Jun 15 16:01:05 2022 -0700 |
committer | Kalesh Singh <kaleshsingh@google.com> | Wed Jun 22 13:19:12 2022 -0700 |
tree | 049210e71a2c5f3acd20be51f40e4c27f7e49b71 | |
parent | eee1f322a6eeed46b3d8ef1a08bf40ff85dd3e2a [diff] |
perfetto: Dynamically create and remove trace event triggers Using a persistent event trigger for rss_stat_throttled was found to cause regression of 8% more CPU cycles in kswapd. Have perfetto dynamically create these triggers when needed and cleanup the trigger once the perfetto session no longer needs it. Triggers are created/removed when the associated trace event is enabled/disabled by perfetto, so multiple sessions with the same event trigger are inherently handled correctly by the same ftrace_config_muxer logic for enabling/disabling ftrace events. The persistent rss_stat_throttled histogram trigger will be changed to an as-needed trigger created by perfetto. So the existence of this event trigger can no longer be used to check if the kernel supports throttling rss_stat event. Instead test creating a histogram trigger with division arithmetic (needed for event throttling) on rss_stat_throttled. Creating the trigger on rss_stat_throttled also implicitly checks that the synthetic throttled event is present. Test: adb push test/configs/rss_stat.cfg /data/local/tmp/ && cf-adb shell 'cat /data/local/tmp/rss_stat.cfg | perfetto --txt -c - -o /data/misc/perfetto-traces/trace Bug: 236172293 Change-Id: I9e14d56bb442129ea85163e492e00382eb8d8994 Merged-In: I9e14d56bb442129ea85163e492e00382eb8d8994 Merged-In: Ifa50c9e08893c8494739747fe77ab1ceec5c0dfd
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.