Linux : CPUのコア数の確認方法

今回はCPUのコア数の確認方法について。


CPUの情報は/proc/cpuinfoに書かれている。

$ cat /proc/cpuinfo

で、これどう読むの?ってところで以下のサイトが参考になった。
http://d.hatena.ne.jp/kakurasan/20110117/p1#h-20110117p1-2
ただ、いつもコア数の話になると物理コアとか論理コアとかハイパースレッディングがどうだとか色々混乱するので
自分なりにまとめておく。


まとめ
physical id : 物理CPUの場所を指す
core id : 同一物理CPU内にある物理コアの番号
cpu cores : 同一物理CPU内の物理コアの合計
processor : 同一物理CPU内における論理プロセッサの番号


実際に自分のLinux環境で確認してみる。

物理CPUの数

$ cat /proc/cpuinfo | grep "physical id" | uniq
physical id	: 0

physical idが1つ(idが0のみ)なので物理CPUは1つ


論理プロセッサの数

$ cat /proc/cpuinfo | grep "processor"
processor	: 0
processor	: 1
processor	: 2
processor	: 3
processor	: 4
processor	: 5
processor	: 6
processor	: 7

論理プロセッサの数は8つ

物理コアの数

$ cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores	: 4

コアの数は4つ


ここまでで、

  • 物理CPUが一つ
  • 論理プロセッサの数は8つ
  • コア数は4つ

であることがわかった。

ここでコア数と論理プロセッサの数に着目すると
プロセッサの数とコア数が等しくない。
このことから、ハイパースレッディング・テクノロジーが有効になっている。
その証拠に、以下、core idを確認すると各idごとに2個ある。

$ cat /proc/cpuinfo | grep "core id" | sort | uniq -c
   2 core id		: 0
   2 core id		: 1
   2 core id		: 2
   2 core id		: 3

ハイパースレッディング・テクノロジーの詳細についてはぐぐってもらうとして、
ざっくりと一つのコアで複数のプロセッサを実現する仕組みのようである(適当)。


で、ここまで書いてきてあれだが
普通に下記のドキュメントにコマンドも説明も詳しく書いてあった。。。
https://access.redhat.com/ja/node/2159401