meminfo 0.1.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 +7 -0
  2. data/lib/meminfo.rb +23 -0
  3. data/lib/meminfo/ext.rb +11 -0
  4. metadata +73 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6c0901a6387fa0b56a453717015fcdeaa862225a
4
+ data.tar.gz: a46bdecc744b3d7652ae89059b42c7bda33ba61b
5
+ SHA512:
6
+ metadata.gz: d16d774089bea2eee6c7c4a642b1a20a06e4b54530935c450f94f8f62fd06f0e2df045e5aa9b294d023cfea234683010ba9a68cfd6c6637e43b823421ce44b26
7
+ data.tar.gz: 6438d641ee60ceed6c35f67d955d014ae0310c15ea95d85265037955798ec179a23241a4e11c54f7c9f880b2c94cd6273574404194ed03e1ff9ce89a501040e1
@@ -0,0 +1,23 @@
1
+ require 'objspace'
2
+ require 'meminfo/ext'
3
+
4
+ # MemInfo gives a handful of methods allowing inspection of process memory use.
5
+ module MemInfo
6
+ module_function
7
+
8
+ class ProcessNotFound < StandardError; end
9
+
10
+ def rss(pid = Process.pid)
11
+ Integer(ps_rss(pid)) * 1024
12
+ rescue TypeError
13
+ raise ProcessNotFound, pid
14
+ end
15
+
16
+ def memsize
17
+ ObjectSpace.each_object.reduce(0) { |a, e| a + ObjectSpace.memsize_of(e) }
18
+ end
19
+
20
+ private def ps_rss(pid)
21
+ `ps ax -o rss,pid`.each_line.grep(/^\s*(\d+)\s+#{pid}$/) { $1 }.first
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ Process.instance_eval do
2
+ def rss(pid = Process.pid)
3
+ MemInfo.rss(pid)
4
+ end
5
+ end
6
+
7
+ ObjectSpace.instance_eval do
8
+ def memsize
9
+ MemInfo.memsize
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: meminfo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Loic Nageleisen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Obtain process memory information
42
+ email: loic.nageleisen@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/meminfo.rb
48
+ - lib/meminfo/ext.rb
49
+ homepage: https://github.com/lloeki/meminfo
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 2.4.5
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Obtain process memory information
73
+ test_files: []