説明なし

Richard Crowley 93a07b730f More memory-efficient meters. 14 年 前
cmd a31ebf206b Use time.Ticker to avoid bajillions of threads. 14 年 前
.gitignore 0818b952c0 Removed a binary. 14 年 前
LICENSE f7cf4d7405 Initial import. 14 年 前
Makefile 1f505b2fae Crude memory usage benchmarks. 14 年 前
README.md 93a07b730f More memory-efficient meters. 14 年 前
counter.go 9192d930ec Use atomics for counters and gauges. 14 年 前
counter_test.go c80bdded90 Tests cribbed from Coda. 14 年 前
ewma.go 93a07b730f More memory-efficient meters. 14 年 前
ewma_test.go 7272529a65 Added meters and exponentially-weighted moving averages. 14 年 前
gauge.go 9192d930ec Use atomics for counters and gauges. 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 93a07b730f More memory-efficient meters. 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 年 前
timer.go f7cf4d7405 Initial import. 14 年 前

README.md

go-metrics

TODO This code is not safe on 32-bit architectures.

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

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.