class Facter::Processors::Linux

Public Instance Methods

get_physical_processor_count() click to toggle source
# File lib/facter/processors/os.rb, line 75
def get_physical_processor_count
  if count = count_physical_cpu_from_sysfs
    count
  else
    count_physical_cpu_from_cpuinfo
  end
end

Private Instance Methods

count_physical_cpu_from_cpuinfo() click to toggle source
# File lib/facter/processors/os.rb, line 95
def count_physical_cpu_from_cpuinfo
  str = Facter::Core::Execution.exec("grep 'physical.\+:' /proc/cpuinfo")
  if str
    str.scan(/\d+/).uniq.size
  else
    nil
  end
end
count_physical_cpu_from_sysfs() click to toggle source
# File lib/facter/processors/os.rb, line 85
def count_physical_cpu_from_sysfs
  sysfs_cpu_directory = "/sys/devices/system/cpu"
  if File.exists?(sysfs_cpu_directory)
    lookup_pattern = "#{sysfs_cpu_directory}" + "/cpu*/topology/physical_package_id"
    Dir.glob(lookup_pattern).collect { |f| Facter::Core::Execution.exec("cat #{f}")}.uniq.size
  else
    nil
  end
end