diff --git a/.gitignore b/.gitignore index ea6551f2..4d34eb8d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,8 @@ **/logs # for test purpose -adhoc +**/adhoc +**/testdata # gitlab ci .cache diff --git a/core/prof/runtime.go b/core/prof/runtime.go new file mode 100644 index 00000000..085440ea --- /dev/null +++ b/core/prof/runtime.go @@ -0,0 +1,30 @@ +package prof + +import ( + "fmt" + "runtime" + "time" +) + +const ( + defaultInterval = time.Second * 5 + mega = 1024 * 1024 +) + +func DisplayStats(interval ...time.Duration) { + duration := defaultInterval + for _, val := range interval { + duration = val + } + + go func() { + ticker := time.NewTicker(duration) + defer ticker.Stop() + for range ticker.C { + var m runtime.MemStats + runtime.ReadMemStats(&m) + fmt.Printf("Goroutines: %d, Alloc: %vm, TotalAlloc: %vm, Sys: %vm, NumGC: %v\n", + runtime.NumGoroutine(), m.Alloc/mega, m.TotalAlloc/mega, m.Sys/mega, m.NumGC) + } + }() +}