mirror of
https://github.com/golang/go.git
synced 2025-11-11 06:01:06 +00:00
runtime/metrics: change unit on *-by-size metrics to match bucket unit
This change modifies the *-by-size metrics' units to be based off the bucket's unit (bytes) as opposed to the unit of the counts (objects). This convention is more in-line with distributions in other metrics systems. Change-Id: Id3b68a09f52f0e1ff9f4346f613ae1cbd9f52f73 Reviewed-on: https://go-review.googlesource.com/c/go/+/282352 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> Trust: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
c6513bca5a
commit
32afcc9436
4 changed files with 15 additions and 10 deletions
|
|
@ -86,7 +86,7 @@ func initMetrics() {
|
||||||
out.scalar = in.sysStats.gcCyclesDone
|
out.scalar = in.sysStats.gcCyclesDone
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"/gc/heap/allocs-by-size:objects": {
|
"/gc/heap/allocs-by-size:bytes": {
|
||||||
deps: makeStatDepSet(heapStatsDep),
|
deps: makeStatDepSet(heapStatsDep),
|
||||||
compute: func(in *statAggregate, out *metricValue) {
|
compute: func(in *statAggregate, out *metricValue) {
|
||||||
hist := out.float64HistOrInit(sizeClassBuckets)
|
hist := out.float64HistOrInit(sizeClassBuckets)
|
||||||
|
|
@ -98,7 +98,7 @@ func initMetrics() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"/gc/heap/frees-by-size:objects": {
|
"/gc/heap/frees-by-size:bytes": {
|
||||||
deps: makeStatDepSet(heapStatsDep),
|
deps: makeStatDepSet(heapStatsDep),
|
||||||
compute: func(in *statAggregate, out *metricValue) {
|
compute: func(in *statAggregate, out *metricValue) {
|
||||||
hist := out.float64HistOrInit(sizeClassBuckets)
|
hist := out.float64HistOrInit(sizeClassBuckets)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,11 @@ type Description struct {
|
||||||
// Examples of units might be "seconds", "bytes", "bytes/second", "cpu-seconds",
|
// Examples of units might be "seconds", "bytes", "bytes/second", "cpu-seconds",
|
||||||
// "byte*cpu-seconds", and "bytes/second/second".
|
// "byte*cpu-seconds", and "bytes/second/second".
|
||||||
//
|
//
|
||||||
|
// For histograms, multiple units may apply. For instance, the units of the buckets and
|
||||||
|
// the count. By convention, for histograms, the units of the count are always "samples"
|
||||||
|
// with the type of sample evident by the metric's name, while the unit in the name
|
||||||
|
// specifies the buckets' unit.
|
||||||
|
//
|
||||||
// A complete name might look like "/memory/heap/free:bytes".
|
// A complete name might look like "/memory/heap/free:bytes".
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
|
|
@ -69,12 +74,12 @@ var allDesc = []Description{
|
||||||
Cumulative: true,
|
Cumulative: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "/gc/heap/allocs-by-size:objects",
|
Name: "/gc/heap/allocs-by-size:bytes",
|
||||||
Description: "Distribution of all objects allocated by approximate size.",
|
Description: "Distribution of all objects allocated by approximate size.",
|
||||||
Kind: KindFloat64Histogram,
|
Kind: KindFloat64Histogram,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "/gc/heap/frees-by-size:objects",
|
Name: "/gc/heap/frees-by-size:bytes",
|
||||||
Description: "Distribution of all objects freed by approximate size.",
|
Description: "Distribution of all objects freed by approximate size.",
|
||||||
Kind: KindFloat64Histogram,
|
Kind: KindFloat64Histogram,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,10 @@ Below is the full list of supported metrics, ordered lexicographically.
|
||||||
/gc/cycles/total:gc-cycles
|
/gc/cycles/total:gc-cycles
|
||||||
Count of all completed GC cycles.
|
Count of all completed GC cycles.
|
||||||
|
|
||||||
/gc/heap/allocs-by-size:objects
|
/gc/heap/allocs-by-size:bytes
|
||||||
Distribution of all objects allocated by approximate size.
|
Distribution of all objects allocated by approximate size.
|
||||||
|
|
||||||
/gc/heap/frees-by-size:objects
|
/gc/heap/frees-by-size:bytes
|
||||||
Distribution of all objects freed by approximate size.
|
Distribution of all objects freed by approximate size.
|
||||||
|
|
||||||
/gc/heap/goal:bytes
|
/gc/heap/goal:bytes
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ func TestReadMetrics(t *testing.T) {
|
||||||
checkUint64(t, name, samples[i].Value.Uint64(), mstats.BuckHashSys)
|
checkUint64(t, name, samples[i].Value.Uint64(), mstats.BuckHashSys)
|
||||||
case "/memory/classes/total:bytes":
|
case "/memory/classes/total:bytes":
|
||||||
checkUint64(t, name, samples[i].Value.Uint64(), mstats.Sys)
|
checkUint64(t, name, samples[i].Value.Uint64(), mstats.Sys)
|
||||||
case "/gc/heap/allocs-by-size:objects":
|
case "/gc/heap/allocs-by-size:bytes":
|
||||||
hist := samples[i].Value.Float64Histogram()
|
hist := samples[i].Value.Float64Histogram()
|
||||||
// Skip size class 0 in BySize, because it's always empty and not represented
|
// Skip size class 0 in BySize, because it's always empty and not represented
|
||||||
// in the histogram.
|
// in the histogram.
|
||||||
|
|
@ -84,7 +84,7 @@ func TestReadMetrics(t *testing.T) {
|
||||||
t.Errorf("histogram counts do not much BySize for class %d: got %d, want %d", i, c, m)
|
t.Errorf("histogram counts do not much BySize for class %d: got %d, want %d", i, c, m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "/gc/heap/frees-by-size:objects":
|
case "/gc/heap/frees-by-size:bytes":
|
||||||
hist := samples[i].Value.Float64Histogram()
|
hist := samples[i].Value.Float64Histogram()
|
||||||
// Skip size class 0 in BySize, because it's always empty and not represented
|
// Skip size class 0 in BySize, because it's always empty and not represented
|
||||||
// in the histogram.
|
// in the histogram.
|
||||||
|
|
@ -161,9 +161,9 @@ func TestReadMetricsConsistency(t *testing.T) {
|
||||||
totalVirtual.got = samples[i].Value.Uint64()
|
totalVirtual.got = samples[i].Value.Uint64()
|
||||||
case "/gc/heap/objects:objects":
|
case "/gc/heap/objects:objects":
|
||||||
objects.total = samples[i].Value.Uint64()
|
objects.total = samples[i].Value.Uint64()
|
||||||
case "/gc/heap/allocs-by-size:objects":
|
case "/gc/heap/allocs-by-size:bytes":
|
||||||
objects.alloc = samples[i].Value.Float64Histogram()
|
objects.alloc = samples[i].Value.Float64Histogram()
|
||||||
case "/gc/heap/frees-by-size:objects":
|
case "/gc/heap/frees-by-size:bytes":
|
||||||
objects.free = samples[i].Value.Float64Histogram()
|
objects.free = samples[i].Value.Float64Histogram()
|
||||||
case "/gc/cycles:gc-cycles":
|
case "/gc/cycles:gc-cycles":
|
||||||
gc.numGC = samples[i].Value.Uint64()
|
gc.numGC = samples[i].Value.Uint64()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue