Linuxの/proc/cpuinfoからわかる情報メモ

Linuxの/proc/cpuinfoを初めてまともに読もうとしたのでメモを残しておきます。複数コアを搭載したCPUや、HT(ハイパースレッディング)により、論理プロセッサ数と物理CPU数が一致しないことがよくあります。cpuinfoを読み解いていけば、いずれも判別可能となるようです。

シンプルな構造

下記はあるサーバでcpuinfoを覗いた例です。キーワードはgrepにかけている通りです。まずは生で見てみるのも良いでしょう。コロン以降は私が説明を追記したものです。

# cat /proc/cpuinfo | grep -E "physical id|cpu cores|siblings|processor" | sort | uniq

cpu cores       : 4 ←1個の物理CPUに搭載されている"物理"コア数
physical id     : 0 ←物理CPU(1個目)
physical id     : 1 ←物理CPU(2個目)
processor       : 0 ←論理プロセッサ(=合計論理コア数:1個目)
processor       : 1 ←論理プロセッサ(=合計論理コア数:2個目)
processor       : 2 ←論理プロセッサ(=合計論理コア数:3個目)
processor       : 3 ←論理プロセッサ(=合計論理コア数:4個目)
processor       : 4 ←論理プロセッサ(=合計論理コア数:5個目)
processor       : 5 ←論理プロセッサ(=合計論理コア数:6個目)
processor       : 6 ←論理プロセッサ(=合計論理コア数:7個目)
processor       : 7 ←論理プロセッサ(=合計論理コア数:8個目)
siblings        : 4 ←1個の物理CPUに搭載されている"論理"コア数

上記を読み解くと、本サーバは物理CPUを2個搭載しており、CPUには1個あたり4個の物理コア(合計8個)搭載されていることがわかります。1コアを仮想的に2コアに見せるintelのHTが適用されないCPUであるため、物理コア=論理プロセッサとなっており、前述したとおりシンプルな構成となります。

模式図にしてみました。

シンプルなCPU

シンプルなCPU

HTが有効となっている構造

HTの環境を用意できなかったため、下記の実行結果は手で作りました。現状販売されているモデルでは、あり得ないと思います。また、不整合等あったら申し訳ないです。

# cat /proc/cpuinfo | grep -E "physical id|cpu cores|siblings|processor" | sort | uniq

cpu cores       : 1 ←1個の物理CPUに搭載されている"物理"コア数
physical id     : 0 ←物理CPU(1個目)
physical id     : 1 ←物理CPU(2個目)
processor       : 0 ←論理プロセッサ(=合計論理コア数:1個目)
processor       : 1 ←論理プロセッサ(=合計論理コア数:2個目)
processor       : 2 ←論理プロセッサ(=合計論理コア数:3個目)
processor       : 3 ←論理プロセッサ(=合計論理コア数:4個目)
siblings        : 2 ←1個の物理CPUに搭載されている"論理"コア数

物理CPUを2個搭載しており、CPUには1個あたり1個の物理コア(合計2個)が搭載されており、HTにより仮想的に2個の論理コア/プロセッサ(合計4個)となることがわかります。ポイントは、cpu coresとsiblingsの差に着目する点です。この場合、物理コア×2=論理プロセッサとなります。

HT有効モデル

HT有効モデル

コメントを残す

メールアドレスが公開されることはありません。