浏览代码

Redid memory benchmarks on amd64.

Richard Crowley 14 年之前
父节点
当前提交
61ba05b379
共有 2 个文件被更改,包括 137 次插入101 次删除
  1. 131 99
      README.md
  2. 6 2
      cmd/metrics-bench/metrics-bench.go

+ 131 - 99
README.md

@@ -29,17 +29,17 @@ func main() {
 Baseline:
 
 ```
-VmPeak:	  792544 kB
-VmSize:	  792544 kB
-VmLck:	       0 kB
-VmHWM:	     496 kB
-VmRSS:	     496 kB
-VmData:	  792024 kB
-VmStk:	     136 kB
-VmExe:	     376 kB
-VmLib:	       0 kB
-VmPTE:	      28 kB
-VmSwap:	       0 kB
+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):
@@ -54,10 +54,8 @@ import (
 )
 
 func main() {
-	r := metrics.NewRegistry()
-	for i := 0; i < 1000; i++ {
-		r.RegisterCounter(fmt.Sprintf("%d", i), metrics.NewCounter())
-	}
+	fmt.Sprintf("foo")
+	metrics.NewRegistry()
 	time.Sleep(600e9)
 }
 ```
@@ -65,163 +63,197 @@ func main() {
 1000 counters registered:
 
 ```
-VmPeak:   807740 kB
-VmSize:   807740 kB
+VmPeak:    44016 kB
+VmSize:    44016 kB
 VmLck:         0 kB
-VmHWM:      5896 kB
-VmRSS:      5896 kB
-VmData:   805068 kB
+VmHWM:      1928 kB
+VmRSS:      1928 kB
+VmData:    36868 kB
 VmStk:       136 kB
-VmExe:       912 kB
-VmLib:      1580 kB
-VmPTE:        48 kB
+VmExe:      1024 kB
+VmLib:      1848 kB
+VmPTE:        40 kB
 VmSwap:        0 kB
 ```
 
-**15 kB virtual, 5 kB resident per counter.**
+**1.412 kB virtual, TODO 0.808 kB resident per counter.**
 
 100000 counters registered:
 
 ```
-VmPeak:  1204156 kB
-VmSize:  1204156 kB
+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:    450944 kB
-VmRSS:    394756 kB
-VmData:  1201484 kB
+VmHWM:      1928 kB
+VmRSS:      1928 kB
+VmData:    36868 kB
 VmStk:       136 kB
-VmExe:       912 kB
-VmLib:      1580 kB
-VmPTE:       928 kB
-VmSwap:    56596 kB
+VmExe:      1020 kB
+VmLib:      1848 kB
+VmPTE:        40 kB
+VmSwap:        0 kB
 ```
 
-**4 kB virtual, 4 kB resident per counter.**
+**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
+```
 
-1000 and 100000 gauges registered: negligibly different than counters.
+**0.12416 kB virtual, 0.11312 resident per gauge.**
 
 1000 histograms with a uniform sample size of 1028:
 
 ```
-VmPeak:   811724 kB
-VmSize:   811724 kB
+VmPeak:    72272 kB
+VmSize:    72272 kB
 VmLck:         0 kB
-VmHWM:     15568 kB
-VmRSS:     15568 kB
-VmData:   809036 kB
+VmHWM:     16204 kB
+VmRSS:     16204 kB
+VmData:    65100 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
 VmPTE:        80 kB
 VmSwap:        0 kB
 ```
 
-**19 kB virtual, 15 kB resident per histogram.**
+**29.668 kB virtual, TODO 15.084 resident per histogram.**
 
 10000 histograms with a uniform sample size of 1028:
 
 ```
-VmPeak:   883916 kB
-VmSize:   883916 kB
+VmPeak:   256912 kB
+VmSize:   256912 kB
 VmLck:         0 kB
-VmHWM:    144576 kB
-VmRSS:    144576 kB
-VmData:   881228 kB
+VmHWM:    146204 kB
+VmRSS:    146204 kB
+VmData:   249740 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
-VmPTE:       432 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
+VmPTE:       448 kB
 VmSwap:        0 kB
 ```
 
-**9 kB virtual, 14 kB resident per histogram.**
+**21.4308 kB virtual, 14.5084 kB resident per histogram.**
 
 50000 histograms with a uniform sample size of 1028:
 
 ```
-VmPeak:  1204300 kB
-VmSize:  1204300 kB
+VmPeak:   908112 kB
+VmSize:   908112 kB
 VmLck:         0 kB
-VmHWM:    480288 kB
-VmRSS:    462244 kB
-VmData:  1201612 kB
+VmHWM:    645832 kB
+VmRSS:    645588 kB
+VmData:   900940 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
-VmPTE:      1296 kB
-VmSwap:    76464 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
+VmPTE:      1716 kB
+VmSwap:     1544 kB
 ```
 
-**8 kB virtual, 9 kB resident per histogram.  WTF?**
+**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:   811724 kB
-VmSize:   811724 kB
+VmPeak:    62480 kB
+VmSize:    62480 kB
 VmLck:         0 kB
-VmHWM:     10564 kB
-VmRSS:     10564 kB
-VmData:   809036 kB
+VmHWM:     11572 kB
+VmRSS:     11572 kB
+VmData:    55308 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
-VmPTE:        52 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
+VmPTE:        64 kB
 VmSwap:        0 kB
 ```
 
-**19 kB virtual, 10 kB resident per histogram.**
+**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:   883788 kB
-VmSize:   883788 kB
+VmPeak:   153296 kB
+VmSize:   153296 kB
 VmLck:         0 kB
-VmHWM:     93484 kB
-VmRSS:     93484 kB
-VmData:   881100 kB
+VmHWM:    101176 kB
+VmRSS:    101176 kB
+VmData:   146124 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
-VmPTE:       220 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
+VmPTE:       240 kB
 VmSwap:        0 kB
 ```
 
-**9 kB virtual, 9 kB resident per histogram.**
+**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:  1204172 kB
-VmSize:  1204172 kB
+VmPeak:   557264 kB
+VmSize:   557264 kB
 VmLck:         0 kB
-VmHWM:    460360 kB
-VmRSS:    460248 kB
-VmData:  1201484 kB
+VmHWM:    501056 kB
+VmRSS:    501056 kB
+VmData:   550092 kB
 VmStk:       136 kB
-VmExe:       928 kB
-VmLib:      1580 kB
-VmPTE:       944 kB
-VmSwap:      112 kB
+VmExe:      1048 kB
+VmLib:      1848 kB
+VmPTE:      1032 kB
+VmSwap:        0 kB
 ```
 
-**8 kB virtual, 9 kB resident per histogram.  WTF?**
+**10.2932 kB virtual, 9.99872 kB resident per histogram.**
 
 250 meters:
 
 ```
-VmPeak:  2887084 kB
-VmSize:  2887084 kB
+VmPeak:  2148716 kB
+VmSize:  2148716 kB
 VmLck:         0 kB
-VmHWM:      3380 kB
-VmRSS:      3380 kB
-VmData:  2884404 kB
+VmHWM:      4088 kB
+VmRSS:      4088 kB
+VmData:  2141556 kB
 VmStk:       136 kB
-VmExe:       920 kB
-VmLib:      1580 kB
-VmPTE:      1072 kB
+VmExe:      1036 kB
+VmLib:      1848 kB
+VmPTE:      1076 kB
 VmSwap:        0 kB
 ```
 
-**8378 kB virtual, 11 kB resident per meter.**
+**TODO 8424.448 kB virtual, 11.872 kB resident per meter.**

+ 6 - 2
cmd/metrics-bench/metrics-bench.go

@@ -8,8 +8,12 @@ import (
 
 func main() {
 	r := metrics.NewRegistry()
-	for i := 0; i < 250; i++ {
-		r.RegisterMeter(fmt.Sprintf("%d", i), metrics.NewMeter())
+	for i := 0; i < 1000; i++ {
+		r.RegisterCounter(fmt.Sprintf("%d", i), metrics.NewCounter())
+//		r.RegisterGauge(fmt.Sprintf("%d", i), metrics.NewGauge())
+//		r.RegisterHistogram(fmt.Sprintf("%d", i), metrics.NewHistogram(metrics.NewUniformSample(1028)))
+//		r.RegisterHistogram(fmt.Sprintf("%d", i), metrics.NewHistogram(metrics.NewExpDecaySample(1028, 0.015)))
+//		r.RegisterMeter(fmt.Sprintf("%d", i), metrics.NewMeter())
 	}
 	time.Sleep(600e9)
 }