mirror of
https://github.com/datarhei/core.git
synced 2025-12-24 13:07:56 +08:00
Add memory stats about self
This commit is contained in:
@@ -8,21 +8,35 @@ import (
|
||||
)
|
||||
|
||||
type selfCollector struct {
|
||||
allocDescr *metric.Description
|
||||
recycleDescr *metric.Description
|
||||
dumpDescr *metric.Description
|
||||
defaultSizeDescr *metric.Description
|
||||
maxSizeDescr *metric.Description
|
||||
bufferAllocDescr *metric.Description
|
||||
bufferRecycleDescr *metric.Description
|
||||
bufferDumpDescr *metric.Description
|
||||
bufferDefaultSizeDescr *metric.Description
|
||||
bufferMaxSizeDescr *metric.Description
|
||||
|
||||
heapAllocDescr *metric.Description
|
||||
totalAllocDescr *metric.Description
|
||||
heapSysDescr *metric.Description
|
||||
heapIdleDescr *metric.Description
|
||||
heapInuseDescr *metric.Description
|
||||
heapObjectsDescr *metric.Description
|
||||
}
|
||||
|
||||
func NewSelfCollector() metric.Collector {
|
||||
c := &selfCollector{}
|
||||
|
||||
c.allocDescr = metric.NewDesc("bufferpool_alloc", "Number of buffer allocations", nil)
|
||||
c.recycleDescr = metric.NewDesc("bufferpool_recycle", "Number of buffer recycles", nil)
|
||||
c.dumpDescr = metric.NewDesc("bufferpool_dump", "Number of buffer dumps", nil)
|
||||
c.defaultSizeDescr = metric.NewDesc("bufferpool_default_size", "Default buffer size", nil)
|
||||
c.maxSizeDescr = metric.NewDesc("bufferpool_max_size", "Max. buffer size for recycling", nil)
|
||||
c.bufferAllocDescr = metric.NewDesc("self_bufferpool_alloc", "Number of buffer allocations", nil)
|
||||
c.bufferRecycleDescr = metric.NewDesc("self_bufferpool_recycle", "Number of buffer recycles", nil)
|
||||
c.bufferDumpDescr = metric.NewDesc("self_bufferpool_dump", "Number of buffer dumps", nil)
|
||||
c.bufferDefaultSizeDescr = metric.NewDesc("self_bufferpool_default_size", "Default buffer size", nil)
|
||||
c.bufferMaxSizeDescr = metric.NewDesc("self_bufferpool_max_size", "Max. buffer size for recycling", nil)
|
||||
|
||||
c.heapAllocDescr = metric.NewDesc("self_mem_heap_alloc_bytes", "Number of bytes allocated on the heap", nil)
|
||||
c.totalAllocDescr = metric.NewDesc("self_mem_total_alloc_bytes", "Number of bytes allocated since start", nil)
|
||||
c.heapSysDescr = metric.NewDesc("self_mem_heap_sys_bytes", "Number of bytes obtained from OS", nil)
|
||||
c.heapIdleDescr = metric.NewDesc("self_mem_heap_idle_bytes", "Number of unused bytes", nil)
|
||||
c.heapInuseDescr = metric.NewDesc("self_mem_heap_inuse_bytes", "Number of used bytes", nil)
|
||||
c.heapObjectsDescr = metric.NewDesc("self_mem_heap_objects", "Number of objects in heap", nil)
|
||||
|
||||
return c
|
||||
}
|
||||
@@ -35,29 +49,40 @@ func (c *selfCollector) Prefix() string {
|
||||
|
||||
func (c *selfCollector) Describe() []*metric.Description {
|
||||
return []*metric.Description{
|
||||
c.allocDescr,
|
||||
c.recycleDescr,
|
||||
c.dumpDescr,
|
||||
c.defaultSizeDescr,
|
||||
c.maxSizeDescr,
|
||||
c.bufferAllocDescr,
|
||||
c.bufferRecycleDescr,
|
||||
c.bufferDumpDescr,
|
||||
c.bufferDefaultSizeDescr,
|
||||
c.bufferMaxSizeDescr,
|
||||
c.heapAllocDescr,
|
||||
c.totalAllocDescr,
|
||||
c.heapSysDescr,
|
||||
c.heapIdleDescr,
|
||||
c.heapInuseDescr,
|
||||
c.heapObjectsDescr,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *selfCollector) Collect() metric.Metrics {
|
||||
stats := mem.Stats()
|
||||
bufferstats := mem.Stats()
|
||||
|
||||
metrics := metric.NewMetrics()
|
||||
|
||||
metrics.Add(metric.NewValue(c.allocDescr, float64(stats.Alloc)))
|
||||
metrics.Add(metric.NewValue(c.recycleDescr, float64(stats.Recycle)))
|
||||
metrics.Add(metric.NewValue(c.dumpDescr, float64(stats.Dump)))
|
||||
metrics.Add(metric.NewValue(c.defaultSizeDescr, float64(stats.DefaultSize)))
|
||||
metrics.Add(metric.NewValue(c.maxSizeDescr, float64(stats.MaxSize)))
|
||||
metrics.Add(metric.NewValue(c.bufferAllocDescr, float64(bufferstats.Alloc)))
|
||||
metrics.Add(metric.NewValue(c.bufferRecycleDescr, float64(bufferstats.Recycle)))
|
||||
metrics.Add(metric.NewValue(c.bufferDumpDescr, float64(bufferstats.Dump)))
|
||||
metrics.Add(metric.NewValue(c.bufferDefaultSizeDescr, float64(bufferstats.DefaultSize)))
|
||||
metrics.Add(metric.NewValue(c.bufferMaxSizeDescr, float64(bufferstats.MaxSize)))
|
||||
|
||||
memstats := runtime.MemStats{}
|
||||
runtime.ReadMemStats(&memstats)
|
||||
|
||||
//metrics.Add(metric.NewValue())
|
||||
metrics.Add(metric.NewValue(c.heapAllocDescr, float64(memstats.HeapAlloc)))
|
||||
metrics.Add(metric.NewValue(c.totalAllocDescr, float64(memstats.TotalAlloc)))
|
||||
metrics.Add(metric.NewValue(c.heapSysDescr, float64(memstats.HeapSys)))
|
||||
metrics.Add(metric.NewValue(c.heapIdleDescr, float64(memstats.HeapIdle)))
|
||||
metrics.Add(metric.NewValue(c.heapInuseDescr, float64(memstats.HeapInuse)))
|
||||
metrics.Add(metric.NewValue(c.heapObjectsDescr, float64(memstats.Mallocs-memstats.Frees)))
|
||||
|
||||
return metrics
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user