Go-Profiling: Wie der Runtime-Profiler die CPU, den Heap und mehr im Blick behält
Understanding the Go Runtime: Profiling

Der Artikel erklärt die fünf Profil-Typen von Go (CPU, Heap, Block, Mutex und Goroutine) und zeigt, dass sie alle auf demselben Grundgerüst basieren: dem pprof-Format. Die Sammlung der Daten folgt drei Modellen: CPU-Profiling nutzt Signale und einen Lock-freien Ringpuffer, Heap-, Block- und Mutex-Profiling sammeln direkt in einer Hash-Tabelle, und das Goroutine-Profil wird erst bei Abruf erstellt. Der Fokus liegt auf den Gemeinsamkeiten und Unterschieden der Implementierung im Go-Runtime.
Ein Sample hält niemals einen Funktionsnamen oder gar einen Stackframe – es hält eine Liste von location_ids, eine pro Frame im Stacktrace, Blatt zuerst.