Lines Matching +full:system +full:- +full:trace

1 # Perfetto - System profiling, app tracing and trace analysis
3 Perfetto is a production-grade open-source stack for performance
4 instrumentation and trace analysis. It offers services and libraries for
5 recording system-level and app-level traces, native + java heap profiling, a
6 library for analyzing traces using SQL and a web-based UI to visualize and
7 explore multi-GB traces.
9 ![Perfetto stack](/docs/images/perfetto-stack.svg)
13 At its core, Perfetto introduces a novel userspace-to-userspace
14 [tracing protocol](/docs/design-docs/api-and-abi.md#tracing-protocol-abi) based
16 protocol is used both internally for the built-in data sources and exposed to
17 C++ apps through the [Tracing SDK](/docs/instrumentation/tracing-sdk.md) and the
18 [Track Event Library](/docs/instrumentation/track-events.md).
21 through an extensible protobuf-based capability advertisement and data source
23 [Trace configuration docs](/docs/concepts/config.md)).
25 user-defined buffers, allowing also streaming of
26 [arbitrarily long traces](/docs/concepts/config.md#long-traces) into the
29 ### System-wide tracing on Android and Linux
32 gather detailed performance data from different system interfaces. For the full
36 * [Kernel tracing](/docs/data-sources/cpu-scheduling.md): Perfetto integrates
38 scheduling events, syscalls) into the trace.
40 * [/proc and /sys pollers](/docs/data-sources/memory-counters.md), which allow
41 to sample the state of process-wide or system-wide cpu and memory counters
44 * Integration with Android HALs modules for recording [battery and energy-usage
45 counters](/docs/data-sources/battery-counters.md).
47 * [Native heap profiling](/docs/data-sources/native-heap-profiler.md): a
48 low-overhead heap profiler for hooking malloc/free/new/delete and associating
49 memory to call-stacks, based on out-of-process unwinding, configurable
52 * Capturing [Java heap dumps](/docs/data-sources/java-heap-profiler.md) with an
53 out-of-process profiler tightly integrated with the Android RunTime that
59 On Android, Perfetto is the next-generation system tracing system and replaces
60 the chromium-based systrace.
61 [ATrace-based instrumentation](/docs/data-sources/atrace.md) remains fully
66 ### Tracing SDK and user-space instrumentation
68 The [Perfetto Tracing SDK](/docs/instrumentation/tracing-sdk.md) enables C++
69 developers to enrich traces with app-specific trace points. You can choose
70 between the flexibility of defining your own strongly-typed events and creating
71 custom data sources or using the easier-to-use
72 [Track Event Library](/docs/instrumentation/track-events.md) which allows to
73 easily create time-bounded slices, counters and time markers using annotations
76 The SDK is designed for tracing of multi-process systems and multi-threaded
77 processes. It is based on [ProtoZero](/docs/design-docs/protozero.md), a library
78 for direct writing of protobuf events on thread-local shared memory buffers.
80 The same code can work both in fully-in-process mode, hosting an instance of the
83 app-specific instrumentation points with system-wide tracing events.
87 run-time code modifications or compiler plugins.
92 [chrome://tracing infrastructure][chrome-tracing]. Tracing in Chromium and its
95 The same [service-based architecture](/docs/concepts/service-model.md) of
96 system-wide tracing applies, but internally the Chromium Mojo IPC system is
99 By default tracing works in in-process mode in Chromium, recording only data
101 Chromium sandbox) tracing can work in hybrid in-process+system mode, combining
102 chrome-specific trace events with Perfetto system events.
106 ## Trace analysis
108 Beyond the trace recording capabilities, the Perfetto codebase includes a
109 dedicated project for importing, parsing and querying new and legacy trace
110 formats, [Trace Processor](/docs/analysis/trace-processor.md).
112 Trace Processor is a portable C++17 library that provides column-oriented
113 table storage, designed ad-hoc for efficiently holding hours of trace data
116 The trace data model becomes a set of
117 [SQL tables](/docs/analysis/sql-tables.autogen) which can be queried and joined
118 in extremely powerful and flexible ways to analyze the trace data.
120 On top of this, Trace Processor includes also a
121 [trace-based metrics subsystem](/docs/analysis/metrics.md) consisting of
122 pre-baked and extensible queries that can output strongly-typed summaries
123 about a trace in the form of JSON or protobuf messages (e.g., the CPU usage
126 Trace-based metrics allow an easy integration of traces in performance testing
129 Trace Processor is also designed for low-latency queries and for building
130 trace visualizers. Today Trace Processor is used by the
135 ## Trace visualization
137 Perfetto provides also a brand new trace visualizer for opening and querying
138 hours-long traces, available at [ui.perfetto.dev](https://ui.perfetto.dev).
140 Its multi-threading design based WebWorkers keeps the UI always responsive;
141 the analytical power of Trace Processor and SQLite is fully available in-browser
146 server-side interaction.
148 ![Perfetto UI screenshot](/docs/images/perfetto-ui-screenshot.png)
152 See the [Contributing -> Getting started page](/docs/contributing/getting-started.md).
158 * **Googlers**: use the internal bug tracker [go/perfetto-bugs](http://goto.google.com/perfetto-bug…
160 * **Non-Googlers**: use [GitHub issues](https://github.com/google/perfetto/issues).
164 * **Googlers**: use the internal bug tracker [go/chrometto-bugs](http://goto.google.com/chrometto-b…
166 * **Non-Googlers**: use [crbug.com](https://bugs.chromium.org/p/chromium/issues/list?q=component%3A…
169 [ftrace]: https://www.kernel.org/doc/Documentation/trace/ftrace.txt
170 [chrome-tracing]: https://www.chromium.org/developers/how-tos/trace-event-profiling-tool