Module: Droid::Utilization
Constant Summary collapse
- @@start =
Time.now.getutc
- @@data =
{ }
Instance Method Summary collapse
- #calc_utilization(topic, t2 = nil) ⇒ Object
- #data(topic) ⇒ Object
- #latency ⇒ Object
- #latency=(val) ⇒ Object
- #monitor(topic, opts = {}) ⇒ Object
- #record(topic, secs) ⇒ Object
- #reinit ⇒ Object
- #report ⇒ Object
- #report_data ⇒ Object
- #report_summary(data = nil) ⇒ Object
- #start ⇒ Object
- #topics ⇒ Object
Instance Method Details
#calc_utilization(topic, t2 = nil) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/droid/utilization.rb', line 39 def calc_utilization(topic, t2=nil) d = data(topic) t1 = @@start t2 ||= Time.now.getutc.to_i secs = (t2 - t1) secs = 1 if secs <= 0.0 if d['msgs'] == 0 avg = 0.0 else avg = d['time'] / d['msgs'] end utilization = d['time'] / secs { 'avg' => avg, 'secs' => secs, 'utilization' => utilization, 'msgs' => d['msgs'], 'msgs_per_sec' => d['msgs'] / secs } end |
#data(topic) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/droid/utilization.rb', line 21 def data(topic) @@data[topic] ||= { 'msgs' => 0, 'time' => 0.0 } @@data[topic] end |
#latency ⇒ Object
7 |
# File 'lib/droid/utilization.rb', line 7 def latency; @latency; end |
#latency=(val) ⇒ Object
6 |
# File 'lib/droid/utilization.rb', line 6 def latency=(val); @latency = val; end |
#monitor(topic, opts = {}) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/droid/utilization.rb', line 60 def monitor(topic, opts={}) topic = 'temporary' if opts[:temp] t1 = Time.now.getutc begin yield if block_given? ensure t2 = Time.now.getutc record(topic, t2 - t1) end end |
#record(topic, secs) ⇒ Object
33 34 35 36 37 |
# File 'lib/droid/utilization.rb', line 33 def record(topic, secs) d = data(topic) d['msgs'] += 1 d['time'] += secs end |
#reinit ⇒ Object
16 17 18 19 |
# File 'lib/droid/utilization.rb', line 16 def reinit @@start = Time.now.getutc @@data = { } end |
#report ⇒ Object
107 108 109 110 111 |
# File 'lib/droid/utilization.rb', line 107 def report data = report_data summary = report_summary(data) { 'data' => data, 'summary' => summary } end |
#report_data ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/droid/utilization.rb', line 72 def report_data data = {} t2 = Time.now.getutc topics.each do |topic| data[topic] = calc_utilization(topic, t2) end data end |
#report_summary(data = nil) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/droid/utilization.rb', line 81 def report_summary(data=nil) data ||= report_data summary = { 'avg' => 0.0, 'utilization' => 0.0, 'msgs' => 0, 'msgs_per_sec' => 0.0, 'secs' => 0.0 } data.each do |topic, d| summary['utilization'] += d['utilization'] summary['msgs'] += d['msgs'] summary['msgs_per_sec'] += d['msgs_per_sec'] summary['avg'] += d['avg'] summary['secs'] += d['secs'] end if data.size < 1 summary['avg'] = 0.0 else summary['avg'] /= data.size end summary end |
#start ⇒ Object
12 13 14 |
# File 'lib/droid/utilization.rb', line 12 def start @@start end |
#topics ⇒ Object
29 30 31 |
# File 'lib/droid/utilization.rb', line 29 def topics @@data.keys end |