Yuriy Vasiyarov 11 лет назад
Родитель
Сommit
3e4bbee5c1
1 измененных файлов с 12 добавлено и 5 удалено
  1. 12 5
      runtime.go

+ 12 - 5
runtime.go

@@ -40,7 +40,10 @@ var (
 		NumGoroutine Gauge
 		ReadMemStats Timer
 	}
-	numGC uint32
+	numGC      uint32
+	numMallocs uint64
+	numFrees   uint64
+	numLookups uint64
 )
 
 // Capture new values for the Go runtime statistics exported in
@@ -77,7 +80,8 @@ func CaptureRuntimeMemStatsOnce(r Registry) {
 	} else {
 		runtimeMetrics.MemStats.EnableGC.Update(0)
 	}
-	runtimeMetrics.MemStats.Frees.Update(int64(memStats.Frees))
+
+	runtimeMetrics.MemStats.Frees.Update(int64(memStats.Frees - numFrees))
 	runtimeMetrics.MemStats.HeapAlloc.Update(int64(memStats.HeapAlloc))
 	runtimeMetrics.MemStats.HeapIdle.Update(int64(memStats.HeapIdle))
 	runtimeMetrics.MemStats.HeapInuse.Update(int64(memStats.HeapInuse))
@@ -85,14 +89,14 @@ func CaptureRuntimeMemStatsOnce(r Registry) {
 	runtimeMetrics.MemStats.HeapReleased.Update(int64(memStats.HeapReleased))
 	runtimeMetrics.MemStats.HeapSys.Update(int64(memStats.HeapSys))
 	runtimeMetrics.MemStats.LastGC.Update(int64(memStats.LastGC))
-	runtimeMetrics.MemStats.Lookups.Update(int64(memStats.Lookups))
-	runtimeMetrics.MemStats.Mallocs.Update(int64(memStats.Mallocs))
+	runtimeMetrics.MemStats.Lookups.Update(int64(memStats.Lookups - numLookups))
+	runtimeMetrics.MemStats.Mallocs.Update(int64(memStats.Mallocs - numMallocs))
 	runtimeMetrics.MemStats.MCacheInuse.Update(int64(memStats.MCacheInuse))
 	runtimeMetrics.MemStats.MCacheSys.Update(int64(memStats.MCacheSys))
 	runtimeMetrics.MemStats.MSpanInuse.Update(int64(memStats.MSpanInuse))
 	runtimeMetrics.MemStats.MSpanSys.Update(int64(memStats.MSpanSys))
 	runtimeMetrics.MemStats.NextGC.Update(int64(memStats.NextGC))
-	runtimeMetrics.MemStats.NumGC.Update(int64(memStats.NumGC))
+	runtimeMetrics.MemStats.NumGC.Update(int64(memStats.NumGC - numGC))
 
 	// <https://code.google.com/p/go/source/browse/src/pkg/runtime/mgc0.c>
 	i := numGC % uint32(len(memStats.PauseNs))
@@ -113,6 +117,9 @@ func CaptureRuntimeMemStatsOnce(r Registry) {
 		}
 	}
 	numGC = memStats.NumGC
+	numMallocs = memStats.Mallocs
+	numFrees = memStats.Frees
+	numLookups = memStats.Lookups
 
 	runtimeMetrics.MemStats.PauseTotalNs.Update(int64(memStats.PauseTotalNs))
 	runtimeMetrics.MemStats.StackInuse.Update(int64(memStats.StackInuse))