Без опису

Richard Crowley 0818b952c0 Removed a binary. 14 роки тому
cmd 0818b952c0 Removed a binary. 14 роки тому
.gitignore 0818b952c0 Removed a binary. 14 роки тому
LICENSE f7cf4d7405 Initial import. 14 роки тому
Makefile 1f505b2fae Crude memory usage benchmarks. 14 роки тому
README.md 1f505b2fae Crude memory usage benchmarks. 14 роки тому
counter.go f7cf4d7405 Initial import. 14 роки тому
counter_test.go c80bdded90 Tests cribbed from Coda. 14 роки тому
ewma.go c4c8b6cbd3 Consistent variable declarations. 14 роки тому
ewma_test.go 7272529a65 Added meters and exponentially-weighted moving averages. 14 роки тому
gauge.go 1410ebe031 Added the uniform sampler for percentiles. 14 роки тому
gauge_test.go c80bdded90 Tests cribbed from Coda. 14 роки тому
healthcheck.go f7cf4d7405 Initial import. 14 роки тому
histogram.go 42de9db64b Percentiles are zero in empty histograms. 14 роки тому
histogram_test.go c80bdded90 Tests cribbed from Coda. 14 роки тому
log.go 0f101b213d Added Log and Syslog functions that print metrics. 14 роки тому
meter.go 7272529a65 Added meters and exponentially-weighted moving averages. 14 роки тому
meter_test.go 7272529a65 Added meters and exponentially-weighted moving averages. 14 роки тому
metrics.go f7cf4d7405 Initial import. 14 роки тому
registry.go 0f101b213d Added Log and Syslog functions that print metrics. 14 роки тому
sample.go f068d88f36 Correct timestamp usage in exponential decay. 14 роки тому
sample_test.go c80bdded90 Tests cribbed from Coda. 14 роки тому
syslog.go 0f101b213d Added Log and Syslog functions that print metrics. 14 роки тому
test.go 488dcee477 Testing atomicity. 14 роки тому
timer.go f7cf4d7405 Initial import. 14 роки тому

README.md

go-metrics

TODO

Memory usage

(Highly unscientific.)

Command used to gather static memory usage:

grep ^Vm "/proc/$(ps fax | grep [m]etrics-bench | awk '{print $1}')/status"

Program used to gather baseline memory usage:

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):

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.