| commit | 0e98b42c5be529a8b27ec4ae02c16843f9c6277d | [log] [tgz] |
|---|---|---|
| author | JoeNotCharlesGoogle <joenotcharles@google.com> | Wed Aug 20 16:48:03 2025 -0400 |
| committer | GitHub <noreply@github.com> | Wed Aug 20 16:48:03 2025 -0400 |
| tree | 9280c1ff3473d7ccc610be12f29ec6980313f619 | |
| parent | 0e22509ccc96e2bd79bfdcd1885d1fe6b1369ef8 [diff] |
Make process_type and thread_type into ints (#2633) This removes the ProcessType enum from chrome_process_descriptor.proto and, for symmetry, moves the ThreadType enum from chrome_thread_descriptor.proto to chrome_enums.proto. The enum values are now controlled from Chrome. The process_type and thread_type field are changed to int32 instead of naming the enum type. This is wire-compatible according to https://protobuf.dev/programming-guides/proto2/#wire-safe-changes. Specifying the enum type would require importing protos/third_party/chromium/chrome_enums.proto from inside protos/perfetto/trace/track_event, which is a dependency inversion. It would cause duplicate dependency when building Perfetto in Chrome, which would import the same enum from both base/protos/chrome_enums.proto and (indirectly) from third_party/perfetto/protos/third_party/chromium/chrome_enums.proto. Unfortunately all test expectations in .textproto format now need to use numeric process and thread types, since the test output doesn't treat the fields as enums. Ints are used instead of extension fields because managing the extension descriptor adds extra failure points: serializing an extension descriptor that defines `process_type` and `thread_type` into a trace will cause older trace_processor builds that define those fields as non-extensions to reject the trace, so this extension would need special handling in Chrome.
Perfetto is an open-source suite of SDKs, daemons and tools which use tracing to help developers understand the behaviour of complex systems and root-cause functional and performance issues on client and embedded systems.
It is a production-grade tool that is the default tracing system for the Android operating system and the Chromium browser.
Perfetto is not a single tool, but a collection of components that work together:
Perfetto was designed to be a versatile and powerful tracing system for a wide range of use cases.
ftrace, allowing you to visualize scheduling, syscalls, interrupts, and custom kernel tracepoints on a timeline.chrome://tracing. Use it to debug and root-cause issues in the browser, V8, and Blink.We‘ve designed our documentation to guide you to the right information as quickly as possible, whether you’re a newcomer to performance analysis or an experienced developer.
New to tracing? If you're unfamiliar with concepts like tracing and profiling, start here:
Ready to dive in? Our “Getting Started” guide is the main entry point for all users. It will help you find the right tutorials and documentation for your specific needs:
Want the full overview? For a comprehensive look at what Perfetto is, why it's useful, and who uses it, see our main documentation page:
Have questions? Need help?
We follow Google's Open Source Community Guidelines.