MCPcopy
hub / github.com/prometheus/client_golang / memStatsFromRM

Function memStatsFromRM

prometheus/go_collector_latest.go:414–459  ·  view source on GitHub ↗
(ms *runtime.MemStats, rm map[string]*metrics.Sample)

Source from the content-addressed store, hash-verified

412}
413
414func memStatsFromRM(ms *runtime.MemStats, rm map[string]*metrics.Sample) {
415 lookupOrZero := func(name string) uint64 {
416 if s, ok := rm[name]; ok {
417 return s.Value.Uint64()
418 }
419 return 0
420 }
421
422 // Currently, MemStats adds tiny alloc count to both Mallocs AND Frees.
423 // The reason for this is because MemStats couldn't be extended at the time
424 // but there was a desire to have Mallocs at least be a little more representative,
425 // while having Mallocs - Frees still represent a live object count.
426 // Unfortunately, MemStats doesn't actually export a large allocation count,
427 // so it's impossible to pull this number out directly.
428 tinyAllocs := lookupOrZero(goGCHeapTinyAllocsObjects)
429 ms.Mallocs = lookupOrZero(goGCHeapAllocsObjects) + tinyAllocs
430 ms.Frees = lookupOrZero(goGCHeapFreesObjects) + tinyAllocs
431
432 ms.TotalAlloc = lookupOrZero(goGCHeapAllocsBytes)
433 ms.Sys = lookupOrZero(goMemoryClassesTotalBytes)
434 ms.Lookups = 0 // Already always zero.
435 ms.HeapAlloc = lookupOrZero(goMemoryClassesHeapObjectsBytes)
436 ms.Alloc = ms.HeapAlloc
437 ms.HeapInuse = ms.HeapAlloc + lookupOrZero(goMemoryClassesHeapUnusedBytes)
438 ms.HeapReleased = lookupOrZero(goMemoryClassesHeapReleasedBytes)
439 ms.HeapIdle = ms.HeapReleased + lookupOrZero(goMemoryClassesHeapFreeBytes)
440 ms.HeapSys = ms.HeapInuse + ms.HeapIdle
441 ms.HeapObjects = lookupOrZero(goGCHeapObjects)
442 ms.StackInuse = lookupOrZero(goMemoryClassesHeapStacksBytes)
443 ms.StackSys = ms.StackInuse + lookupOrZero(goMemoryClassesOSStacksBytes)
444 ms.MSpanInuse = lookupOrZero(goMemoryClassesMetadataMSpanInuseBytes)
445 ms.MSpanSys = ms.MSpanInuse + lookupOrZero(goMemoryClassesMetadataMSPanFreeBytes)
446 ms.MCacheInuse = lookupOrZero(goMemoryClassesMetadataMCacheInuseBytes)
447 ms.MCacheSys = ms.MCacheInuse + lookupOrZero(goMemoryClassesMetadataMCacheFreeBytes)
448 ms.BuckHashSys = lookupOrZero(goMemoryClassesProfilingBucketsBytes)
449 ms.GCSys = lookupOrZero(goMemoryClassesMetadataOtherBytes)
450 ms.OtherSys = lookupOrZero(goMemoryClassesOtherBytes)
451 ms.NextGC = lookupOrZero(goGCHeapGoalBytes)
452
453 // N.B. GCCPUFraction is intentionally omitted. This metric is not useful,
454 // and often misleading due to the fact that it's an average over the lifetime
455 // of the process.
456 // See https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034
457 // for more details.
458 ms.GCCPUFraction = 0
459}
460
461// batchHistogram is a mutable histogram that is updated
462// in batches.

Callers 2

CollectMethod · 0.85
TestMemStatsEquivalenceFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestMemStatsEquivalenceFunction · 0.68