代码拉取完成,页面将自动刷新
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package goruntime
import (
"runtime"
"time"
"github.com/hyperledger/fabric/common/metrics"
)
type Collector struct {
CgoCalls metrics.Gauge
GoRoutines metrics.Gauge
ThreadsCreated metrics.Gauge
HeapAlloc metrics.Gauge
TotalAlloc metrics.Gauge
Mallocs metrics.Gauge
Frees metrics.Gauge
HeapSys metrics.Gauge
HeapIdle metrics.Gauge
HeapInuse metrics.Gauge
HeapReleased metrics.Gauge
HeapObjects metrics.Gauge
StackInuse metrics.Gauge
StackSys metrics.Gauge
MSpanInuse metrics.Gauge
MSpanSys metrics.Gauge
MCacheInuse metrics.Gauge
MCacheSys metrics.Gauge
BuckHashSys metrics.Gauge
GCSys metrics.Gauge
OtherSys metrics.Gauge
NextGC metrics.Gauge
LastGC metrics.Gauge
PauseTotalNs metrics.Gauge
PauseNs metrics.Gauge
NumGC metrics.Gauge
NumForcedGC metrics.Gauge
}
func NewCollector(p metrics.Provider) *Collector {
return &Collector{
CgoCalls: p.NewGauge(cgoCallsGaugeOpts),
GoRoutines: p.NewGauge(goRoutinesGaugeOpts),
ThreadsCreated: p.NewGauge(threadsCreatedGaugeOpts),
HeapAlloc: p.NewGauge(heapAllocGaugeOpts),
TotalAlloc: p.NewGauge(totalAllocGaugeOpts),
Mallocs: p.NewGauge(mallocsGaugeOpts),
Frees: p.NewGauge(freesGaugeOpts),
HeapSys: p.NewGauge(heapSysGaugeOpts),
HeapIdle: p.NewGauge(heapIdleGaugeOpts),
HeapInuse: p.NewGauge(heapInuseGaugeOpts),
HeapReleased: p.NewGauge(heapReleasedGaugeOpts),
HeapObjects: p.NewGauge(heapObjectsGaugeOpts),
StackInuse: p.NewGauge(stackInuseGaugeOpts),
StackSys: p.NewGauge(stackSysGaugeOpts),
MSpanInuse: p.NewGauge(mSpanInuseGaugeOpts),
MSpanSys: p.NewGauge(mSpanSysGaugeOpts),
MCacheInuse: p.NewGauge(mCacheInuseGaugeOpts),
MCacheSys: p.NewGauge(mCacheSysGaugeOpts),
BuckHashSys: p.NewGauge(buckHashSysGaugeOpts),
GCSys: p.NewGauge(gCSysGaugeOpts),
OtherSys: p.NewGauge(otherSysGaugeOpts),
NextGC: p.NewGauge(nextGCGaugeOpts),
LastGC: p.NewGauge(lastGCGaugeOpts),
PauseTotalNs: p.NewGauge(pauseTotalNsGaugeOpts),
PauseNs: p.NewGauge(pauseNsGaugeOpts),
NumGC: p.NewGauge(numGCGaugeOpts),
NumForcedGC: p.NewGauge(numForcedGCGaugeOpts),
}
}
func (c *Collector) CollectAndPublish(ticks <-chan time.Time) {
for range ticks {
stats := CollectStats()
c.Publish(stats)
}
}
func (c *Collector) Publish(stats Stats) {
c.CgoCalls.Set(float64(stats.CgoCalls))
c.GoRoutines.Set(float64(stats.GoRoutines))
c.ThreadsCreated.Set(float64(stats.ThreadsCreated))
c.HeapAlloc.Set(float64(stats.MemStats.HeapAlloc))
c.TotalAlloc.Set(float64(stats.MemStats.TotalAlloc))
c.Mallocs.Set(float64(stats.MemStats.Mallocs))
c.Frees.Set(float64(stats.MemStats.Frees))
c.HeapSys.Set(float64(stats.MemStats.HeapSys))
c.HeapIdle.Set(float64(stats.MemStats.HeapIdle))
c.HeapInuse.Set(float64(stats.MemStats.HeapInuse))
c.HeapReleased.Set(float64(stats.MemStats.HeapReleased))
c.HeapObjects.Set(float64(stats.MemStats.HeapObjects))
c.StackInuse.Set(float64(stats.MemStats.StackInuse))
c.StackSys.Set(float64(stats.MemStats.StackSys))
c.MSpanInuse.Set(float64(stats.MemStats.MSpanInuse))
c.MSpanSys.Set(float64(stats.MemStats.MSpanSys))
c.MCacheInuse.Set(float64(stats.MemStats.MCacheInuse))
c.MCacheSys.Set(float64(stats.MemStats.MCacheSys))
c.BuckHashSys.Set(float64(stats.MemStats.BuckHashSys))
c.GCSys.Set(float64(stats.MemStats.GCSys))
c.OtherSys.Set(float64(stats.MemStats.OtherSys))
c.NextGC.Set(float64(stats.MemStats.NextGC))
c.LastGC.Set(float64(stats.MemStats.LastGC))
c.PauseTotalNs.Set(float64(stats.MemStats.PauseTotalNs))
c.PauseNs.Set(float64(stats.MemStats.PauseNs[(stats.MemStats.NumGC+255)%256]))
c.NumGC.Set(float64(stats.MemStats.NumGC))
c.NumForcedGC.Set(float64(stats.MemStats.NumForcedGC))
}
type Stats struct {
CgoCalls int64
GoRoutines int
ThreadsCreated int
MemStats runtime.MemStats
}
func CollectStats() Stats {
stats := Stats{
CgoCalls: runtime.NumCgoCall(),
GoRoutines: runtime.NumGoroutine(),
}
stats.ThreadsCreated, _ = runtime.ThreadCreateProfile(nil)
runtime.ReadMemStats(&stats.MemStats)
return stats
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。