-
-
Save sebasrock/6b0288cd545e936482455f361bf6b85e to your computer and use it in GitHub Desktop.
Golang Flame graph profiles
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#install FlameGraph library | |
cd /opt/ | |
sudo git clone https://github.com/brendangregg/FlameGraph.git | |
#make it accesible from any folder | |
vim ~/.bashrc | |
##add these lines anywhere and exit vim (if you can) | |
export FLAMEPATH=/opt/FlameGraph | |
PATH=$PATH:$FLAMEPATH | |
#Golang - go-torch pprof alternative for flame graphs profiles | |
#see https://github.com/uber/go-torch | |
go get github.com/uber/go-torch | |
#install Graphviz (for go tool pprof export) | |
go get github.com/awalterschulze/gographviz | |
sudo apt-get install graphviz #works in ubuntu, for others see http://www.graphviz.org/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#GENERATE a FLAMEGRAPH from a GOLANG BENCHMARK | |
#if your benchmark is called: BenchmarkProcessThreadPool50() | |
#your package name (current folder) is called "AlfaGo" | |
#the followign command will generate 2 files: "AlfaGo.test" and "Thread50.gz" | |
go test -bench=ProcessThreadPool50 -cpuprofile=Thread50.gz | |
#rename the binary for posterity | |
mv AlfaGo.test Thread50.test | |
#generate a flamegraph svg | |
go-torch -f "Thread50Flame.svg" Thread50.test Thread50.gz | |
#generate a pprof svg graph | |
go tool pprof -svg -output "Thread50Graph.svg" hread50.test Thread50.gz | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment