1
0
mirror of https://github.com/golang/go synced 2024-11-17 12:44:49 -07:00

runtime/metrics: add the number of Go-to-C calls

For #47216.

Change-Id: I1c2cd518e6ff510cc3ac8d8f72fd52eadcabc16c
Reviewed-on: https://go-review.googlesource.com/c/go/+/404306
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Michael Anthony Knyszek 2022-05-05 16:54:44 +00:00 committed by Michael Knyszek
parent 364ced6255
commit 9bd6e2776f
4 changed files with 17 additions and 0 deletions

View File

@ -65,6 +65,12 @@ func initMetrics() {
timeHistBuckets = timeHistogramMetricsBuckets()
metrics = map[string]metricData{
"/cgo/go-to-c-calls:calls": {
compute: func(_ *statAggregate, out *metricValue) {
out.kind = metricKindUint64
out.scalar = uint64(NumCgoCall())
},
},
"/gc/cycles/automatic:gc-cycles": {
deps: makeStatDepSet(sysStatsDep),
compute: func(in *statAggregate, out *metricValue) {

View File

@ -51,6 +51,12 @@ type Description struct {
// The English language descriptions below must be kept in sync with the
// descriptions of each metric in doc.go.
var allDesc = []Description{
{
Name: "/cgo/go-to-c-calls:calls",
Description: "Count of calls made from Go to C by the current process.",
Kind: KindUint64,
Cumulative: true,
},
{
Name: "/gc/cycles/automatic:gc-cycles",
Description: "Count of completed GC cycles generated by the Go runtime.",

View File

@ -51,6 +51,9 @@ 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.
/gc/cycles/automatic:gc-cycles
Count of completed GC cycles generated by the Go runtime.

View File

@ -46,6 +46,8 @@ func TestReadMetrics(t *testing.T) {
var mallocs, frees uint64
for i := range samples {
switch name := samples[i].Name; name {
case "/cgo/go-to-c-calls:calls":
checkUint64(t, name, samples[i].Value.Uint64(), uint64(runtime.NumCgoCall()))
case "/memory/classes/heap/free:bytes":
checkUint64(t, name, samples[i].Value.Uint64(), mstats.HeapIdle-mstats.HeapReleased)
case "/memory/classes/heap/released:bytes":