Module: Celluloid::Internals::CPUCounter
- Defined in:
- lib/celluloid/internals/cpu_counter.rb
Class Method Summary collapse
- .cores ⇒ Object
- .count_cores ⇒ Object
- .from_env ⇒ Object
- .from_java ⇒ Object
- .from_proc ⇒ Object
- .from_result(result) ⇒ Object
- .from_sysctl ⇒ Object
- .from_sysdev ⇒ Object
- .from_win32ole ⇒ Object
Class Method Details
.cores ⇒ Object
5 6 7 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 5 def cores @cores ||= count_cores end |
.count_cores ⇒ Object
11 12 13 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 11 def count_cores from_result(from_env || from_sysdev || from_java || from_proc || from_win32ole || from_sysctl) || 1 end |
.from_env ⇒ Object
15 16 17 18 19 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 15 def from_env result = ENV["NUMBER_OF_PROCESSORS"] result if result && !result.empty? rescue end |
.from_java ⇒ Object
32 33 34 35 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 32 def from_java Java::Java.lang.Runtime.getRuntime.availableProcessors if defined? Java::Java rescue end |
.from_proc ⇒ Object
37 38 39 40 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 37 def from_proc File.read("/proc/cpuinfo").scan(/^processor\s*:/).size if File.exist?("/proc/cpuinfo") rescue end |
.from_result(result) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 54 def from_result(result) if result i = Integer(result.to_s[/\d+/], 10) return i if i > 0 end rescue end |
.from_sysctl ⇒ Object
49 50 51 52 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 49 def from_sysctl Integer `sysctl -n hw.ncpu 2>/dev/null` rescue end |
.from_sysdev ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 21 def from_sysdev ::IO.read("/sys/devices/system/cpu/present").split("-").last.to_i + 1 rescue Errno::ENOENT begin result = Dir["/sys/devices/system/cpu/cpu*"].count { |n| n =~ /cpu\d+/ } result unless result.zero? rescue end rescue end |
.from_win32ole ⇒ Object
42 43 44 45 46 47 |
# File 'lib/celluloid/internals/cpu_counter.rb', line 42 def from_win32ole require "win32ole" WIN32OLE.connect("winmgmts://").ExecQuery("select * from Win32_ComputerSystem").NumberOfProcessors rescue LoadError rescue end |