memstat 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +56 -0
- data/Rakefile +9 -0
- data/bin/memstat +8 -0
- data/lib/memstat.rb +24 -0
- data/lib/memstat/cli.rb +16 -0
- data/lib/memstat/oob_gc/unicorn.rb +19 -0
- data/lib/memstat/proc/base.rb +17 -0
- data/lib/memstat/proc/smaps.rb +115 -0
- data/lib/memstat/proc/status.rb +35 -0
- data/lib/memstat/version.rb +3 -0
- data/memstat.gemspec +26 -0
- data/test/files/smaps.txt +3616 -0
- data/test/files/status.txt +40 -0
- data/test/test_memstat.rb +53 -0
- metadata +121 -0
@@ -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
|