]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/runtime/metrics/doc.go
crypto/tls: remove RSA KEX ciphers from the default list
[gostls13.git] / src / runtime / metrics / doc.go
index 63bea8c4488eb1e8c5c0cba1e7b9febd8e8f0695..78b2e6c3bce99972a8a1fb0ebd07d6696c89d018 100644 (file)
@@ -2,10 +2,13 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// Note: run 'go generate' (which will run 'go test -generate') to update the "Supported metrics" list.
+//go:generate go test -run=Docs -generate
+
 /*
 Package metrics provides a stable interface to access implementation-defined
 metrics exported by the Go runtime. This package is similar to existing functions
-like runtime.ReadMemStats and debug.ReadGCStats, but significantly more general.
+like [runtime.ReadMemStats] and [debug.ReadGCStats], but significantly more general.
 
 The set of metrics defined by this package may evolve as the runtime itself
 evolves, and also enables variation across Go implementations, whose relevant
@@ -15,7 +18,7 @@ metric sets may not intersect.
 
 Metrics are designated by a string key, rather than, for example, a field name in
 a struct. The full list of supported metrics is always available in the slice of
-Descriptions returned by All. Each Description also includes useful information
+Descriptions returned by [All]. Each [Description] also includes useful information
 about the metric.
 
 Thus, users of this API are encouraged to sample supported metrics defined by the
@@ -51,6 +54,88 @@ classes of floating-point values: NaN, infinity.
 
 Below is the full list of supported metrics, ordered lexicographically.
 
+       /cgo/go-to-c-calls:calls
+               Count of calls made from Go to C by the current process.
+
+       /cpu/classes/gc/mark/assist:cpu-seconds
+               Estimated total CPU time goroutines spent performing GC
+               tasks to assist the GC and prevent it from falling behind the
+               application. This metric is an overestimate, and not directly
+               comparable to system CPU time measurements. Compare only with
+               other /cpu/classes metrics.
+
+       /cpu/classes/gc/mark/dedicated:cpu-seconds
+               Estimated total CPU time spent performing GC tasks on processors
+               (as defined by GOMAXPROCS) dedicated to those tasks. This metric
+               is an overestimate, and not directly comparable to system CPU
+               time measurements. Compare only with other /cpu/classes metrics.
+
+       /cpu/classes/gc/mark/idle:cpu-seconds
+               Estimated total CPU time spent performing GC tasks on spare CPU
+               resources that the Go scheduler could not otherwise find a use
+               for. This should be subtracted from the total GC CPU time to
+               obtain a measure of compulsory GC CPU time. This metric is an
+               overestimate, and not directly comparable to system CPU time
+               measurements. Compare only with other /cpu/classes metrics.
+
+       /cpu/classes/gc/pause:cpu-seconds
+               Estimated total CPU time spent with the application paused by
+               the GC. Even if only one thread is running during the pause,
+               this is computed as GOMAXPROCS times the pause latency because
+               nothing else can be executing. This is the exact sum of samples
+               in /gc/pause:seconds if each sample is multiplied by GOMAXPROCS
+               at the time it is taken. This metric is an overestimate,
+               and not directly comparable to system CPU time measurements.
+               Compare only with other /cpu/classes metrics.
+
+       /cpu/classes/gc/total:cpu-seconds
+               Estimated total CPU time spent performing GC tasks. This metric
+               is an overestimate, and not directly comparable to system CPU
+               time measurements. Compare only with other /cpu/classes metrics.
+               Sum of all metrics in /cpu/classes/gc.
+
+       /cpu/classes/idle:cpu-seconds
+               Estimated total available CPU time not spent executing
+               any Go or Go runtime code. In other words, the part of
+               /cpu/classes/total:cpu-seconds that was unused. This metric is
+               an overestimate, and not directly comparable to system CPU time
+               measurements. Compare only with other /cpu/classes metrics.
+
+       /cpu/classes/scavenge/assist:cpu-seconds
+               Estimated total CPU time spent returning unused memory to the
+               underlying platform in response eagerly in response to memory
+               pressure. This metric is an overestimate, and not directly
+               comparable to system CPU time measurements. Compare only with
+               other /cpu/classes metrics.
+
+       /cpu/classes/scavenge/background:cpu-seconds
+               Estimated total CPU time spent performing background tasks to
+               return unused memory to the underlying platform. This metric is
+               an overestimate, and not directly comparable to system CPU time
+               measurements. Compare only with other /cpu/classes metrics.
+
+       /cpu/classes/scavenge/total:cpu-seconds
+               Estimated total CPU time spent performing tasks that return
+               unused memory to the underlying platform. This metric is an
+               overestimate, and not directly comparable to system CPU time
+               measurements. Compare only with other /cpu/classes metrics.
+               Sum of all metrics in /cpu/classes/scavenge.
+
+       /cpu/classes/total:cpu-seconds
+               Estimated total available CPU time for user Go code or the Go
+               runtime, as defined by GOMAXPROCS. In other words, GOMAXPROCS
+               integrated over the wall-clock duration this process has been
+               executing for. This metric is an overestimate, and not directly
+               comparable to system CPU time measurements. Compare only with
+               other /cpu/classes metrics. Sum of all metrics in /cpu/classes.
+
+       /cpu/classes/user:cpu-seconds
+               Estimated total CPU time spent running user Go code. This may
+               also include some small amount of time spent in the Go runtime.
+               This metric is an overestimate, and not directly comparable
+               to system CPU time measurements. Compare only with other
+               /cpu/classes metrics.
+
        /gc/cycles/automatic:gc-cycles
                Count of completed GC cycles generated by the Go runtime.
 
@@ -60,47 +145,189 @@ Below is the full list of supported metrics, ordered lexicographically.
        /gc/cycles/total:gc-cycles
                Count of all completed GC cycles.
 
+       /gc/gogc:percent
+               Heap size target percentage configured by the user, otherwise
+               100. This value is set by the GOGC environment variable, and the
+               runtime/debug.SetGCPercent function.
+
+       /gc/gomemlimit:bytes
+               Go runtime memory limit configured by the user, otherwise
+               math.MaxInt64. This value is set by the GOMEMLIMIT environment
+               variable, and the runtime/debug.SetMemoryLimit function.
+
        /gc/heap/allocs-by-size:bytes
                Distribution of heap allocations by approximate size.
-               Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects,
+               Bucket counts increase monotonically. Note that this does not
+               include tiny objects as defined by /gc/heap/tiny/allocs:objects,
                only tiny blocks.
 
        /gc/heap/allocs:bytes
-               Cumulative sum of memory allocated to the heap by the application.
+               Cumulative sum of memory allocated to the heap by the
+               application.
 
        /gc/heap/allocs:objects
-               Cumulative count of heap allocations triggered by the application.
-               Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects,
-               only tiny blocks.
+               Cumulative count of heap allocations triggered by the
+               application. Note that this does not include tiny objects as
+               defined by /gc/heap/tiny/allocs:objects, only tiny blocks.
 
        /gc/heap/frees-by-size:bytes
                Distribution of freed heap allocations by approximate size.
-               Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects,
+               Bucket counts increase monotonically. Note that this does not
+               include tiny objects as defined by /gc/heap/tiny/allocs:objects,
                only tiny blocks.
 
        /gc/heap/frees:bytes
                Cumulative sum of heap memory freed by the garbage collector.
 
        /gc/heap/frees:objects
-               Cumulative count of heap allocations whose storage was freed by the garbage collector.
-               Note that this does not include tiny objects as defined by /gc/heap/tiny/allocs:objects,
-               only tiny blocks.
+               Cumulative count of heap allocations whose storage was freed
+               by the garbage collector. Note that this does not include tiny
+               objects as defined by /gc/heap/tiny/allocs:objects, only tiny
+               blocks.
 
        /gc/heap/goal:bytes
                Heap size target for the end of the GC cycle.
 
+       /gc/heap/live:bytes
+               Heap memory occupied by live objects that were marked by the
+               previous GC.
+
        /gc/heap/objects:objects
                Number of objects, live or unswept, occupying heap memory.
 
        /gc/heap/tiny/allocs:objects
                Count of small allocations that are packed together into blocks.
                These allocations are counted separately from other allocations
-               because each individual allocation is not tracked by the runtime,
-               only their block. Each block is already accounted for in
-               allocs-by-size and frees-by-size.
+               because each individual allocation is not tracked by the
+               runtime, only their block. Each block is already accounted for
+               in allocs-by-size and frees-by-size.
+
+       /gc/limiter/last-enabled:gc-cycle
+               GC cycle the last time the GC CPU limiter was enabled.
+               This metric is useful for diagnosing the root cause of an
+               out-of-memory error, because the limiter trades memory for CPU
+               time when the GC's CPU time gets too high. This is most likely
+               to occur with use of SetMemoryLimit. The first GC cycle is cycle
+               1, so a value of 0 indicates that it was never enabled.
 
        /gc/pauses:seconds
-               Distribution individual GC-related stop-the-world pause latencies.
+               Distribution of individual GC-related stop-the-world pause
+               latencies. Bucket counts increase monotonically.
+
+       /gc/scan/globals:bytes
+               The total amount of global variable space that is scannable.
+
+       /gc/scan/heap:bytes
+               The total amount of heap space that is scannable.
+
+       /gc/scan/stack:bytes
+               The number of bytes of stack that were scanned last GC cycle.
+
+       /gc/scan/total:bytes
+               The total amount space that is scannable. Sum of all metrics in
+               /gc/scan.
+
+       /gc/stack/starting-size:bytes
+               The stack size of new goroutines.
+
+       /godebug/non-default-behavior/execerrdot:events
+               The number of non-default behaviors executed by the os/exec
+               package due to a non-default GODEBUG=execerrdot=... setting.
+
+       /godebug/non-default-behavior/gocachehash:events
+               The number of non-default behaviors executed by the cmd/go
+               package due to a non-default GODEBUG=gocachehash=... setting.
+
+       /godebug/non-default-behavior/gocachetest:events
+               The number of non-default behaviors executed by the cmd/go
+               package due to a non-default GODEBUG=gocachetest=... setting.
+
+       /godebug/non-default-behavior/gocacheverify:events
+               The number of non-default behaviors executed by the cmd/go
+               package due to a non-default GODEBUG=gocacheverify=... setting.
+
+       /godebug/non-default-behavior/gotypesalias:events
+               The number of non-default behaviors executed by the go/types
+               package due to a non-default GODEBUG=gotypesalias=... setting.
+
+       /godebug/non-default-behavior/http2client:events
+               The number of non-default behaviors executed by the net/http
+               package due to a non-default GODEBUG=http2client=... setting.
+
+       /godebug/non-default-behavior/http2server:events
+               The number of non-default behaviors executed by the net/http
+               package due to a non-default GODEBUG=http2server=... setting.
+
+       /godebug/non-default-behavior/httplaxcontentlength:events
+               The number of non-default behaviors executed by the net/http
+               package due to a non-default GODEBUG=httplaxcontentlength=...
+               setting.
+
+       /godebug/non-default-behavior/httpmuxgo121:events
+               The number of non-default behaviors executed by the net/http
+               package due to a non-default GODEBUG=httpmuxgo121=... setting.
+
+       /godebug/non-default-behavior/installgoroot:events
+               The number of non-default behaviors executed by the go/build
+               package due to a non-default GODEBUG=installgoroot=... setting.
+
+       /godebug/non-default-behavior/jstmpllitinterp:events
+               The number of non-default behaviors executed by
+               the html/template package due to a non-default
+               GODEBUG=jstmpllitinterp=... setting.
+
+       /godebug/non-default-behavior/multipartmaxheaders:events
+               The number of non-default behaviors executed by
+               the mime/multipart package due to a non-default
+               GODEBUG=multipartmaxheaders=... setting.
+
+       /godebug/non-default-behavior/multipartmaxparts:events
+               The number of non-default behaviors executed by
+               the mime/multipart package due to a non-default
+               GODEBUG=multipartmaxparts=... setting.
+
+       /godebug/non-default-behavior/multipathtcp:events
+               The number of non-default behaviors executed by the net package
+               due to a non-default GODEBUG=multipathtcp=... setting.
+
+       /godebug/non-default-behavior/panicnil:events
+               The number of non-default behaviors executed by the runtime
+               package due to a non-default GODEBUG=panicnil=... setting.
+
+       /godebug/non-default-behavior/randautoseed:events
+               The number of non-default behaviors executed by the math/rand
+               package due to a non-default GODEBUG=randautoseed=... setting.
+
+       /godebug/non-default-behavior/tarinsecurepath:events
+               The number of non-default behaviors executed by the archive/tar
+               package due to a non-default GODEBUG=tarinsecurepath=...
+               setting.
+
+       /godebug/non-default-behavior/tls10server:events
+               The number of non-default behaviors executed by the crypto/tls
+               package due to a non-default GODEBUG=tls10server=... setting.
+
+       /godebug/non-default-behavior/tlsmaxrsasize:events
+               The number of non-default behaviors executed by the crypto/tls
+               package due to a non-default GODEBUG=tlsmaxrsasize=... setting.
+
+       /godebug/non-default-behavior/tlsrsakex:events
+               The number of non-default behaviors executed by the crypto/tls
+               package due to a non-default GODEBUG=tlsrsakex=... setting.
+
+       /godebug/non-default-behavior/x509sha1:events
+               The number of non-default behaviors executed by the crypto/x509
+               package due to a non-default GODEBUG=x509sha1=... setting.
+
+       /godebug/non-default-behavior/x509usefallbackroots:events
+               The number of non-default behaviors executed by the crypto/x509
+               package due to a non-default GODEBUG=x509usefallbackroots=...
+               setting.
+
+       /godebug/non-default-behavior/zipinsecurepath:events
+               The number of non-default behaviors executed by the archive/zip
+               package due to a non-default GODEBUG=zipinsecurepath=...
+               setting.
 
        /memory/classes/heap/free:bytes
                Memory that is completely free and eligible to be returned to
@@ -109,50 +336,57 @@ Below is the full list of supported metrics, ordered lexicographically.
                physical memory.
 
        /memory/classes/heap/objects:bytes
-               Memory occupied by live objects and dead objects that have
-               not yet been marked free by the garbage collector.
+               Memory occupied by live objects and dead objects that have not
+               yet been marked free by the garbage collector.
 
        /memory/classes/heap/released:bytes
-               Memory that is completely free and has been returned to
-               the underlying system. This metric is the runtime's estimate of
-               free address space that is still mapped into the process, but
-               is not backed by physical memory.
+               Memory that is completely free and has been returned to the
+               underlying system. This metric is the runtime's estimate of free
+               address space that is still mapped into the process, but is not
+               backed by physical memory.
 
        /memory/classes/heap/stacks:bytes
-               Memory allocated from the heap that is reserved for stack
-               space, whether or not it is currently in-use.
+               Memory allocated from the heap that is reserved for stack space,
+               whether or not it is currently in-use. Currently, this
+               represents all stack memory for goroutines. It also includes all
+               OS thread stacks in non-cgo programs. Note that stacks may be
+               allocated differently in the future, and this may change.
 
        /memory/classes/heap/unused:bytes
                Memory that is reserved for heap objects but is not currently
                used to hold heap objects.
 
        /memory/classes/metadata/mcache/free:bytes
-               Memory that is reserved for runtime mcache structures, but
-               not in-use.
+               Memory that is reserved for runtime mcache structures, but not
+               in-use.
 
        /memory/classes/metadata/mcache/inuse:bytes
-               Memory that is occupied by runtime mcache structures that
-               are currently being used.
+               Memory that is occupied by runtime mcache structures that are
+               currently being used.
 
        /memory/classes/metadata/mspan/free:bytes
-               Memory that is reserved for runtime mspan structures, but
-               not in-use.
+               Memory that is reserved for runtime mspan structures, but not
+               in-use.
 
        /memory/classes/metadata/mspan/inuse:bytes
                Memory that is occupied by runtime mspan structures that are
                currently being used.
 
        /memory/classes/metadata/other:bytes
-               Memory that is reserved for or used to hold runtime
-               metadata.
+               Memory that is reserved for or used to hold runtime metadata.
 
        /memory/classes/os-stacks:bytes
                Stack memory allocated by the underlying operating system.
+               In non-cgo programs this metric is currently zero. This may
+               change in the future.In cgo programs this metric includes
+               OS thread stacks allocated directly from the OS. Currently,
+               this only accounts for one stack in c-shared and c-archive build
+               modes, and other sources of stacks from the OS are not measured.
+               This too may change in the future.
 
        /memory/classes/other:bytes
-               Memory used by execution trace buffers, structures for
-               debugging the runtime, finalizer and profiler specials, and
-               more.
+               Memory used by execution trace buffers, structures for debugging
+               the runtime, finalizer and profiler specials, and more.
 
        /memory/classes/profiling/buckets:bytes
                Memory that is used by the stack trace hash map used for
@@ -161,14 +395,27 @@ Below is the full list of supported metrics, ordered lexicographically.
        /memory/classes/total:bytes
                All memory mapped by the Go runtime into the current process
                as read-write. Note that this does not include memory mapped
-               by code called via cgo or via the syscall package.
-               Sum of all metrics in /memory/classes.
+               by code called via cgo or via the syscall package. Sum of all
+               metrics in /memory/classes.
+
+       /sched/gomaxprocs:threads
+               The current runtime.GOMAXPROCS setting, or the number of
+               operating system threads that can execute user-level Go code
+               simultaneously.
 
        /sched/goroutines:goroutines
                Count of live goroutines.
 
        /sched/latencies:seconds
                Distribution of the time goroutines have spent in the scheduler
-               in a runnable state before actually running.
+               in a runnable state before actually running. Bucket counts
+               increase monotonically.
+
+       /sync/mutex/wait/total:seconds
+               Approximate cumulative time goroutines have spent blocked
+               on a sync.Mutex or sync.RWMutex. This metric is useful for
+               identifying global changes in lock contention. Collect a mutex
+               or block profile using the runtime/pprof package for more
+               detailed contention data.
 */
 package metrics