Ruby で物理コアと論理コアの数を確認する方法
Ruby の concurrent-ruby という gem を使って, 現在の PC の物理コアと論理コアの数を確認する方法を紹介します.
この記事のサンプルコードは次の環境での動作を確認しております:
- macOS –
10.13.6 - Ruby –
2.5.1 - RubyGem
concurrent-ruby–1.0.5
インストール
RubyGem の concurrent-ruby を使って確認するので, インストールしていない場合, インストールする必要があります:
gem install concurrent-ruby
concurrent-ruby は activesupport の依存関係にあり, activesupport は rails の依存関係にあるので, Rails をインストールしている人は, 自動的に concurrent-ruby をインストールしていることになります:
$ gem dependency -r /^rails$/ | grep activesupport
activesupport (= 5.2.1)
$ gem dependency -r /^activesupport$/ | grep concurrent-ruby
concurrent-ruby (>= 1.0.2, ~> 1.0)
インストールの確認は次のコマンドで確認できます:
$ gem list -el concurrent-ruby
*** LOCAL GEMS ***
concurrent-ruby (1.0.5)
*** LOCAL GEMS *** の下に concurrent-ruby と表示されれば, インストールされていると確認できます.
確認
物理コア数は Concurrent.physical_processor_count, 論理コア数は Concurrent.processor_count でそれぞれ確認できます:
require 'concurrent'
Concurrent.physical_processor_count # => 4
Concurrent.processor_count # => 8
僕の MacBook Pro の場合, 物理コア数は 4 で, 論理コア数は 8 と確認できました.
その CPU の製品名は i7-4770HQ と次のコマンドで確認しましたので:
$ sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
Intel の i7-4770HQ の仕様書に書かれている “# of Cores” と “# of Threads” の数とも一致しますね.
まとめ
concurrent-ruby は公式レポジトリに書かれているように, Erlang, Clojure, Scala, Haskell, F#, C#, Java といったプログラミング言語とクラシックな並行性パターンから着想を得た Ruby の為のモダンな並行性ツールです.
なので, そもそも並行処理を行う為の gem で, その並行処理の付加的なメソッドとして物理コアと論理コアの数を取得するメソッドが実装されています.
関連記事
Bundler をシングルファイル Ruby スクリプトで使う方法2018.04.23
Ruby のクラスやメソッドのドキュメントを見れる ri コマンドが便利な件2018.09.08
Ruby の正規表現を備忘録としてまとめてみた2018.08.30
macOS で Mouse Keys を使ってキーボードでポインタを操作する方法2018.07.11
Homebrew で macOS に GNU コマンドをインストールする2018.07.25