Detecting the number of processors with Ruby
July 11th, 2009
This post contains a cross platform Ruby method to return the total number of CPU cores. There are gems, such as facter, that will do the same thing and much more but if you just want a quick and dirty single purpose method this will probably suffice. The only tricky bit was picking the best way to do the determination in Windows. I ended up using a WMI approach described in Rick Minerich's There Counting Processors in .NET: The Pros and Cons of Five Different Methods post.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Returns the number of processor for Linux, OS X or Windows. def number_of_processors if RUBY_PLATFORM =~ /linux/ return `cat /proc/cpuinfo | grep processor | wc -l`.to_i elsif RUBY_PLATFORM =~ /darwin/ return `sysctl -n hw.logicalcpu`.to_i elsif RUBY_PLATFORM =~ /win32/ # this works for windows 2000 or greater require 'win32ole' wmi = WIN32OLE.connect("winmgmts://") wmi.ExecQuery("select * from Win32_ComputerSystem").each do |system| begin processors = system.NumberOfLogicalProcessors rescue processors = 0 end return [system.NumberOfProcessors, processors].max end end raise "can't determine 'number_of_processors' for '#{RUBY_PLATFORM}'" end |
Sorry, comments are closed for this article.