class Remon::Sysinfo
Public Class Methods
cores()
click to toggle source
# File lib/remon/sysinfo.rb, line 28 def self.cores @cores ||= cores_linux end
init()
click to toggle source
# File lib/remon/sysinfo.rb, line 8 def self.init puts "loading sysinfo" nproc cores normalized_cores instance_type ips end
instance_type()
click to toggle source
# File lib/remon/sysinfo.rb, line 17 def self.instance_type @instance_type ||= begin exitstatus, instance_type = safe_cmd 'curl -s -m2 169.254.169.254/latest/meta-data/instance-type', return_output: true exitstatus == 0 ? instance_type : "unknown" end end
ips()
click to toggle source
# File lib/remon/sysinfo.rb, line 40 def self.ips @ips ||= begin addr_infos = Socket.ip_address_list.select do |i| i.ip_address =~ /\A([0-9]{1,3}\.){3}[0-9]{1,3}\z/ end addr_infos.reject! { |i| i.ip_address == "127.0.0.1" } ips = addr_infos.map { |i| i.ip_address } end end
normalized_cores()
click to toggle source
# File lib/remon/sysinfo.rb, line 32 def self.normalized_cores @normalized_cores ||= begin cores = self.cores nproc = self.nproc (cores == nproc) ? cores : (cores + (nproc - cores)* 30.0/100) end end
nproc()
click to toggle source
# File lib/remon/sysinfo.rb, line 24 def self.nproc @nproc ||= `nproc`.chomp.strip.to_i end
Private Class Methods
cores_linux()
click to toggle source
# File lib/remon/sysinfo.rb, line 52 def self.cores_linux i = 0; File.read("/proc/cpuinfo").split(/\n\n/).inject({}) do |cores, p| physical_id = p[/physical id\s+:\s+(\d+)/, 1] core_id = p[/core id\s+:\s+(\d+)/, 1] if physical_id and core_id cores["#{physical_id}:#{core_id}"] = true elsif physical_id cores["#{physical_id}:"] = true else cores[i += 1] = true; end cores end.size end