vmstator 2.0.4 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7f7a43819a1849279655e1056a3be2b802ae83c
4
- data.tar.gz: 928c84ecd16c33addd20d1fdac5b7ed3c9becc2c
3
+ metadata.gz: b85df90cea71304f1d1425813adf72f828fda9ad
4
+ data.tar.gz: 1e3611b676d28290bc3adde06b0e05f66c4f5b7c
5
5
  SHA512:
6
- metadata.gz: faaa1554c57651f0efebfbcbdfd951e506803a0cd99ce9cd40a7baeb081d8f90b792a914f666cde5688c309fb267aff3a10c646effee35eedec76164b9227e65
7
- data.tar.gz: afe1fc90504fda4b1c77d4167e14b9f133082e6c4dd508eb10572c00f0bae453e996e811007d76231b4738ea1ed3ba53588406dd36c380dc0443ca52fd05acb6
6
+ metadata.gz: 238ecaa11790d77c4c208a5b26b6ffefd3698903362c31c3a59ef66ae298e474999bd6970727beb50dfe8e48d5763a37a2244c4cfda1d4f06390b928399bf009
7
+ data.tar.gz: 8d5b8f87992b861901f1d1ca88476c5e03d531b8dbef238cb8191596ba8698720cb86a164ba75b8180abe025a79d4cdb61ba453563442d7f899f95e2596974e4
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vmstator (2.0.4)
4
+ vmstator (2.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -32,4 +32,4 @@ DEPENDENCIES
32
32
  vmstator!
33
33
 
34
34
  BUNDLED WITH
35
- 1.12.5
35
+ 1.13.6
data/README.md CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
  Vmstator is a Ruby API for [vmstat](https://en.wikipedia.org/wiki/Vmstat). It provides an [OO](https://www.tutorialspoint.com/ruby/ruby_object_oriented.htm) interface to be able to parse the contents of the output of vmstat and access that infromation intuitively.
4
4
 
5
+ #### Supported Platforms
6
+
7
+ Currently working on / testing on Debian GNU/Linux 8
8
+
5
9
  ## Screen Shot
6
10
 
7
- ![screenshot](http://i.imgur.com/RKs36Pa.png "Screen Shot")
11
+ ![screenshot](http://i.imgur.com/q5WkVhQ.png "Screen Shot")
8
12
 
9
13
  ## Installation
10
14
 
@@ -0,0 +1,32 @@
1
+ # Path setting slight of hand:
2
+ $: << File.expand_path("../../lib", __FILE__)
3
+ require 'vmstator'
4
+
5
+ parser = Vmstator::Parser.new
6
+
7
+ parser.active
8
+ # => Vmstator::DiskSummary
9
+
10
+ parser.average
11
+ # => Vmstator::DiskSummary
12
+
13
+ parser.disk_statistics
14
+ # => Vmstator::DiskStatistics
15
+
16
+ parser.disk_summary
17
+ # => Vmstator::DiskSummary
18
+
19
+ parser.event_counter_statistics
20
+ # => Vmstator::EventCounterStatistics
21
+
22
+ parser.slab_info
23
+ # => Vmstator::SlabInfo
24
+
25
+ parser.forks
26
+ # => Integer
27
+
28
+ parser.parse("-a -S m")
29
+ # => Whatever the flags were will determine output.
30
+
31
+ parser.version
32
+ # => String containing vmstat's version number.
@@ -0,0 +1,29 @@
1
+ # Path setting slight of hand:
2
+ $: << File.expand_path("../../lib", __FILE__)
3
+ require 'vmstator'
4
+ require 'pry'
5
+
6
+ parser = Vmstator::Parser.new
7
+ macos_pages = parser.parse
8
+
9
+ puts " Active: " + macos_pages.active.to_s
10
+ puts " Anonymous: " + macos_pages.anonymous.to_s
11
+ puts " Compressions: " + macos_pages.compressions.to_s
12
+ puts " Copy on Write: " + macos_pages.copy_on_write.to_s
13
+ puts " Decompressions: " + macos_pages.decompressions.to_s
14
+ puts " File Backed: " + macos_pages.file_backed.to_s
15
+ puts " Pages Free: " + macos_pages.free.to_s
16
+ puts " Inactive: " + macos_pages.inactive.to_s
17
+ puts " Ins: " + macos_pages.ins.to_s
18
+ puts "Occupied by Compressor: " + macos_pages.occupied_by_compressor.to_s
19
+ puts " Outs: " + macos_pages.outs.to_s
20
+ puts " Purgeable: " + macos_pages.purgeable.to_s
21
+ puts " Reactivated: " + macos_pages.reactivated.to_s
22
+ puts " Stored in Compressor: " + macos_pages.stored_in_compressor.to_s
23
+ puts " Swap Ins: " + macos_pages.swapins.to_s
24
+ puts " Swap Outs: " + macos_pages.swapouts.to_s
25
+ puts " Throttled: " + macos_pages.throttled.to_s
26
+ puts " Translation Faults: " + macos_pages.translation_faults.to_s
27
+ puts " Wired Down: " + macos_pages.wired_down.to_s
28
+ puts " Zero Filled: " + macos_pages.zero_filled.to_s
29
+
@@ -1,17 +1,16 @@
1
1
  require "vmstator/errors"
2
2
  require "vmstator/version"
3
3
  require "vmstator/stats"
4
- require "vmstator/memory"
5
- require "vmstator/active"
6
- require "vmstator/average"
7
- require "vmstator/cache"
8
- require "vmstator/disk"
9
- require "vmstator/disk_statistics"
10
- require "vmstator/disk_summary"
11
- require "vmstator/errors"
12
- require "vmstator/event_counter_statistics"
13
- require "vmstator/slab_info"
14
- require "vmstator/version"
4
+ require "vmstator/macos/pages"
5
+ require "vmstator/linux/memory"
6
+ require "vmstator/linux/active"
7
+ require "vmstator/linux/average"
8
+ require "vmstator/linux/cache"
9
+ require "vmstator/linux/disk"
10
+ require "vmstator/linux/disk_statistics"
11
+ require "vmstator/linux/disk_summary"
12
+ require "vmstator/linux/event_counter_statistics"
13
+ require "vmstator/linux/slab_info"
15
14
 
16
15
  module Vmstator
17
16
 
@@ -21,35 +20,54 @@ module Vmstator
21
20
  # with optional vmstat command-line flags
22
21
  # which is passed in as a string
23
22
  def parse(flags=false)
24
- if flags
25
- if flags =~ /(-d|--disk)/
26
- # parse instances of disk_statistics
27
- return disk_statistics(flags)
28
- elsif flags =~ /(-D|--disk-sum)/
29
- # parse instances of disk summary
30
- return disk_summary(flags)
31
- elsif flags =~ /(-a|--active)/
32
- # parse instances of active memory
33
- return active(flags)
34
- elsif flags =~ /(-m|--slabs)/
35
- # parse instances of slab info
36
- return slab_info(flags)
37
- elsif flags =~ /(-f|--forks)/
38
- # parse instances of forks
39
- return forks
40
- elsif flags =~ /(-s|--stats)/
41
- # parse instances of event counter statistics
42
- return event_counter_statistics(flags)
43
- elsif flags =~ /(-V|--version)/
44
- # parse instances of version
45
- return version
46
- else
47
- # parse instances of the typical, average things
48
- return average(flags)
49
- end
23
+ if RUBY_PLATFORM =~ /darwin/i
24
+ return parse_macos
25
+ elsif RUBY_PLATFORM =~ /linux/i
26
+ return parse_linux(flags)
27
+ elsif RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
28
+ raise Vmstator::VmstatError.new("This platform is not supported. Yet!?")
29
+ else
30
+ raise Vmstator::VmstatError.new("Unable to parse vmstat on this platform!")
31
+ end
32
+ end
33
+
34
+ def parse_linux(flags=false)
35
+ if flags =~ /(-d|--disk)/
36
+ # parse instances of disk_statistics
37
+ return disk_statistics(flags)
38
+ elsif flags =~ /(-D|--disk-sum)/
39
+ # parse instances of disk summary
40
+ return disk_summary(flags)
41
+ elsif flags =~ /(-a|--active)/
42
+ # parse instances of active memory
43
+ return active(flags)
44
+ elsif flags =~ /(-m|--slabs)/
45
+ # parse instances of slab info
46
+ return slab_info(flags)
47
+ elsif flags =~ /(-f|--forks)/
48
+ # parse instances of forks
49
+ return forks
50
+ elsif flags =~ /(-s|--stats)/
51
+ # parse instances of event counter statistics
52
+ return event_counter_statistics(flags)
53
+ elsif flags =~ /(-V|--version)/
54
+ # parse instances of version
55
+ return version
50
56
  else
51
- return average
57
+ flags ? average(flags) : average
58
+ end
59
+ end
60
+
61
+ def parse_macos
62
+ output = `vm_stat`.split("\n")
63
+ output.shift
64
+ data = {}
65
+ output.each do |line|
66
+ key, value = line.split(':').map(&:strip)
67
+ key = key.downcase.gsub(" ", "_").gsub("-", "_").gsub('"', '').to_sym
68
+ data[key] = value.to_i
52
69
  end
70
+ Vmstator::MacOSPages.new(data)
53
71
  end
54
72
 
55
73
  def version
@@ -94,7 +112,7 @@ module Vmstator
94
112
  flags = "-D" unless flags
95
113
  output = `vmstat #{flags}`
96
114
  values = output.split(/[A-z]/).compact.join.split("\n").map(&:strip).map(&:to_i)
97
- keys = output.split(/\d/).compact.join.split("\n").map(&:strip)
115
+ kecys = output.split(/\d/).compact.join.split("\n").map(&:strip)
98
116
  keys = keys.map(&:downcase).map {|s| s.gsub(" ", "_")}.map(&:to_sym)
99
117
  data = Hash[keys.zip values]
100
118
  Vmstator::DiskSummary.new(data)
@@ -129,7 +147,7 @@ module Vmstator
129
147
 
130
148
  # slab_info() will run the -m flag and return that data
131
149
  def slab_info(flags=false)
132
- raise VmstatError("This must be run with root privileges!") unless Process.uid == 0
150
+ raise Vmstator::VmstatError.new("This must be run with root privileges!") unless Process.uid == 0
133
151
  flags = "-m" unless flags
134
152
  slab_info = Vmstator::SlabInfo.new
135
153
  `sudo vmstat #{flags}`.split("\n").each do |info|
File without changes
@@ -0,0 +1,58 @@
1
+ module Vmstator
2
+
3
+ class MacOSPages < Stats
4
+ attr_reader :free # total number of free pages in the system
5
+ attr_reader :active # total number of pages currently in use and pageable
6
+ attr_reader :inactive # total number of pages on the inactive list
7
+ attr_reader :speculative # total number of pages on the speculative list
8
+ attr_reader :throttled # total number of pages on the throttled list (not wired but not pageable)
9
+ attr_reader :wired_down # total number of pages wired down. that is, pages that cannot be paged out
10
+ attr_reader :purgeable # total number of purgeable pages
11
+ attr_reader :translation_faults # number of times the "vm_fault" routine has been called
12
+ attr_reader :copy_on_write # number of faults that caused a page to be copied (generally caused by copy-on-write faults)
13
+ attr_reader :zero_filled # total number of pages that have been zero-filled on demand
14
+ attr_reader :reactivated # total number of pages that have been moved from the inactive list to the active list (reactivated)
15
+ attr_reader :purged # total number of pages that have been purged
16
+ attr_reader :file_backed # total number of pages that are file-backed (non-swap)
17
+ attr_reader :anonymous # total number of pages that are anonymous
18
+ attr_reader :stored_in_compressor # total number of pages (uncompressed) held within the compressor
19
+ attr_reader :occupied_by_compressor # number of pages used to store compressed VM pages
20
+ attr_reader :decompressions # total number of pages that have been decompressed by the VM compressor
21
+ attr_reader :compressions # total number of pages that have been compressed by the VM compressor
22
+ attr_reader :ins # total number of requests for pages from a pager (such as the inode pager)
23
+ attr_reader :outs # total number of pages that have been paged out
24
+ attr_reader :swapins # total number of compressed pages that have been swapped out to disk
25
+ attr_reader :swapouts # total number of compressed pages that have been swapped back in from disk
26
+
27
+ def update(data)
28
+ if data
29
+ @free = data[:pages_free]
30
+ @active = data[:pages_active]
31
+ @inactive = data[:pages_inactive]
32
+ @speculative = data[:pages_speculative]
33
+ @throttled = data[:pages_throttled]
34
+ @wired_down = data[:pages_wired_down]
35
+ @purgeable = data[:pages_purgeable]
36
+ @translation_faults = data[:translation_faults]
37
+ @copy_on_write = data[:pages_copy_on_write]
38
+ @zero_filled = data[:pages_zero_filled]
39
+ @reactivated = data[:pages_reactivated]
40
+ @purged = data[:pages_purged]
41
+ @file_backed = data[:file_backed_pages]
42
+ @anonymous = data[:anonymous_pages]
43
+ @stored_in_compressor = data[:pages_stored_in_compressor]
44
+ @occupied_by_compressor = data[:pages_occupied_by_compressor]
45
+ @decompressions = data[:decompressions]
46
+ @compressions = data[:compressions]
47
+ @ins = data[:pageins]
48
+ @outs = data[:pageouts]
49
+ @swapins = data[:swapins]
50
+ @swapouts = data[:swapouts]
51
+ else
52
+ return false
53
+ end
54
+ true
55
+ end
56
+
57
+ end
58
+ end
@@ -1,3 +1,3 @@
1
1
  module Vmstator
2
- VERSION = "2.0.4"
2
+ VERSION = "2.1.0"
3
3
  end
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmstator
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kent 'picat' Gruber
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-10 00:00:00.000000000 Z
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,18 +70,21 @@ files:
70
70
  - bin/console
71
71
  - bin/setup
72
72
  - examples/basic_example.rb
73
+ - examples/linux_example.rb
74
+ - examples/macOS_example.rb
73
75
  - lib/vmstator.rb
74
- - lib/vmstator/active.rb
75
- - lib/vmstator/average.rb
76
- - lib/vmstator/cache.rb
77
- - lib/vmstator/disk.rb
78
- - lib/vmstator/disk_statistics.rb
79
- - lib/vmstator/disk_summary.rb
80
76
  - lib/vmstator/errors.rb
81
- - lib/vmstator/event_counter_statistics.rb
82
- - lib/vmstator/memory.rb
83
- - lib/vmstator/parser.rb
84
- - lib/vmstator/slab_info.rb
77
+ - lib/vmstator/linux/active.rb
78
+ - lib/vmstator/linux/average.rb
79
+ - lib/vmstator/linux/cache.rb
80
+ - lib/vmstator/linux/disk.rb
81
+ - lib/vmstator/linux/disk_statistics.rb
82
+ - lib/vmstator/linux/disk_summary.rb
83
+ - lib/vmstator/linux/event_counter_statistics.rb
84
+ - lib/vmstator/linux/memory.rb
85
+ - lib/vmstator/linux/parser.rb
86
+ - lib/vmstator/linux/slab_info.rb
87
+ - lib/vmstator/macos/pages.rb
85
88
  - lib/vmstator/stats.rb
86
89
  - lib/vmstator/version.rb
87
90
  - pkg/vmstator-0.1.0.gem
@@ -91,6 +94,8 @@ files:
91
94
  - pkg/vmstator-2.0.1.gem
92
95
  - pkg/vmstator-2.0.2.gem
93
96
  - pkg/vmstator-2.0.3.gem
97
+ - pkg/vmstator-2.0.4.gem
98
+ - pkg/vmstator-2.1.0.gem
94
99
  - vmstator.gemspec
95
100
  homepage: https://github.com/picatz/Vmstator
96
101
  licenses: