class Mool::Cpu

Attributes

cores[RW]
cpu_name[RW]
gnice[RW]
guest[RW]
id[RW]
idle[RW]
iowait[RW]
irq[RW]
model_name[RW]
nice[RW]
soft[RW]
steal[RW]
sys[RW]
total[RW]
usr[RW]

Public Class Methods

all() click to toggle source
# File lib/mool/cpu.rb, line 82
def self.all
  Mool::Cpu.cpuinfo.map { |key, value| Mool::Cpu.new(key, value) }
end
cpuinfo() click to toggle source
# File lib/mool/cpu.rb, line 52
def self.cpuinfo
  cpu_info = {}

  mpstat = Mool::Command.mpstat.split("\n\n")[2].split("\n").map do |i|
    i.gsub(/^\S+:/, '').strip.split(/\s+/)
  end

  mpstat_vars = mpstat.shift
  mpstat_vars.shift

  mpstat.each do |data|
    res = {}
    core_name = data.shift
    data.each_with_index { |d, i| res.merge!(mpstat_vars[i] => d) }
    cpu_info.merge!(core_name => res)
  end

  Mool::Command.cpuinfo.gsub(/([^\n])\n([^\n])/,
                             '\1 \2').scan(/processor\t*: (\d+).*model name\t*: (.*) stepping.*cpu cores\t*: (\d+)/).each do |v|
    cpu_info[v[0]]['model_name'] = v[1]
    cpu_info[v[0]]['cpu_cores'] = v[2]
  end

  cpu_info
end
new(process_number, opt={}) click to toggle source
“all”, “1”, “2”
# File lib/mool/cpu.rb, line 20
def initialize(process_number, opt={})
  result = Mool::Cpu.processors

  unless result.include?(process_number.to_s)
    raise "Cpu name incorrect!. Posible values: #{result.join(', ')}"
  end

  result = opt.empty? ? Mool::Cpu.cpuinfo[process_number.to_s] : opt
  @cpu_name = "cpu_#{process_number}"
  @id         = process_number
  @model_name = result['model_name']
  @cores      = result['cpu_cores'].to_i
  @usr        = result['%usr'].to_f
  @nice       = result['%nice'].to_f
  @sys        = result['%sys'].to_f # This is kernel %
  @iowait     = result['%iowait'].to_f
  @irq        = result['%irq'].to_f
  @soft       = result['%soft'].to_f
  @steal      = result['%steal'].to_f
  @guest      = result['%guest'].to_f
  @gnice      = result['%gnice'].to_f
  @idle       = result['%idle'].to_f
  @total      = [@usr,
                 @nice,
                 @sys,
                 @iowait,
                 @irq,
                 @soft,
                 @steal,
                 @guest].sum
end
processors() click to toggle source
# File lib/mool/cpu.rb, line 78
def self.processors
  Mool::Command.cpuinfo.scan(/processor\t*: (\d+)/).flatten + ['all']
end