Không có mô tả

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

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.