| # Perfetto - System profiling, app tracing and trace analysis |
| |
| 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**. |
| |
|  |
| |
| ## Core Components |
| |
| Perfetto is not a single tool, but a collection of components that work |
| together: |
| |
| - **High-performance tracing daemons:** For capturing tracing information from |
| many processes on a single machine into a unified trace file. |
| - **Low-overhead tracing SDK:** A C++17 library for direct |
| userspace-to-userspace tracing of timings and state changes in your |
| application. |
| - **Extensive OS-level probes:** For capturing system-wide context on Android |
| and Linux (e.g. scheduling states, CPU frequencies, memory profiling, |
| callstack sampling). |
| - **Browser-based UI:** A powerful, fully local UI for visualizing and exploring |
| large, multi-GB traces on a timeline. It works in all major browsers, requires |
| no installation, and can open traces from other tools. |
| - **SQL-based analysis library:** A powerful engine that allows you to |
| programmatically query traces using SQL to automate analysis and extract |
| custom metrics. |
| |
| ## Why Use Perfetto? |
| |
| Perfetto was designed to be a versatile and powerful tracing system for a wide |
| range of use cases. |
| |
| - **For Android App & Platform Developers:** Debug and root-cause functional and |
| performance issues like slow startups, dropped frames (jank), animation |
| glitches, low memory kills, and ANRs. Profile both Java/Kotlin and native C++ |
| memory usage with heap dumps and profiles. |
| - **For C/C++ Developers (Linux, macOS, Windows):** Use the |
| [Tracing SDK](docs/instrumentation/tracing-sdk.md) to instrument your |
| application with custom trace points to understand its execution flow, find |
| performance bottlenecks, and debug complex behavior. On Linux, you can also |
| perform detailed CPU and native heap profiling. |
| - **For Linux Kernel & System Developers:** Get deep insights into kernel |
| behavior. Perfetto acts as an efficient userspace daemon for `ftrace`, |
| allowing you to visualize scheduling, syscalls, interrupts, and custom kernel |
| tracepoints on a timeline. |
| - **For Chromium Developers:** Perfetto is the tracing backend for |
| `chrome://tracing`. Use it to debug and root-cause issues in the browser, V8, |
| and Blink. |
| - **For Performance Engineers & SREs:** Analyze and visualize a wide range of |
| profiling and tracing formats, not just Perfetto's. Use the powerful SQL |
| interface to programmatically analyze traces from tools like **Linux perf**, |
| **macOS Instruments**, **Chrome JSON traces**, and more. |
| |
| ## Getting Started |
| |
| 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. |
| |
| 1. **New to tracing?** If you're unfamiliar with concepts like tracing and |
| profiling, start here: |
| |
| - [**What is Tracing?**](https://perfetto.dev/docs/tracing-101) - A gentle |
| introduction to the world of performance analysis. |
| |
| 2. **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: |
| |
| - [**How do I start using Perfetto?**](https://perfetto.dev/docs/getting-started/start-using-perfetto) - |
| Find your path based on your role and goals (e.g., Android App Developer, |
| C/C++ Developer, etc.). |
| |
| 3. **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: |
| - [**Perfetto Documentation Home**](https://perfetto.dev/docs/) |
| |
| ## Community & Support |
| |
| Have questions? Need help? |
| |
| - **[GitHub Discussions](https://github.com/google/perfetto/discussions/categories/q-a):** |
| For Q&A and general discussions. |
| - **[GitHub Issues](https://github.com/google/perfetto/issues):** For bug |
| reports. |
| - **[Discord](https://discord.gg/35ShE3A):** For live chat with the community |
| and developers. |
| |
| We follow |
| [Google's Open Source Community Guidelines](https://opensource.google/conduct/). |