module Celluloid::CPUCounter

Public Class Methods

cores() click to toggle source
# File lib/celluloid/cpu_counter.rb, line 4
def cores
  @cores ||= count_cores
end

Private Class Methods

count_cores() click to toggle source
# File lib/celluloid/cpu_counter.rb, line 10
def count_cores
  result = from_env || from_sysdev || from_sysctl
  Integer(result.to_s[/\d+/], 10) if result
end
from_env() click to toggle source
# File lib/celluloid/cpu_counter.rb, line 15
def from_env
  result = ENV['NUMBER_OF_PROCESSORS']
  result if result
end
from_sysctl() click to toggle source
# File lib/celluloid/cpu_counter.rb, line 27
def from_sysctl
  result = %x`sysctl -n hw.ncpu`
  result if $?.success?
rescue Errno::ENOENT
end
from_sysdev() click to toggle source
# File lib/celluloid/cpu_counter.rb, line 20
def from_sysdev
  ::IO.read('/sys/devices/system/cpu/present').split('-').last.to_i + 1
rescue Errno::ENOENT
  result = Dir['/sys/devices/system/cpu/cpu*'].count { |n| n =~ /cpu\d+/ }
  result unless result.zero?
end