Class: Metriks::Meter
- Inherits:
-
Object
- Object
- Metriks::Meter
- Defined in:
- lib/metriks/meter.rb
Instance Method Summary collapse
- #clear ⇒ Object
- #count ⇒ Object
- #fifteen_minute_rate ⇒ Object
- #five_minute_rate ⇒ Object
-
#initialize(averager_klass = Metriks::EWMA) ⇒ Meter
constructor
A new instance of Meter.
- #mark(val = 1) ⇒ Object
- #mean_rate ⇒ Object
- #one_minute_rate ⇒ Object
- #stop ⇒ Object
- #tick ⇒ Object
Constructor Details
#initialize(averager_klass = Metriks::EWMA) ⇒ Meter
Returns a new instance of Meter.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/metriks/meter.rb', line 7 def initialize(averager_klass = Metriks::EWMA) @count = Atomic.new(0) @start_time = Time.now @m1_rate = averager_klass.new_m1 @m5_rate = averager_klass.new_m5 @m15_rate = averager_klass.new_m15 @thread = Thread.new do loop do sleep averager_klass::INTERVAL tick end end end |
Instance Method Details
#clear ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/metriks/meter.rb', line 23 def clear @count.value = 0 @start_time = Time.now @m1_rate.clear @m5_rate.clear @m15_rate.clear end |
#count ⇒ Object
44 45 46 |
# File 'lib/metriks/meter.rb', line 44 def count @count.value end |
#fifteen_minute_rate ⇒ Object
56 57 58 |
# File 'lib/metriks/meter.rb', line 56 def fifteen_minute_rate @m15_rate.rate end |
#five_minute_rate ⇒ Object
52 53 54 |
# File 'lib/metriks/meter.rb', line 52 def five_minute_rate @m5_rate.rate end |
#mark(val = 1) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/metriks/meter.rb', line 37 def mark(val = 1) @count.update { |v| v + val } @m1_rate.update(val) @m5_rate.update(val) @m15_rate.update(val) end |
#mean_rate ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/metriks/meter.rb', line 60 def mean_rate if count == 0 return 0.0 else elapsed = Time.now - @start_time count / elapsed end end |
#one_minute_rate ⇒ Object
48 49 50 |
# File 'lib/metriks/meter.rb', line 48 def one_minute_rate @m1_rate.rate end |
#stop ⇒ Object
69 70 71 |
# File 'lib/metriks/meter.rb', line 69 def stop @thread.kill end |
#tick ⇒ Object
31 32 33 34 35 |
# File 'lib/metriks/meter.rb', line 31 def tick @m1_rate.tick @m5_rate.tick @m15_rate.tick end |