| Server IP : 77.68.64.21 / Your IP : 216.73.217.59 Web Server : Apache System : Linux hp3-wp-1011352.hostingp3.local 3.10.0-1160.144.1.el7.tuxcare.els9.x86_64 #1 SMP Fri Jul 10 17:06:31 UTC 2026 x86_64 User : csh2516497 ( 2094697) PHP Version : 8.3.30 Disable Function : shell_exec,exec,system,popen,set_time_limit MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/ruby/vendor_ruby/facter/processors/ |
Upload File : |
# Processor OS classes
#
# Implements processor data collection with the help
# of the Util::Processor module.
require 'facter/util/processor'
require 'facter/util/posix'
module Facter
module Processors
def self.implementation(kernel = Facter.value(:kernel))
case kernel
when "Linux"
Facter::Processors::Linux.new
when "GNU/kFreeBSD"
Facter::Processors::GNU.new
when "Darwin"
Facter::Processors::Darwin.new
when "AIX"
Facter::Processors::AIX.new
when "HP-UX"
Facter::Processors::HP_UX.new
when "DragonFly", "FreeBSD"
Facter::Processors::BSD.new
when "OpenBSD"
Facter::Processors::OpenBSD.new
when "SunOS"
Facter::Processors::SunOS.new
when "windows"
Facter::Processors::Windows.new
end
end
class Base
def get_processor_list
Facter::Util::Processor.enum_cpuinfo
end
def get_processor_count
get_processor_list.length
end
def get_physical_processor_count
nil
end
def get_processor_speed
nil
end
end
class GNU < Base
def get_processor_count
processor_list = get_processor_list
if processor_list.length != 0
processor_list.length
else
count_cpu_from_sysfs
end
end
private
def count_cpu_from_sysfs
sysfs_cpu_directory = "/sys/devices/system/cpu"
if File.exists?(sysfs_cpu_directory)
lookup_pattern = "#{sysfs_cpu_directory}" + "/cpu[0-9]*"
Dir.glob(lookup_pattern).length
end
end
end
class Linux < GNU
def get_physical_processor_count
if count = count_physical_cpu_from_sysfs
count
else
count_physical_cpu_from_cpuinfo
end
end
private
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
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
end
class Windows < Base
def initialize
require 'facter/util/wmi'
end
def get_processor_list
processor_list = []
# get each physical processor
Facter::Util::WMI.execquery("select * from Win32_Processor").each do |proc|
# not supported before 2008
if proc.ole_respond_to?(:NumberOfLogicalProcessors)
processor_num = proc.NumberOfLogicalProcessors
else
processor_num = 1
end
processor_num.times do |i|
processor_list << proc.Name.squeeze(" ")
end
end
processor_list
end
def get_physical_processor_count
Facter::Util::WMI.execquery("select Name from Win32_Processor").Count
end
end
class AIX < Base
def get_processor_list
Facter::Util::Processor.aix_processor_list
end
end
class HP_UX < Base
def get_processor_list
Facter::Util::Processor.hpux_processor_list
end
end
class Darwin < Base
def initialize
require "cfpropertylist"
@system_hardware_data = query_system_profiler
end
def get_processor_count
Facter::Util::POSIX.sysctl("hw.ncpu").to_i
end
def get_processor_speed
@system_hardware_data["current_processor_speed"]
end
private
def query_system_profiler
output = Facter::Core::Execution.exec("/usr/sbin/system_profiler -xml SPHardwareDataType 2>/dev/null")
plist = CFPropertyList::List.new
plist.load_str(output)
parsed_xml = CFPropertyList.native_types(plist.value)
parsed_xml[0]['_items'][0]
end
end
class BSD < Base
def get_processor_count
Facter::Util::POSIX.sysctl("hw.ncpu").to_i
end
end
class OpenBSD < BSD
def get_physical_processor_count
Facter::Util::POSIX.sysctl("hw.ncpufound").to_i
end
def get_processor_speed
speed = Facter::Util::POSIX.sysctl("hw.cpuspeed").to_i
if speed < 1000
"#{speed} MHz"
else
speed = speed.to_f / 1000
"#{(speed * 100).round.to_f / 100.0} GHz"
end
end
end
class SunOS < Base
def initialize
kernelrelease = Facter.value(:kernelrelease)
@major_version = kernelrelease.split(".")[0].to_i
@minor_version = kernelrelease.split(".")[1].to_i
end
def get_processor_list
Facter::Util::Processor.enum_kstat
end
def get_processor_count
if @major_version < 5 or (@major_version == 5 and @minor_version < 8)
if count = count_cpu_with_kstat
count
else
count_cpu_with_psrinfo
end
else
count_cpu_with_psrinfo
end
end
def get_physical_processor_count
if @major_version > 5 or (@major_version == 5 and @minor_version >= 8)
if output = Facter::Core::Execution.exec("/usr/sbin/psrinfo -p")
output.to_i
end
else
count_cpu_with_psrinfo
end
end
private
def count_cpu_with_kstat
if output = Facter::Core::Execution.exec("/usr/bin/kstat cpu_info")
output.scan(/\bcore_id\b\s+\d+/).uniq.length
else
nil
end
end
def count_cpu_with_psrinfo
if output = Facter::Core::Execution.exec("/usr/sbin/psrinfo")
output.split("\n").length
else
nil
end
end
end
end
end