diff --git a/src/cmd/trace/pprof.go b/src/cmd/trace/pprof.go index dea3a749fcc..40803ac5f99 100644 --- a/src/cmd/trace/pprof.go +++ b/src/cmd/trace/pprof.go @@ -9,13 +9,14 @@ package main import ( "bufio" "fmt" - "internal/pprof/profile" "internal/trace" "io" "io/ioutil" "net/http" "os" "os/exec" + + "github.com/google/pprof/profile" ) func init() { diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index ecc269e7136..30987437806 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -221,53 +221,53 @@ var pkgDeps = map[string][]string{ "go/types": {"L4", "GOPARSER", "container/heap", "go/constant"}, // One of a kind. - "archive/tar": {"L4", "OS", "syscall"}, - "archive/zip": {"L4", "OS", "compress/flate"}, - "container/heap": {"sort"}, - "compress/bzip2": {"L4"}, - "compress/flate": {"L4"}, - "compress/gzip": {"L4", "compress/flate"}, - "compress/lzw": {"L4"}, - "compress/zlib": {"L4", "compress/flate"}, - "context": {"errors", "fmt", "reflect", "sync", "time"}, - "database/sql": {"L4", "container/list", "context", "database/sql/driver", "database/sql/internal"}, - "database/sql/driver": {"L4", "context", "time", "database/sql/internal"}, - "debug/dwarf": {"L4"}, - "debug/elf": {"L4", "OS", "debug/dwarf", "compress/zlib"}, - "debug/gosym": {"L4"}, - "debug/macho": {"L4", "OS", "debug/dwarf"}, - "debug/pe": {"L4", "OS", "debug/dwarf"}, - "debug/plan9obj": {"L4", "OS"}, - "encoding": {"L4"}, - "encoding/ascii85": {"L4"}, - "encoding/asn1": {"L4", "math/big"}, - "encoding/csv": {"L4"}, - "encoding/gob": {"L4", "OS", "encoding"}, - "encoding/hex": {"L4"}, - "encoding/json": {"L4", "encoding"}, - "encoding/pem": {"L4"}, - "encoding/xml": {"L4", "encoding"}, - "flag": {"L4", "OS"}, - "go/build": {"L4", "OS", "GOPARSER"}, - "html": {"L4"}, - "image/draw": {"L4", "image/internal/imageutil"}, - "image/gif": {"L4", "compress/lzw", "image/color/palette", "image/draw"}, - "image/internal/imageutil": {"L4"}, - "image/jpeg": {"L4", "image/internal/imageutil"}, - "image/png": {"L4", "compress/zlib"}, - "index/suffixarray": {"L4", "regexp"}, - "internal/singleflight": {"sync"}, - "internal/trace": {"L4", "OS"}, - "internal/pprof/profile": {"L4", "OS", "compress/gzip", "regexp"}, - "math/big": {"L4", "math/bits"}, - "mime": {"L4", "OS", "syscall", "internal/syscall/windows/registry"}, - "mime/quotedprintable": {"L4"}, - "net/internal/socktest": {"L4", "OS", "syscall"}, - "net/url": {"L4"}, - "plugin": {"L0", "OS", "CGO"}, - "testing/internal/testdeps": {"L4", "runtime/pprof", "regexp"}, - "text/scanner": {"L4", "OS"}, - "text/template/parse": {"L4"}, + "archive/tar": {"L4", "OS", "syscall"}, + "archive/zip": {"L4", "OS", "compress/flate"}, + "container/heap": {"sort"}, + "compress/bzip2": {"L4"}, + "compress/flate": {"L4"}, + "compress/gzip": {"L4", "compress/flate"}, + "compress/lzw": {"L4"}, + "compress/zlib": {"L4", "compress/flate"}, + "context": {"errors", "fmt", "reflect", "sync", "time"}, + "database/sql": {"L4", "container/list", "context", "database/sql/driver", "database/sql/internal"}, + "database/sql/driver": {"L4", "context", "time", "database/sql/internal"}, + "debug/dwarf": {"L4"}, + "debug/elf": {"L4", "OS", "debug/dwarf", "compress/zlib"}, + "debug/gosym": {"L4"}, + "debug/macho": {"L4", "OS", "debug/dwarf"}, + "debug/pe": {"L4", "OS", "debug/dwarf"}, + "debug/plan9obj": {"L4", "OS"}, + "encoding": {"L4"}, + "encoding/ascii85": {"L4"}, + "encoding/asn1": {"L4", "math/big"}, + "encoding/csv": {"L4"}, + "encoding/gob": {"L4", "OS", "encoding"}, + "encoding/hex": {"L4"}, + "encoding/json": {"L4", "encoding"}, + "encoding/pem": {"L4"}, + "encoding/xml": {"L4", "encoding"}, + "flag": {"L4", "OS"}, + "go/build": {"L4", "OS", "GOPARSER"}, + "html": {"L4"}, + "image/draw": {"L4", "image/internal/imageutil"}, + "image/gif": {"L4", "compress/lzw", "image/color/palette", "image/draw"}, + "image/internal/imageutil": {"L4"}, + "image/jpeg": {"L4", "image/internal/imageutil"}, + "image/png": {"L4", "compress/zlib"}, + "index/suffixarray": {"L4", "regexp"}, + "internal/singleflight": {"sync"}, + "internal/trace": {"L4", "OS"}, + "math/big": {"L4", "math/bits"}, + "mime": {"L4", "OS", "syscall", "internal/syscall/windows/registry"}, + "mime/quotedprintable": {"L4"}, + "net/internal/socktest": {"L4", "OS", "syscall"}, + "net/url": {"L4"}, + "plugin": {"L0", "OS", "CGO"}, + "runtime/pprof/internal/profile": {"L4", "OS", "compress/gzip", "regexp"}, + "testing/internal/testdeps": {"L4", "runtime/pprof", "regexp"}, + "text/scanner": {"L4", "OS"}, + "text/template/parse": {"L4"}, "html/template": { "L4", "OS", "encoding/json", "html", "text/template", diff --git a/src/internal/pprof/profile/encode.go b/src/runtime/pprof/internal/profile/encode.go similarity index 100% rename from src/internal/pprof/profile/encode.go rename to src/runtime/pprof/internal/profile/encode.go diff --git a/src/internal/pprof/profile/filter.go b/src/runtime/pprof/internal/profile/filter.go similarity index 100% rename from src/internal/pprof/profile/filter.go rename to src/runtime/pprof/internal/profile/filter.go diff --git a/src/internal/pprof/profile/legacy_profile.go b/src/runtime/pprof/internal/profile/legacy_profile.go similarity index 100% rename from src/internal/pprof/profile/legacy_profile.go rename to src/runtime/pprof/internal/profile/legacy_profile.go diff --git a/src/internal/pprof/profile/profile.go b/src/runtime/pprof/internal/profile/profile.go similarity index 99% rename from src/internal/pprof/profile/profile.go rename to src/runtime/pprof/internal/profile/profile.go index 28e713d7beb..9b6a6f9aa9b 100644 --- a/src/internal/pprof/profile/profile.go +++ b/src/runtime/pprof/internal/profile/profile.go @@ -4,6 +4,9 @@ // Package profile provides a representation of profile.proto and // methods to encode/decode profiles in this format. +// +// This package is only for testing runtime/pprof. +// It is not used by production Go programs. package profile import ( diff --git a/src/internal/pprof/profile/profile_test.go b/src/runtime/pprof/internal/profile/profile_test.go similarity index 100% rename from src/internal/pprof/profile/profile_test.go rename to src/runtime/pprof/internal/profile/profile_test.go diff --git a/src/internal/pprof/profile/proto.go b/src/runtime/pprof/internal/profile/proto.go similarity index 100% rename from src/internal/pprof/profile/proto.go rename to src/runtime/pprof/internal/profile/proto.go diff --git a/src/internal/pprof/profile/proto_test.go b/src/runtime/pprof/internal/profile/proto_test.go similarity index 100% rename from src/internal/pprof/profile/proto_test.go rename to src/runtime/pprof/internal/profile/proto_test.go diff --git a/src/internal/pprof/profile/prune.go b/src/runtime/pprof/internal/profile/prune.go similarity index 100% rename from src/internal/pprof/profile/prune.go rename to src/runtime/pprof/internal/profile/prune.go diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go index b1ec23322ec..044329246b6 100644 --- a/src/runtime/pprof/pprof_test.go +++ b/src/runtime/pprof/pprof_test.go @@ -9,13 +9,13 @@ package pprof import ( "bytes" "fmt" - "internal/pprof/profile" "internal/testenv" "math/big" "os" "os/exec" "regexp" "runtime" + "runtime/pprof/internal/profile" "strings" "sync" "testing" diff --git a/src/runtime/pprof/proto_test.go b/src/runtime/pprof/proto_test.go index 664d4aa6c8e..aa2d03b4496 100644 --- a/src/runtime/pprof/proto_test.go +++ b/src/runtime/pprof/proto_test.go @@ -7,10 +7,10 @@ package pprof import ( "bytes" "encoding/json" - "internal/pprof/profile" "io/ioutil" "reflect" "runtime" + "runtime/pprof/internal/profile" "testing" ) diff --git a/src/runtime/pprof/protomem_test.go b/src/runtime/pprof/protomem_test.go index 3afdf491d1e..e5aa69fc377 100644 --- a/src/runtime/pprof/protomem_test.go +++ b/src/runtime/pprof/protomem_test.go @@ -6,8 +6,8 @@ package pprof import ( "bytes" - "internal/pprof/profile" "runtime" + "runtime/pprof/internal/profile" "testing" ) diff --git a/test/locklinear.go b/test/locklinear.go index f1fe213cc96..cddfff24f92 100644 --- a/test/locklinear.go +++ b/test/locklinear.go @@ -10,7 +10,10 @@ package main import ( "fmt" + "log" + "os" "runtime" + "runtime/pprof" "sync" "time" ) @@ -64,6 +67,13 @@ func checkLinear(typ string, tries int, f func(n int)) { const offset = 251 // known size of runtime hash table func main() { + f, err := os.Create("lock.prof") + if err != nil { + log.Fatal(err) + } + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + checkLinear("lockone", 1000, func(n int) { ch := make(chan int) locks := make([]sync.RWMutex, offset+1)