mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime/metrics: add /gc/heap/live:bytes
For #56857 Change-Id: I0622af974783ab435e91b9fb3c1ba43f256ee4ac Reviewed-on: https://go-review.googlesource.com/c/go/+/497315 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Michael Knyszek <mknyszek@google.com> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Felix Geisendörfer <felix.geisendoerfer@datadoghq.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
8366497625
commit
ef2bb813c8
4 changed files with 26 additions and 0 deletions
|
|
@ -248,6 +248,13 @@ func initMetrics() {
|
||||||
out.scalar = in.sysStats.heapGoal
|
out.scalar = in.sysStats.heapGoal
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"/gc/heap/live:bytes": {
|
||||||
|
deps: makeStatDepSet(heapStatsDep),
|
||||||
|
compute: func(in *statAggregate, out *metricValue) {
|
||||||
|
out.kind = metricKindUint64
|
||||||
|
out.scalar = gcController.heapMarked
|
||||||
|
},
|
||||||
|
},
|
||||||
"/gc/heap/objects:objects": {
|
"/gc/heap/objects:objects": {
|
||||||
deps: makeStatDepSet(heapStatsDep),
|
deps: makeStatDepSet(heapStatsDep),
|
||||||
compute: func(in *statAggregate, out *metricValue) {
|
compute: func(in *statAggregate, out *metricValue) {
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,11 @@ var allDesc = []Description{
|
||||||
Description: "Heap size target for the end of the GC cycle.",
|
Description: "Heap size target for the end of the GC cycle.",
|
||||||
Kind: KindUint64,
|
Kind: KindUint64,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "/gc/heap/live:bytes",
|
||||||
|
Description: "Heap memory occupied by live objects that were marked by the previous GC.",
|
||||||
|
Kind: KindUint64,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "/gc/heap/objects:objects",
|
Name: "/gc/heap/objects:objects",
|
||||||
Description: "Number of objects, live or unswept, occupying heap memory.",
|
Description: "Number of objects, live or unswept, occupying heap memory.",
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,10 @@ Below is the full list of supported metrics, ordered lexicographically.
|
||||||
/gc/heap/goal:bytes
|
/gc/heap/goal:bytes
|
||||||
Heap size target for the end of the GC cycle.
|
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
|
/gc/heap/objects:objects
|
||||||
Number of objects, live or unswept, occupying heap memory.
|
Number of objects, live or unswept, occupying heap memory.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,9 @@ func prepareAllMetricsSamples() (map[string]metrics.Description, []metrics.Sampl
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadMetrics(t *testing.T) {
|
func TestReadMetrics(t *testing.T) {
|
||||||
|
// Run a GC cycle to get some of the stats to be non-zero.
|
||||||
|
runtime.GC()
|
||||||
|
|
||||||
// Tests whether readMetrics produces values aligning
|
// Tests whether readMetrics produces values aligning
|
||||||
// with ReadMemStats while the world is stopped.
|
// with ReadMemStats while the world is stopped.
|
||||||
var mstats runtime.MemStats
|
var mstats runtime.MemStats
|
||||||
|
|
@ -128,6 +131,13 @@ func TestReadMetrics(t *testing.T) {
|
||||||
mallocs = samples[i].Value.Uint64()
|
mallocs = samples[i].Value.Uint64()
|
||||||
case "/gc/heap/frees:objects":
|
case "/gc/heap/frees:objects":
|
||||||
frees = samples[i].Value.Uint64()
|
frees = samples[i].Value.Uint64()
|
||||||
|
case "/gc/heap/live:bytes":
|
||||||
|
if live := samples[i].Value.Uint64(); live > mstats.HeapAlloc {
|
||||||
|
t.Errorf("live bytes: %d > heap alloc: %d", live, mstats.HeapAlloc)
|
||||||
|
} else if live == 0 {
|
||||||
|
// Might happen if we don't call runtime.GC() above.
|
||||||
|
t.Error("live bytes is 0")
|
||||||
|
}
|
||||||
case "/gc/heap/objects:objects":
|
case "/gc/heap/objects:objects":
|
||||||
checkUint64(t, name, samples[i].Value.Uint64(), mstats.HeapObjects)
|
checkUint64(t, name, samples[i].Value.Uint64(), mstats.HeapObjects)
|
||||||
case "/gc/heap/goal:bytes":
|
case "/gc/heap/goal:bytes":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue