memstat 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ Name: ruby
2
+ State: S (sleeping)
3
+ Tgid: 1398
4
+ Pid: 1398
5
+ PPid: 1
6
+ TracerPid: 0
7
+ Uid: 0 0 0 0
8
+ Gid: 0 0 0 0
9
+ FDSize: 64
10
+ Groups: 0
11
+ VmPeak: 277756 kB
12
+ VmSize: 277756 kB
13
+ VmLck: 0 kB
14
+ VmPin: 0 kB
15
+ VmHWM: 131044 kB
16
+ VmRSS: 131044 kB
17
+ VmData: 133064 kB
18
+ VmStk: 136 kB
19
+ VmExe: 4 kB
20
+ VmLib: 21524 kB
21
+ VmPTE: 540 kB
22
+ VmSwap: 0 kB
23
+ Threads: 3
24
+ SigQ: 1/31462
25
+ SigPnd: 0000000000000000
26
+ ShdPnd: 0000000000000000
27
+ SigBlk: 0000000000000000
28
+ SigIgn: 0000000000001000
29
+ SigCgt: 000000018a316e47
30
+ CapInh: 0000000000000000
31
+ CapPrm: 0000001fffffffff
32
+ CapEff: 0000001fffffffff
33
+ CapBnd: 0000001fffffffff
34
+ Seccomp: 0
35
+ Cpus_allowed: ff
36
+ Cpus_allowed_list: 0-7
37
+ Mems_allowed: 00000000,00000001
38
+ Mems_allowed_list: 0
39
+ voluntary_ctxt_switches: 3518
40
+ nonvoluntary_ctxt_switches: 106
@@ -0,0 +1,53 @@
1
+ require 'memstat'
2
+ require 'minitest/autorun'
3
+ require 'benchmark'
4
+
5
+ class TestCli < Minitest::Test
6
+ SMAPS_PATH = File.expand_path('../../test/files/smaps.txt', __FILE__)
7
+ STATUS_PATH = File.expand_path('../../test/files/status.txt', __FILE__)
8
+
9
+ def test_print
10
+ smaps = Memstat::Proc::Smaps.new(:path => SMAPS_PATH)
11
+ puts smaps.print
12
+ STDOUT.flush
13
+ end
14
+
15
+ def test_smaps
16
+ smaps = Memstat::Proc::Smaps.new(:path => SMAPS_PATH)
17
+
18
+ assert_equal smaps.size, 277760 * 1024
19
+ assert_equal smaps.rss, 131032 * 1024
20
+ assert_equal smaps.pss, 75944 * 1024
21
+ assert_equal smaps.shared_clean, 8504 * 1024
22
+ assert_equal smaps.shared_dirty, 53716 * 1024
23
+ assert_equal smaps.private_clean, 4 * 1024
24
+ assert_equal smaps.private_dirty, 68808 * 1024
25
+ assert_equal smaps.swap, 0 * 1024
26
+ end
27
+
28
+ def test_status
29
+ status = Memstat::Proc::Status.new(:path => STATUS_PATH)
30
+
31
+ assert_equal status.peak, 277756 * 1024
32
+ assert_equal status.size, 277756 * 1024
33
+ assert_equal status.lck, 0 * 1024
34
+ assert_equal status.pin, 0 * 1024
35
+ assert_equal status.hwm, 131044 * 1024
36
+ assert_equal status.rss, 131044 * 1024
37
+ assert_equal status.data, 133064 * 1024
38
+ assert_equal status.peak, 277756 * 1024
39
+ assert_equal status.stk, 136 * 1024
40
+ assert_equal status.exe, 4 * 1024
41
+ assert_equal status.lib, 21524 * 1024
42
+ assert_equal status.pte, 540 * 1024
43
+ assert_equal status.swap, 0 * 1024
44
+ end
45
+
46
+ def test_benchmark
47
+ n = 100
48
+ Benchmark.bm(10) do |x|
49
+ x.report("ps:") { n.times.each { `ps -o rss -p #{$$}`.strip.split.last.to_i } }
50
+ x.report("memstat:") { n.times.each { Memstat::Proc::Status.new(:path => STATUS_PATH).rss } }
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: memstat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kenn Ejima
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
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: rake
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
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Fast memory statistics
70
+ email:
71
+ - kenn.ejima@gmail.com
72
+ executables:
73
+ - memstat
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - bin/memstat
83
+ - lib/memstat.rb
84
+ - lib/memstat/cli.rb
85
+ - lib/memstat/oob_gc/unicorn.rb
86
+ - lib/memstat/proc/base.rb
87
+ - lib/memstat/proc/smaps.rb
88
+ - lib/memstat/proc/status.rb
89
+ - lib/memstat/version.rb
90
+ - memstat.gemspec
91
+ - test/files/smaps.txt
92
+ - test/files/status.txt
93
+ - test/test_memstat.rb
94
+ homepage: ''
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.2.0.rc.1
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: Fast memory statistics
118
+ test_files:
119
+ - test/files/smaps.txt
120
+ - test/files/status.txt
121
+ - test/test_memstat.rb