module Kuroko2::MemorySampler
Public Instance Methods
get_by_pgid(pgid)
click to toggle source
@param [Integer] pgid process group id @return [Integer] sum of memory consumptions of given process group
# File lib/autoload/kuroko2/memory_sampler.rb, line 8 def get_by_pgid(pgid) case platform when /linux/ get_by_pgid_linux(pgid) when /darwin/ get_by_pgid_osx(pgid) else raise "Unknown platform: #{platform}" end rescue SystemCallError nil end
Private Instance Methods
calculate_sum(rss_lines)
click to toggle source
# File lib/autoload/kuroko2/memory_sampler.rb, line 42 def calculate_sum(rss_lines) rss_lines.reject(&:blank?).map {|s| s.scan(/\d+/).first }.map(&:to_i).reduce(&:+) end
get_by_pgid_linux(pgid)
click to toggle source
Note:
taiki-ono@ci-slave-ruby-001:~$ ps -o pgid= -o rss= 22848 888 25848 4056
# File lib/autoload/kuroko2/memory_sampler.rb, line 27 def get_by_pgid_linux(pgid) output, _, status = Open3.capture3('ps', '-o', 'pgid=', '-o', 'rss=') if status.success? targets = output.split("\n").select {|line| line.split(' ').first == pgid.to_s } calculate_sum(targets.map {|line| line.split(' ')[1] }) else nil end end
get_by_pgid_osx(pgid)
click to toggle source
# File lib/autoload/kuroko2/memory_sampler.rb, line 37 def get_by_pgid_osx(pgid) output, _, status = Open3.capture3('ps', '-o' 'rss=', '-g', pgid.to_s) status.success? ? calculate_sum(output.split("\n")) : nil end
platform()
click to toggle source
# File lib/autoload/kuroko2/memory_sampler.rb, line 46 def platform RUBY_PLATFORM.downcase end