* go-metrics: fork library and introduce ResettingTimer and InfluxDB reporter. * vendor: change nonsense/go-metrics to ethersphere/go-metrics * go-metrics: add tests. move ResettingTimer logic from reporter to type. * all, metrics: pull in metrics package in go-ethereum * metrics/test: make sure metrics are enabled for tests * metrics: apply gosimple rules * metrics/exp, internal/debug: init expvar endpoint when starting pprof server * internal/debug: tiny comment formatting fix
		
			
				
	
	
		
			286 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			286 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Memory usage
 | |
| ============
 | |
| 
 | |
| (Highly unscientific.)
 | |
| 
 | |
| Command used to gather static memory usage:
 | |
| 
 | |
| ```sh
 | |
| grep ^Vm "/proc/$(ps fax | grep [m]etrics-bench | awk '{print $1}')/status"
 | |
| ```
 | |
| 
 | |
| Program used to gather baseline memory usage:
 | |
| 
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import "time"
 | |
| 
 | |
| func main() {
 | |
| 	time.Sleep(600e9)
 | |
| }
 | |
| ```
 | |
| 
 | |
| Baseline
 | |
| --------
 | |
| 
 | |
| ```
 | |
| VmPeak:    42604 kB
 | |
| VmSize:    42604 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:      1120 kB
 | |
| VmRSS:      1120 kB
 | |
| VmData:    35460 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1020 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        36 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| Program used to gather metric memory usage (with other metrics being similar):
 | |
| 
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"metrics"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	fmt.Sprintf("foo")
 | |
| 	metrics.NewRegistry()
 | |
| 	time.Sleep(600e9)
 | |
| }
 | |
| ```
 | |
| 
 | |
| 1000 counters registered
 | |
| ------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    44016 kB
 | |
| VmSize:    44016 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:      1928 kB
 | |
| VmRSS:      1928 kB
 | |
| VmData:    36868 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1024 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        40 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **1.412 kB virtual, TODO 0.808 kB resident per counter.**
 | |
| 
 | |
| 100000 counters registered
 | |
| --------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    55024 kB
 | |
| VmSize:    55024 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:     12440 kB
 | |
| VmRSS:     12440 kB
 | |
| VmData:    47876 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1024 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        64 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **0.1242 kB virtual, 0.1132 kB resident per counter.**
 | |
| 
 | |
| 1000 gauges registered
 | |
| ----------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    44012 kB
 | |
| VmSize:    44012 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:      1928 kB
 | |
| VmRSS:      1928 kB
 | |
| VmData:    36868 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1020 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        40 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **1.408 kB virtual, 0.808 kB resident per counter.**
 | |
| 
 | |
| 100000 gauges registered
 | |
| ------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    55020 kB
 | |
| VmSize:    55020 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:     12432 kB
 | |
| VmRSS:     12432 kB
 | |
| VmData:    47876 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1020 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        60 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **0.12416 kB virtual, 0.11312 resident per gauge.**
 | |
| 
 | |
| 1000 histograms with a uniform sample size of 1028
 | |
| --------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    72272 kB
 | |
| VmSize:    72272 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:     16204 kB
 | |
| VmRSS:     16204 kB
 | |
| VmData:    65100 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        80 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **29.668 kB virtual, TODO 15.084 resident per histogram.**
 | |
| 
 | |
| 10000 histograms with a uniform sample size of 1028
 | |
| ---------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:   256912 kB
 | |
| VmSize:   256912 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:    146204 kB
 | |
| VmRSS:    146204 kB
 | |
| VmData:   249740 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:       448 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **21.4308 kB virtual, 14.5084 kB resident per histogram.**
 | |
| 
 | |
| 50000 histograms with a uniform sample size of 1028
 | |
| ---------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:   908112 kB
 | |
| VmSize:   908112 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:    645832 kB
 | |
| VmRSS:    645588 kB
 | |
| VmData:   900940 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:      1716 kB
 | |
| VmSwap:     1544 kB
 | |
| ```
 | |
| 
 | |
| **17.31016 kB virtual, 12.88936 kB resident per histogram.**
 | |
| 
 | |
| 1000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
 | |
| -------------------------------------------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:    62480 kB
 | |
| VmSize:    62480 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:     11572 kB
 | |
| VmRSS:     11572 kB
 | |
| VmData:    55308 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        64 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **19.876 kB virtual, 10.452 kB resident per histogram.**
 | |
| 
 | |
| 10000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
 | |
| --------------------------------------------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:   153296 kB
 | |
| VmSize:   153296 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:    101176 kB
 | |
| VmRSS:    101176 kB
 | |
| VmData:   146124 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:       240 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **11.0692 kB virtual, 10.0056 kB resident per histogram.**
 | |
| 
 | |
| 50000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015
 | |
| --------------------------------------------------------------------------------------
 | |
| 
 | |
| ```
 | |
| VmPeak:   557264 kB
 | |
| VmSize:   557264 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:    501056 kB
 | |
| VmRSS:    501056 kB
 | |
| VmData:   550092 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1048 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:      1032 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **10.2932 kB virtual, 9.99872 kB resident per histogram.**
 | |
| 
 | |
| 1000 meters
 | |
| -----------
 | |
| 
 | |
| ```
 | |
| VmPeak:    74504 kB
 | |
| VmSize:    74504 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:     24124 kB
 | |
| VmRSS:     24124 kB
 | |
| VmData:    67340 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1040 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:        92 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **31.9 kB virtual, 23.004 kB resident per meter.**
 | |
| 
 | |
| 10000 meters
 | |
| ------------
 | |
| 
 | |
| ```
 | |
| VmPeak:   278920 kB
 | |
| VmSize:   278920 kB
 | |
| VmLck:         0 kB
 | |
| VmHWM:    227300 kB
 | |
| VmRSS:    227300 kB
 | |
| VmData:   271756 kB
 | |
| VmStk:       136 kB
 | |
| VmExe:      1040 kB
 | |
| VmLib:      1848 kB
 | |
| VmPTE:       488 kB
 | |
| VmSwap:        0 kB
 | |
| ```
 | |
| 
 | |
| **23.6316 kB virtual, 22.618 kB resident per meter.**
 |