felixge's notes on the various go profiling methods that are available.
Find a file
Felix Geisendörfer 3dc963111a wording
2021-02-11 14:39:00 +01:00
bench update 2021-02-05 10:44:43 +01:00
examples Add block-net example 2021-02-10 10:48:38 +01:00
sim more block profile 2021-02-05 10:44:51 +01:00
.gitignore update 2021-02-05 10:44:43 +01:00
block.md Link block-net example 2021-02-10 10:49:08 +01:00
cpu.md more links 2021-02-09 16:14:31 +01:00
datadog.excalidraw Datadog operation illustration 2021-01-29 12:31:01 +01:00
datadog.md disclaimers 2021-02-05 10:45:11 +01:00
datadog.png Datadog operation illustration 2021-01-29 12:31:01 +01:00
flame-abc.png start cpu note 2021-01-10 15:24:09 +01:00
flame-abc.txt start cpu note 2021-01-10 15:24:09 +01:00
goroutine-matrix.png Note about goroutines 2021-01-17 19:21:02 +01:00
goroutine.md fix bullet 2021-02-09 13:19:23 +01:00
heap.md small updates 2021-02-09 13:16:11 +01:00
LICENSE.txt Add LICENSE 2021-02-10 09:46:44 +01:00
mutex.md Fix copy & paste error 2021-02-09 14:03:12 +01:00
pprof.md wording 2021-02-11 14:39:00 +01:00
profile.png pprof: Add visualization 2021-02-11 14:34:35 +01:00
profile.proto Initial pprof format notes 2021-01-09 16:12:23 +01:00
README.md Update link to net/http pprof source 2021-02-09 17:05:10 -08:00

go-profiler-notes

I've just started a new job at Datadog to work on Continuous Profiling for Go. To make sure that I know what I'm talking about, I'm planning to do an in-depth study of the existing profilers and how they work. I'll try to summarize what I learned in this repository as it might be useful to others.

  • Go Docs
    • Diagnostics: Has a very good overview over the available profiling and tracing facilities but doesn't go into a lot of depth.
    • runtime/pprof: Lists the available profiles and has a little more explanation about what kind of data they produce.
    • runtime: Has documentation on the various control knobs and pprof facilities, e.g. MemProfileRate.
    • net/http/pprof: Not a lot of docs, but diving into the code from there shows how the various profilers can be started/stopped on demand.
  • JDB
    • Profiler labels in Go: An introduction to using pprof labels and how they allow you to add additional context to your profiles.
    • Custom pprof profiles: Example for using custom profiles, shows tracking open/close events of a blob store and how to figure out how many blobs are open at a given time.
    • Mutex profile: Brief intro to the mutex profile.
    • Using Instruments to profile Go programs: How to use the macOS Instruments app (I think it's built on dtrace) to profile Go programs. Not clear what the benfits are, if any.
  • Profiling Go programs with pprof by Julia Evans: A nice tour with a focus on heap profiling and the pprof output format.

Got great links to recommend? Open an issue or PR, I'd happy to add your suggestions : ).

License

The markdown files in this repository are licensed under the CC BY-SA 4.0 license.

Disclaimers

I 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!