Jelajahi Sumber

Crude memory usage benchmarks.

Richard Crowley 14 tahun lalu
induk
melakukan
1f505b2fae
6 mengubah file dengan 257 tambahan dan 2 penghapusan
  1. 2 0
      Makefile
  2. 227 0
      README.md
  3. 11 0
      cmd/metrics-bench/Makefile
  4. TEMPAT SAMPAH
      cmd/metrics-bench/metrics-bench
  5. 15 0
      cmd/metrics-bench/metrics-bench.go
  6. 2 2
      cmd/metrics/metrics.go

+ 2 - 0
Makefile

@@ -19,11 +19,13 @@ include $(GOROOT)/src/Make.pkg
 
 all: uninstall clean install
 	make -C cmd/metrics uninstall clean install
+	make -C cmd/metrics-bench uninstall clean install
 
 uninstall:
 	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)/$(TARG).a
 	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)/github.com/rcrowley/go-$(TARG).a
 	rm -rf $(GOROOT)/src/pkg/github.com/rcrowley/go-$(TARG)
 	make -C cmd/metrics uninstall
+	make -C cmd/metrics-bench uninstall
 
 .PHONY: all uninstall

+ 227 - 0
README.md

@@ -0,0 +1,227 @@
+go-metrics
+==========
+
+TODO
+
+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:	  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
+```
+
+Program used to gather metric memory usage (with other metrics being similar):
+
+```go
+package main
+
+import (
+	"fmt"
+	"metrics"
+	"time"
+)
+
+func main() {
+	r := metrics.NewRegistry()
+	for i := 0; i < 1000; i++ {
+		r.RegisterCounter(fmt.Sprintf("%d", i), metrics.NewCounter())
+	}
+	time.Sleep(600e9)
+}
+```
+
+1000 counters registered:
+
+```
+VmPeak:   807740 kB
+VmSize:   807740 kB
+VmLck:         0 kB
+VmHWM:      5896 kB
+VmRSS:      5896 kB
+VmData:   805068 kB
+VmStk:       136 kB
+VmExe:       912 kB
+VmLib:      1580 kB
+VmPTE:        48 kB
+VmSwap:        0 kB
+```
+
+**15 kB virtual, 5 kB resident per counter.**
+
+100000 counters registered:
+
+```
+VmPeak:  1204156 kB
+VmSize:  1204156 kB
+VmLck:         0 kB
+VmHWM:    450944 kB
+VmRSS:    394756 kB
+VmData:  1201484 kB
+VmStk:       136 kB
+VmExe:       912 kB
+VmLib:      1580 kB
+VmPTE:       928 kB
+VmSwap:    56596 kB
+```
+
+**4 kB virtual, 4 kB resident per counter.**
+
+1000 and 100000 gauges registered: negligibly different than counters.
+
+1000 histograms with a uniform sample size of 1028:
+
+```
+VmPeak:   811724 kB
+VmSize:   811724 kB
+VmLck:         0 kB
+VmHWM:     15568 kB
+VmRSS:     15568 kB
+VmData:   809036 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:        80 kB
+VmSwap:        0 kB
+```
+
+**19 kB virtual, 15 kB resident per histogram.**
+
+10000 histograms with a uniform sample size of 1028:
+
+```
+VmPeak:   883916 kB
+VmSize:   883916 kB
+VmLck:         0 kB
+VmHWM:    144576 kB
+VmRSS:    144576 kB
+VmData:   881228 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:       432 kB
+VmSwap:        0 kB
+```
+
+**9 kB virtual, 14 kB resident per histogram.**
+
+50000 histograms with a uniform sample size of 1028:
+
+```
+VmPeak:  1204300 kB
+VmSize:  1204300 kB
+VmLck:         0 kB
+VmHWM:    480288 kB
+VmRSS:    462244 kB
+VmData:  1201612 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:      1296 kB
+VmSwap:    76464 kB
+```
+
+**8 kB virtual, 9 kB resident per histogram.  WTF?**
+
+1000 histograms with an exponentially-decaying sample size of 1028 and alpha of 0.015:
+
+```
+VmPeak:   811724 kB
+VmSize:   811724 kB
+VmLck:         0 kB
+VmHWM:     10564 kB
+VmRSS:     10564 kB
+VmData:   809036 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:        52 kB
+VmSwap:        0 kB
+```
+
+**19 kB virtual, 10 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
+VmLck:         0 kB
+VmHWM:     93484 kB
+VmRSS:     93484 kB
+VmData:   881100 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:       220 kB
+VmSwap:        0 kB
+```
+
+**9 kB virtual, 9 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
+VmLck:         0 kB
+VmHWM:    460360 kB
+VmRSS:    460248 kB
+VmData:  1201484 kB
+VmStk:       136 kB
+VmExe:       928 kB
+VmLib:      1580 kB
+VmPTE:       944 kB
+VmSwap:      112 kB
+```
+
+**8 kB virtual, 9 kB resident per histogram.  WTF?**
+
+250 meters:
+
+```
+VmPeak:  2887084 kB
+VmSize:  2887084 kB
+VmLck:         0 kB
+VmHWM:      3380 kB
+VmRSS:      3380 kB
+VmData:  2884404 kB
+VmStk:       136 kB
+VmExe:       920 kB
+VmLib:      1580 kB
+VmPTE:      1072 kB
+VmSwap:        0 kB
+```
+
+**8378 kB virtual, 11 kB resident per meter.**

+ 11 - 0
cmd/metrics-bench/Makefile

@@ -0,0 +1,11 @@
+include $(GOROOT)/src/Make.inc
+
+TARG=metrics-bench
+GOFILES=metrics-bench.go
+
+include $(GOROOT)/src/Make.cmd
+
+uninstall:
+	rm -f $(GOROOT)/bin/$(TARG)
+
+.PHONY: uninstall

TEMPAT SAMPAH
cmd/metrics-bench/metrics-bench


+ 15 - 0
cmd/metrics-bench/metrics-bench.go

@@ -0,0 +1,15 @@
+package main
+
+import (
+	"fmt"
+	"metrics"
+	"time"
+)
+
+func main() {
+	r := metrics.NewRegistry()
+	for i := 0; i < 250; i++ {
+		r.RegisterMeter(fmt.Sprintf("%d", i), metrics.NewMeter())
+	}
+	time.Sleep(600e9)
+}

+ 2 - 2
cmd/metrics/metrics.go

@@ -1,10 +1,10 @@
 package main
 
 import (
-	"log"
+//	"log"
 	"metrics"
 //	"os"
-	"syslog"
+//	"syslog"
 	"time"
 )