-
-
Save EmperorEarth/4afad59557504d3514c279c658f19b63 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