code: def physical_processor_count
        @physical_processor_count ||= begin
          ppc = case RbConfig::CONFIG["target_os"]
          when /darwin1/
            IO.popen("/usr/sbin/sysctl -n hw.physicalcpu").read.to_i
          when /linux/
            cores = {}  # unique physical ID / core ID combinations
            phy = 0
            IO.read("/proc/cpuinfo").scan(/^physical id.*|^core id.*/) do |ln|
              if ln.start_with?("physical")
                phy = ln[/\d+/]
              elsif ln.start_with?("core")
                cid = phy + ":" + ln[/\d+/]
                cores[cid] = true if not cores[cid]
              end
            end
            cores.count
          when /mswin|mingw/
            require 'win32ole'
            result_set = WIN32OLE.connect("winmgmts://").ExecQuery(
              "select NumberOfCores from Win32_Processor")
            result_set.to_enum.collect(&:NumberOfCores).reduce(:+)
          else
            processor_count
          end
          # fall back to logical count if physical info is invalid
          ppc > 0 ? ppc : processor_count
        end
      end
docs: Number of physical processor cores on the current system.