Skip to content

runtime/pprof: cpu profiling broken on OS X #2008

@adg

Description

@adg
Running godoc on OS X 10.6.7 with the changes shown below, the CPU profile only lists
calls to __cgo_allocate. This has been reported on the list, too.


$ gopprof godoc godoc.prof
Welcome to pprof!  For help, type 'help'.
(pprof) top10
Total: 7200 samples
    7200 100.0% 100.0%     7200 100.0% __cgo_allocate



diff -r b295b8bda20b src/cmd/godoc/godoc.go
--- a/src/cmd/godoc/godoc.go    Sun Jun 26 11:24:28 2011 +1000
+++ b/src/cmd/godoc/godoc.go    Mon Jun 27 08:41:25 2011 +1000
@@ -20,6 +20,7 @@
    "path/filepath"
    "regexp"
    "runtime"
+   "runtime/pprof"
    "sort"
    "strings"
    "template"
@@ -1279,6 +1280,7 @@
            log.Printf("before GC: bytes = %d footprint = %d", runtime.MemStats.HeapAlloc, runtime.MemStats.Sys)
            runtime.GC()
            log.Printf("after  GC: bytes = %d footprint = %d", runtime.MemStats.HeapAlloc, runtime.MemStats.Sys)
+           pprof.StopCPUProfile()
        }
        var delay int64 = 60 * 1e9 // by default, try every 60s
        if *testDir != "" {
diff -r b295b8bda20b src/cmd/godoc/main.go
--- a/src/cmd/godoc/main.go Sun Jun 26 11:24:28 2011 +1000
+++ b/src/cmd/godoc/main.go Mon Jun 27 08:41:25 2011 +1000
@@ -39,6 +39,7 @@
    "path/filepath"
    "regexp"
    "runtime"
+   "runtime/pprof"
    "strings"
    "time"
 )
@@ -218,10 +219,21 @@
 }
 
 
+var cpuprofile = flag.String("cpuprofile", "", "")
+
 func main() {
    flag.Usage = usage
    flag.Parse()
 
+   if *cpuprofile != "" {
+       f, err := os.Create(*cpuprofile)
+       if err != nil {
+           log.Fatal(err)
+       }
+       pprof.StartCPUProfile(f)
+       defer pprof.StopCPUProfile()
+   }
+
    // Determine file system to use.
    // TODO(gri) Complete this - for now we only have one.
    fs = OS

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions