Commit 96af8174 authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/compile: add block profiling support

Updates #15756

Change-Id: Ic635812b324af926333122c02908cebfb24d7bce
Reviewed-on: https://go-review.googlesource.com/39208
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 87757472
......@@ -44,6 +44,8 @@ Flags:
Print compiler version and exit.
-asmhdr file
Write assembly header to file.
-blockprofile file
Write block profile for the compilation to file.
-complete
Assume package has no non-Go components.
-cpuprofile file
......
......@@ -221,6 +221,7 @@ func Main(archInit func(*Arch)) {
flag.StringVar(&memprofile, "memprofile", "", "write memory profile to `file`")
flag.Int64Var(&memprofilerate, "memprofilerate", 0, "set runtime.MemProfileRate to `rate`")
flag.StringVar(&traceprofile, "traceprofile", "", "write an execution trace to `file`")
flag.StringVar(&blockprofile, "blockprofile", "", "write block profile to `file`")
flag.StringVar(&benchfile, "bench", "", "append benchmark times to `file`")
obj.Flagparse(usage)
......
......@@ -32,6 +32,7 @@ func Exit(code int) {
}
var (
blockprofile string
cpuprofile string
memprofile string
memprofilerate int64
......@@ -73,6 +74,17 @@ func startProfile() {
// Not doing memory profiling; disable it entirely.
runtime.MemProfileRate = 0
}
if blockprofile != "" {
f, err := os.Create(blockprofile)
if err != nil {
Fatalf("%v", err)
}
runtime.SetBlockProfileRate(1)
atExit(func() {
pprof.Lookup("block").WriteTo(f, 0)
f.Close()
})
}
if traceprofile != "" && traceHandler != nil {
traceHandler(traceprofile)
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment