class Silw::Plugins::Cpu
Constants
- CpuStats
Attributes
cpu_stats[RW]
Public Instance Methods
get_stat(remote, opts={})
click to toggle source
# File lib/silw/plugins/cpu.rb, line 48 def get_stat(remote, opts={}) Net::SFTP.start(remote, @username, :keys => @pub_key ) do |scp| return scp.download!('/proc/stat').split('\n').first end end
parse_stats(cpu_at_t0, cpu_at_t1)
click to toggle source
# File lib/silw/plugins/cpu.rb, line 38 def parse_stats(cpu_at_t0, cpu_at_t1) cpu0 = proc_stat_struct cpu_at_t0 cpu1 = proc_stat_struct cpu_at_t1 idle = cpu1.idle - cpu0.idle total = cpu1.total - cpu0.total usage = total - idle # {:cpu_usage => ("%.1f%%" % (100.0 * usage / total))} {:usage => (100.0 * usage / total).round} end
run(args)
click to toggle source
# File lib/silw/plugins/cpu.rb, line 16 def run(args) host = args[:at] if fixture_cpu_at_t0 = args[:fixture_cpu_at_t0] and fixture_cpu_at_t1 = args[:fixture_cpu_at_t1] cpu_stats = parse_stats File.read(fixture_cpu_at_t0), File.read(fixture_cpu_at_t1) else cpu_at_t0 = get_stat(host) sleep 0.5 cpu_at_t1 = get_stat(host) cpu_stats = parse_stats cpu_at_t0, cpu_at_t1 end {:host => host, :cpu => cpu_stats} end
Private Instance Methods
proc_stat_struct(cpu_times)
click to toggle source
# File lib/silw/plugins/cpu.rb, line 32 def proc_stat_struct(cpu_times) parts = cpu_times.split(/\n/).first.split times = parts[1..-1].map(&:to_i) CpuStats[*times].tap {|r| r[:total] = times.reduce(:+)} end