diff options
Diffstat (limited to 'src/pkg/runtime/debug.go')
-rw-r--r-- | src/pkg/runtime/debug.go | 84 |
1 files changed, 20 insertions, 64 deletions
diff --git a/src/pkg/runtime/debug.go b/src/pkg/runtime/debug.go index 5117e1a55..6370a57d8 100644 --- a/src/pkg/runtime/debug.go +++ b/src/pkg/runtime/debug.go @@ -4,8 +4,6 @@ package runtime -import "unsafe" - // Breakpoint() executes a breakpoint trap. func Breakpoint() @@ -31,65 +29,6 @@ func Cgocalls() int64 // Goroutines returns the number of goroutines that currently exist. func Goroutines() int32 -type MemStatsType struct { - // General statistics. - // Not locked during update; approximate. - Alloc uint64 // bytes allocated and still in use - TotalAlloc uint64 // bytes allocated (even if freed) - Sys uint64 // bytes obtained from system (should be sum of XxxSys below) - Lookups uint64 // number of pointer lookups - Mallocs uint64 // number of mallocs - Frees uint64 // number of frees - - // Main allocation heap statistics. - HeapAlloc uint64 // bytes allocated and still in use - HeapSys uint64 // bytes obtained from system - HeapIdle uint64 // bytes in idle spans - HeapInuse uint64 // bytes in non-idle span - HeapObjects uint64 // total number of allocated objects - - // Low-level fixed-size structure allocator statistics. - // Inuse is bytes used now. - // Sys is bytes obtained from system. - StackInuse uint64 // bootstrap stacks - StackSys uint64 - MSpanInuse uint64 // mspan structures - MSpanSys uint64 - MCacheInuse uint64 // mcache structures - MCacheSys uint64 - BuckHashSys uint64 // profiling bucket hash table - - // Garbage collector statistics. - NextGC uint64 - PauseTotalNs uint64 - PauseNs [256]uint64 // most recent GC pause times - NumGC uint32 - EnableGC bool - DebugGC bool - - // Per-size allocation statistics. - // Not locked during update; approximate. - // 61 is NumSizeClasses in the C code. - BySize [61]struct { - Size uint32 - Mallocs uint64 - Frees uint64 - } -} - -var sizeof_C_MStats int // filled in by malloc.goc - -func init() { - if sizeof_C_MStats != unsafe.Sizeof(MemStats) { - println(sizeof_C_MStats, unsafe.Sizeof(MemStats)) - panic("MStats vs MemStatsType size mismatch") - } -} - -// MemStats holds statistics about the memory system. -// The statistics are only approximate, as they are not interlocked on update. -var MemStats MemStatsType - // Alloc allocates a block of the given size. // FOR TESTING AND DEBUGGING ONLY. func Alloc(uintptr) *byte @@ -102,9 +41,6 @@ func Free(*byte) // FOR TESTING AND DEBUGGING ONLY. func Lookup(*byte) (*byte, uintptr) -// GC runs a garbage collection. -func GC() - // MemProfileRate controls the fraction of memory allocations // that are recorded and reported in the memory profile. // The profiler aims to sample an average of @@ -156,4 +92,24 @@ func (r *MemProfileRecord) Stack() []uintptr { // where r.AllocBytes > 0 but r.AllocBytes == r.FreeBytes. // These are sites where memory was allocated, but it has all // been released back to the runtime. +// Most clients should use the runtime/pprof package or +// the testing package's -test.memprofile flag instead +// of calling MemProfile directly. func MemProfile(p []MemProfileRecord, inuseZero bool) (n int, ok bool) + +// CPUProfile returns the next chunk of binary CPU profiling stack trace data, +// blocking until data is available. If profiling is turned off and all the profile +// data accumulated while it was on has been returned, CPUProfile returns nil. +// The caller must save the returned data before calling CPUProfile again. +// Most clients should use the runtime/pprof package or +// the testing package's -test.cpuprofile flag instead of calling +// CPUProfile directly. +func CPUProfile() []byte + +// SetCPUProfileRate sets the CPU profiling rate to hz samples per second. +// If hz <= 0, SetCPUProfileRate turns off profiling. +// If the profiler is on, the rate cannot be changed without first turning it off. +// Most clients should use the runtime/pprof package or +// the testing package's -test.cpuprofile flag instead of calling +// SetCPUProfileRate directly. +func SetCPUProfileRate(hz int) |