HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
google
perfetto
C++2020–2026
google / perfetto

perfetto

Production-grade client-side tracing, profiling, and analysis for complex software systems.

6Distinct people
11Mentions
0Explicit recommenders
6.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Production-grade client-side tracing, profiling, and analysis for complex software systems.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year11 dated mentions

Observed mentions: 2020-11-07 02:53:09 UTC to 2026-04-06 11:12:00 UTC.

024682020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC826
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

What Hacker News says

11 sources
> How many of 500 tests were actually reviewed/tested and found good? Essentially ~all of the tests were found to be useful but in a more "smoke test" capacity i.e. they provided good "basic" coverage but it was clear that it was also not sufficient. Which is why in the rewrite: 1) I built a TCL driver that run the upstream SQLite tests and verified we accepted or rejected the SQL in the same way as SQLite. 2) I wrote a test runner which checked for "idempotence" i.e. run the formatter over all the SQL from all the other types of tests then verify that the AST was identical in the input and output. 3) I also wrote a script which ran the formatter over the PerfettoSQL standard library [1], a real world SQLite-based codebase that I knew and deeply understood so I could go through each file and manually check the output. > Examples of that w
Read the rest
ould also be nice (I don't doubt the personal feel that waste was justified) Some things learned concretely: 1) C was not going to work for the higher level parts of the project, even the formatter was not pleasant to read or write in C, the validator was much worse 2) Doing the SQLite source extraction in the same language meant that I could ship a really cool feature where the syntaqlite CLI could "generate dialect extensions" without people needing to download a separate script, run their own extraction on the SQLite source code, or worse yet, need to fork syntaqlite. This actually makes it technically possible for people in the web playground to dynamically build extensions to SQLite (though I haven't ended up plumbing that feature through yet) 3) Having a DSL [2] for extensions of SQLite (that e.g. PerfettoSQL could use) was the correct way to go rather than using YAML/JSON/XML etc becaue of how much clarity it provided and how AI took a lot of the annoyance of maintaining a DSL away. 4) I need to invest much more in testing from the start and also more testing where the correctness can be "proved" in some way (e.g. idempotence testing or SQLite upstream testing as described above) [1] https://github.com/google/perfetto/tree/main/src/trace_proce... [2] https://docs.syntaqlite.com/v0.2.15/guides/custom-dialects/
In Eight years of wanting, three months of building with AI
I wanted to take a look at some of these bug fixes, and one of the linked ones [1] seems more like a feature to me. So maybe it should be the week of "low priority" issues, or something like that. I don't mean to sound negative, I think it's a great idea. I do something like this at home from time to time. Just spend a day repairing and fixing things. Everything that has accumulated. 1: https://github.com/google/perfetto/issues/154
In We stopped roadmap work for a week and fixed bugs
> Yes I know, I used to work on Android ;) Ahhhh good to know :D > If it would help, I am of course happy to file bugs and also make simple fixes :) Please yes do file bugs! It's so useful to have these things tracked: I think you've already given several great pieces of feedback in your comment, it would be really nice to have this tracked. Doubly so if you have screenshots/videos/descriptions of other profilers (e.g. instruments) and how they do things so we can learn from their UX as well! And of course, if you're willing to contribute, we would love to have them! We have a decent contributor base today but it's something I want to continue growing and investing in over time! > can do something like get an "activity view" (like the stack that shows how many tasks are active) across all tracks I think you're asking for basically the sa
Read the rest
me as what https://github.com/google/perfetto/issues/3463 is asking for if I'm not mistaken? That will do it per-group (i.e. per process for the JSON format). Or do you actually want something global across all processes? I think we could do that, maybe hidden behind a command? > across all tracks, or quickly select the region between two spans I think you're asking for https://github.com/google/perfetto/issues/154! > pin a whole process (rather than just a thread) Makes sense, please file a bug! > especially since I can't really right-click anything which is what I typically do when looking for features There are some philosophical differences in the Perfetto team about "right clicking" :) I'm pro having it as an additional discovery mechanism but others feel it's a sign of bad UI/UX. Some commentary from users might help break ties!
In Perfetto: Swiss army knife for Linux client tracing
Perfetto does support embedding though I concede it's not as seamless as it was with chrome://tracing. As with Chrome://tracing, you can put the UI inside an iframe and pass the trace to the UI via postMessage (see https://perfetto.dev/docs/visualization/deep-linking-to-perf...). There are quite a few people that do this: the big ones I'm aware of is the Rust language CI for performance (https://github.com/rust-lang/rustc-perf/issues/1857) and Flutter Devtools (https://github.com/flutter/devtools/pull/4386/files). There's also an effort via contributions from some external folk to add more "proper" support for embedding (i.e. compiling Perfetto directly into a larger application, more like a library). That discussion is happening at https://github.com/google/perfetto/pull/2267 and the PRs spawned off it. We're hoping to have some more pub
Read the rest
lic documentation on this once that effort finishes up.
In Perfetto: Swiss army knife for Linux client tracing
Please file bugs against us at https://github.com/google/perfetto/issues! We're always very interested in seeing traces which are hitting performance issues. We take them seriously and are responsive at fixing them (or at least explaining what makes it hard to fix). As I note in the post, we optimize for the needs of Android/Chrome developers so we may not necessarily know about whatever condition you are hitting with your trace!
In Perfetto: Swiss army knife for Linux client tracing
For those unaware, chromium has built in support for viewing trace files (obviously, not relevant if you want mermaid diagrams for documentation) https://www.chromium.org/developers/how-tos/trace-event-prof... It looks like though the old catapult code has been officially deprecated, and they're recommending switching over to Perfetto. https://github.com/google/perfetto So anyhow, I just learned about the perfetto switch, so I won't try and dig up a link to the old way of formatting your traces to work with chrome://tracing, as it sounds completely deprecated. Go use Perfetto if you want a fairly easy way of interacting with trace data. I assume it's at least as good and useful as chrome://tracing.
In Mermaid Gantt diagrams for displaying distributed traces in Markdown (2023)

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.