Pprof++: A Go Profiler with Hardware Performance Monitoring
Full disclosure: I used to work in Uber's infrastructure group.<p>I'm always happy to see improvements to Go's profiling - the standard library's profiling is good, but it hasn't improved much since Go 1.0 (it took years just to get flame graphs integrated, and it's still near-impossible to get a usable dump of the in-memory object graph).<p>That said, I'm _very_ wary of tools that require a fork of the compiler and/or runtime. Uber's programming language research group is small (though mighty) and has a lot of demands on their time. Even over the medium term, it'll be hard to allocate time to keep this project current.<p>In the Go issue tracker, there's a long discussion [1] of the formal proposal [2] for these improvements. My understanding of the feedback is that the changes introduce too many Linux and x86-specific APIs. I'd love to see the author narrow the proposal to just improve timer fidelity when the OS exposes the PMU, without any new APIs. The more controversial proposal to collect richer platform- and architecture-specific data can be discussed separately.<p>Discussion [1]: <a href="https://github.com/golang/go/issues/36821" rel="nofollow">https://github.com/golang/go/issues/36821</a><p>Proposal [2]: <a href="https://go.googlesource.com/proposal/+/refs/changes/08/219508/2/design/36821-perf-counter-pprof.md" rel="nofollow">https://go.googlesource.com/proposal/+/refs/changes/08/21950...</a>