share facebook facebook2 twitter menu hatena pocket slack

2014.05.05 MON

RubyでCPUのコア数を取得する

WRITTEN BY山口 与力

cloudpackヤマグチです。

Linuxであれば

%x(cat /proc/cpuinfo | grep processor).lines.size

とかで良いんですが、Linuxでしか動かなかったりイマイチ感あります。
そこでFacterです。システムに関する情報を使いやすくするためのGemです。見慣れない綴りなので間違いやすいのですが、FactorではなくFacterです。


gem install facter

使ってみましょう。「ruby cpu core count」でぐぐって最初に出てくるStackOverflowのスレではFacter.processorcountと書いてありますが、これはバージョンアップで削除されているのでNoMethodErrorです。

require “facter” Facter[“processorcount”].value.to_i # => 4

簡単ですね。valueで返ってくるのはStringな点に注意しましょう。

他にも例えばOS Xであれば以下のような使い方もできるようです。

Facter::Util::Macosx.hardware_overview
# =>
# {
# “SMC_version_system” => “2.16f58”,
# “boot_rom_version” => “MBP111.0138.B03”,
# “cpu_type” => “Intel Core i5”,
# “current_processor_speed” => “2.4 GHz”,
# “l2_cache_core” => “256 KB”,
# “l3_cache” => “3 MB”,
# “machine_model” => “MacBookPro11,1”,
# “machine_name” => “MacBook Pro”,
# “number_processors” => 2,
# “packages” => 1,
# “physical_memory” => “8 GB”,
# “platform_UUID” => “ZZZZZZ”,
# “serial_number” => “XXXXXX”
# }

Hyper-Threading関係で、使うメソッドによって出てくる数字が物理コア数だったり論理コア数だったりするようなのでその辺は留意ですね。

こちらの記事はなかの人(ヤマグチ)監修のもと掲載しています。
元記事は、こちら