Method: CPU.processors
- Defined in:
- lib/cpu.rb
.processors ⇒ Object Also known as: to_a
Return an array of all Processor instances for this machine.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/cpu.rb', line 41 def processors cpu_cores = {} cpuinfos = File.read('/proc/cpuinfo').chomp.split(/^$/) processor_ids = cpuinfos.map { |l| l[/processor\s*:\s*(\d+)/, 1].to_i rescue nil } core_ids = cpuinfos.map { |l| l[/core id\s*:\s*(\d+)/, 1].to_i rescue nil } processor_ids.zip(core_ids) do |processor_id, core_id| cpu_cores[processor_id] = core_id end processors = Dir.open('/dev/cpu').inject([]) do |ps, processor_id| processor_id =~ /\A\d+\Z/ or next ps ps << processor_id.to_i end processors.extend Tins::UniqBy processors.sort! @num_processors = processors.size @num_cores = cpu_cores.invert.size processors.map! do |processor_id| Processor.new(processor_id, cpu_cores[processor_id]) end end |