Totally a work in progress ... !!! Please come back later : ).
https://twitter.com/felixge/status/1355846360562589696
Look at the go source code to understand how the data is captured, what role runtime.MemProfileRate plays, etc.
Think through sampling rate issues, alloc size classes, etc.
Talk about performance overhead ...
Figure out how the data ends up in the pprof file.
# turn of gc
GOGC=off go run <code>
# print gc events to stdout
GODEBUG=gctrace=1 go run <code>
-
What are the docs talking about here? How do I actually use this?
Pprof's -inuse_space, -inuse_objects, -alloc_space, and -alloc_objects flags select which to display, defaulting to -inuse_space (live objects, scaled by size).
A: Those flags are deprecated. Easiest way to select this stuff is via the pprof web ui's sample drop down.
-
The docs say I should get some kind of data, even if there is no GC. I can reproduce that, but the data seems to not change?
If there has been no garbage collection at all, the heap profile reports all known allocations. This exception helps mainly in programs running without garbage collection enabled, usually for debugging purposes.
I'm felixge and work at Datadog on Continuous Profiling for Go. You should check it out. We're also hiring : ).
The information on this page is believed to be correct, but no warranty is provided. Feedback is welcome!