1
0
mirror of https://github.com/DataDog/go-profiler-notes.git synced 2024-11-19 20:31:52 +02:00
felixge's notes on the various go profiling methods that are available.
Go to file
Felix Geisendörfer 65dd611ec7
empty commit (#25)
2023-11-17 09:28:21 -05:00
.github/workflows Add link checker to detect broken links (#18) 2022-10-14 08:17:57 +02:00
bench Fix broken references 2021-03-11 12:40:37 +01:00
delve updates 2021-03-22 15:17:01 +01:00
examples fix broken links (#20) 2022-10-14 08:23:41 +02:00
guide fix typo 2022-09-26 16:48:04 +02:00
sim more block profile 2021-02-05 10:44:51 +01:00
.gitignore update 2021-02-05 10:44:43 +01:00
block-bias.md block-bias.md: fix image links 2021-07-06 08:23:17 +02:00
block.md fix link target for new block-profile section (#21) 2023-04-04 00:53:42 +02:00
cpu.md Update cpu.md (#14) 2022-02-23 09:22:28 +01:00
datadog.excalidraw Datadog operation illustration 2021-01-29 12:31:01 +01:00
datadog.md Updates to reflect move to Datadog org 2021-02-19 15:26:28 +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
go-binary.png Go binary 2021-05-15 11:18:04 +02:00
goroutine-matrix.png one more edit 2021-03-15 15:35:56 +01:00
goroutine-stack.png wip 2021-03-19 15:34:49 +01:00
goroutine.md Move block bias page 2021-05-24 12:58:28 +02:00
guide.excalidraw Initial work on new guide 2021-09-08 11:25:41 +02:00
heap.md Updates to reflect move to Datadog org 2021-02-19 15:26:28 +01:00
hello.trace Initial work on new guide 2021-09-08 11:25:41 +02:00
LICENSE.txt Add LICENSE 2021-02-10 09:46:44 +01:00
mutex.md Updates to reflect move to Datadog org 2021-02-19 15:26:28 +01:00
pprof.md Move block bias page 2021-05-24 12:58:28 +02:00
profile.png Fix for darkmode 2021-02-25 16:17:44 +01:00
profile.proto Initial pprof format notes 2021-01-09 16:12:23 +01:00
profilers.excalidraw Initial work on new guide 2021-09-08 11:25:41 +02:00
README.md Initial work on new guide 2021-09-08 11:25:41 +02:00
scheduler.png Initial work on new guide 2021-09-08 11:25:41 +02:00
stack-traces.excalidraw rename 2021-05-24 11:49:05 +02:00
stack-traces.md Fix typo (#22) 2023-06-30 09:09:01 +02:00

go-profiler-notes

Hey there 👋🏻, I'm felixge and I've just started a new job at Datadog to work on Continuous Profiling for Go.

I found that Go has a lot of profilers and there are many tools for looking at the data, but that there is very little information on what any of it means. So in order to make sure that I know what I'm talking about, I've started to research the existing profilers and how they work. This repository is my attempt to summarize my findings in the hope that 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.
  • JBD
    • 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 : ).

Stargazers over time

Stargazers over time

License

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

Disclaimers

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!