commit | 9bd8cd3f9b10224bf68b15681021b19ea54243f0 | [log] [tgz] |
---|---|---|
author | Lalit Maganti <lalitm@google.com> | Tue Mar 24 16:00:05 2020 +0000 |
committer | Lalit Maganti <lalitm@google.com> | Tue Mar 24 16:00:05 2020 +0000 |
tree | f3fc41a3186373c9b6c50892b476eb2f988048b0 | |
parent | 7cb3e59f4ae478c626b993f284085607edf13762 [diff] |
trace_processor: rewrite raw table to systrace conversion code This CL overhauls the code which converts the lines of the raw table into legacy systrace format. Until this point, we were using a very fragile mechanism where we relied on the fact that the ordering of proto fields == the ordering in the args table. However, after aosp/1232520 we started sorting args based on key id. While generally this won't cause breakage, in some subtle cases (e.g. for binder_transaction), this was causing a reordering of the fields and thus crashes on debug and wrong output on release. Change this system to properly create a mapping between the order in the proto and the args table. We assume that for each event type, we will always get the same mapping of rows - this is a reasonable assumption as we do not expect the fields of ftrace to change mid-trace. Caching the ordering is necessary to get good performance. While there is a small performance hit by doing this, it is pretty negligible in the grand scheme of things (1% over for a 16GB trace). Bug: 150919723 Change-Id: I5b8eff0c2f528f882428019bd9f448fed738733c
Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.
See www.perfetto.dev for docs.
See /docs/contributing.md for instructions.
The source-of-truth repo is Android's Gerrit. The GitHub repo is a read-only mirror.
You can reach us on our Discord channel. If you prefer using IRC we have an experimental Discord <> IRC bridge synced with #perfetto-dev
on Freenode.