cellumon 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/cellumon.gemspec +2 -2
  3. data/lib/cellumon.rb +23 -12
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8c771c909a0dcfadcaaf03a9f3365512ed905b2
4
- data.tar.gz: 560365358c89e138292cd0722ec7c9264ab262cf
3
+ metadata.gz: 393429643d51ab62509e289d26e26b6ff9525392
4
+ data.tar.gz: 317bf1a9f1481c17ff687e0d3fabb08e6e3a2776
5
5
  SHA512:
6
- metadata.gz: c9c19bdaf3a6e418f0c7b8d8e62d7786639a98cd80ba4a41d1b2e9b7d27a3d29d709afd477de54a5a6a510021ba356135453f580f848a09a7b91c86de52702a8
7
- data.tar.gz: 146126ea2a81af3c29523e5d85a3cb8de1ae15b11fb7f9af35bfe8809a47860bf9181a3dac107ff6a19a448ec4dae514721d9461076374b0aec4a3ad06262f7d
6
+ metadata.gz: 2e46df51abd66e48a5835ab8af203edf580f9a82a93f0bc857bc341dc113d24f21119aa942a76aa29510eb3ddb0e75f8a6dd585345674e7d42fce354e0bbf216
7
+ data.tar.gz: 9703a1b0387a1a90ecf06175bdb691f2ddea703aa88aa22e02e54a655185283716224f8528f75e7b02bab76252fa0dcfe9128a79b5699597f32b37ffbdf1aef6
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "cellumon"
5
- gem.version = "0.1.0"
5
+ gem.version = "0.3.0"
6
6
  gem.platform = Gem::Platform::RUBY
7
7
  gem.summary = "Monitor threads, processes, and states of Celluloid and its Actor System."
8
8
  gem.description = "Thread summary and reporting actor, utility for finding leaks and monitoring."
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
 
11
11
  gem.authors = ["digitalextremist //"]
12
12
  gem.email = ["code@extremist.digital"]
13
- gem.homepage = "https://github.com/digitalextremist/cellumon"
13
+ gem.homepage = "https://github.com/abstractive/cellumon"
14
14
 
15
15
  gem.required_ruby_version = ">= 1.9.2"
16
16
  gem.required_rubygems_version = ">= 1.3.6"
@@ -19,16 +19,21 @@ class Cellumon
19
19
  memory_count: 13
20
20
  }
21
21
 
22
- def initialize
22
+ def initialize(mark=false)
23
23
  @semaphor = {}
24
24
  @status = {}
25
25
  @timers = {}
26
+ @mark = mark
26
27
  @intervals = MONITORS.dup
27
28
  end
28
29
 
30
+ def mark
31
+ @mark ? "Cellumon > " : ""
32
+ end
33
+
29
34
  MONITORS.each { |m,i|
30
35
  define_method(:"start_#{m}!") { |interval=nil|
31
- async.send1(:"starting_#{m}")
36
+ async.send(:"starting_#{m}")
32
37
  }
33
38
  define_method(:"starting_#{m}") { |interval=nil|
34
39
  @intervals[m] = interval || MONITORS[m]
@@ -46,12 +51,20 @@ class Cellumon
46
51
 
47
52
  def memory_count!
48
53
  if ready? :memory_count
49
- console("Memory usage: #{`pmap #{Process.pid} | tail -1`[10,40].strip}")
54
+ total = `pmap #{Process.pid} | tail -1`[10,40].strip[0..-1]
55
+ console("Memory usage: #{memory(total)}")
50
56
  ready! :memory_count
51
57
  end
52
58
  @timers[:memory_count] = after(@intervals[:memory_count]) { memory_count! }
53
59
  end
54
60
 
61
+ def memory(total)
62
+ total = total.to_i
63
+ gb = (total / (1024 * 1024)).to_i
64
+ mb = total % gb
65
+ "#{'%0.2f' % "#{gb}.#{mb}"}gb" #de Very fuzzy math but fine for now.
66
+ end
67
+
55
68
  def thread_survey!
56
69
  if ready? :thread_survey
57
70
  Celluloid.stack_summary
@@ -71,21 +84,19 @@ class Cellumon
71
84
  def thread_report!
72
85
  if ready? :thread_report
73
86
  threads = Thread.list.inject({}) { |l,t| l[t.object_id] = t.status; l }
74
- running = threads.select { |id,status| status == 'run' }.count
75
- sleeping = threads.select { |id,status| status == 'sleep' }.count
76
- aborting = threads.select { |id,status| status == 'aborting' }.count
77
- normally_terminated = threads.select { |id,status| status === false }.count
78
- exception_terminated = threads.select { |id,status| status.nil? }.count
79
- console "Threads #{threads.count}; " +
80
- "Running (#{running}) Sleeping (#{sleeping}) Aborting (#{aborting}); " +
81
- "Terminated: Normally (#{normally_terminated}) Exception (#{exception_terminated})"
87
+ r = threads.select { |id,status| status == 'run' }.count
88
+ s = threads.select { |id,status| status == 'sleep' }.count
89
+ a = threads.select { |id,status| status == 'aborting' }.count
90
+ nt = threads.select { |id,status| status === false }.count
91
+ te = threads.select { |id,status| status.nil? }.count
92
+ console "Threads #{threads.count}: #{r}r #{s}s #{a}a #{nt}nt #{te}te"
82
93
  ready! :thread_report
83
94
  end
84
95
  @timers[:thread_report] = after(@intervals[:thread_report]) { thread_report! }
85
96
  end
86
97
 
87
98
  def console(message)
88
- puts "*, [#{Time.now.strftime('%FT%T.%L')}] Cellumon > #{message}"
99
+ puts "*, [#{Time.now.strftime('%FT%T.%L')}] #{mark}#{message}"
89
100
  end
90
101
 
91
102
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cellumon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - digitalextremist //
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-07 00:00:00.000000000 Z
11
+ date: 2015-07-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Thread summary and reporting actor, utility for finding leaks and monitoring.
14
14
  email:
@@ -23,7 +23,7 @@ files:
23
23
  - Rakefile
24
24
  - cellumon.gemspec
25
25
  - lib/cellumon.rb
26
- homepage: https://github.com/digitalextremist/cellumon
26
+ homepage: https://github.com/abstractive/cellumon
27
27
  licenses:
28
28
  - MIT
29
29
  metadata: {}