LinuxでCPUの搭載数を調べる
LinuxマシンでCPUの搭載数を調べるには、以下のコマンドを実行する。
$ cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
processor : 2
processor : 3
Hyper-Threading(ハイパースレッディング 以下HT)が有効になっているという前提
で言うと、上記のように0〜1まで4つ並んでいたら、物理的なCPUは2つ。
HTによりOS上では仮想的に4つに見えていることになる。
HTがOFFのマシンであれば、表示された数がそのままのCPU数と捉えてよいと思われる。
以下のように0,1と2つの表示だったら物理CPUは2つ。
processor : 0
processor : 1
ちなみにHTはIntel社の商標で、乱暴に言うとプロセッサコアの仮想化技術。
例えば、1つのプロセッサコアを論理的に2つに見せかけることができる。
[HT採用の確認]
HTを採用しているかどうかはを確認するのは、ちょっと一筋縄ではいかないようだ。
例えば $ cat /proc/cpuinfo で physical id,siblings の2つの項目があるかどうかを確認する、
という方法があるらしいのだが、実行結果ではHTがOFFのマシンでもこのふたつの項目は存在した。
それと、$ cat /proc/cpuinfo | grep flags の表示で “ht”というのが存在するか。
これも、”ht” があるからといってHTの機能が有効というわけではなく、あくまでOSとして
HTをサポートしているだけ、ということらしい。
コマンドだけで確認するのにてっとり早いのは、例えば
$ cat /proc/cpuinfo | grep processor の結果で、processor :0,1,2,3と並んでいたら、
それぞれのphysical idを確認してみる。
processor :0,1のphysical idが同一であれば、物理的にひとつのCPUとして
捉えることができる(てっとり早いといっておきながら、なんだか書いててややこしいなぁ….)。
HTが有効で物理cpuが2つ、仮想cpu4つの場合、表示例はこんな感じ。
$ cat /proc/cpuinfo | grep “physical id”
physical id : 0
physical id : 0
physical id : 3
physical id : 3
あとは、該当するマシンのプロセッサナンバーをIntelのサイトで確認すれば、
HTが有効かどうかわかる。プロセッサナンバーを調べるには、以下を実行。
$ cat /proc/cpuinfo | grep “model name”
ただ、プロセッサの種類によって他のページもいろいろあるので環境に合わせてご確認を。
それに、上記のコマンドでもマシンによってはプロセッサナンバーに相当するものが表示
されなかたりするんだよねぇ(泣…って、泣くこともないか)
うーむ、「絶対コレ!」というのはないように思えてきた。
ケースバイケースで、手探りで調査するのがよいのでしょう。
追記:cpuがIntel製である、という前提で書いてマス…
追記2:HT採用かどうか確認できるIntelのサイトのページにリンクを貼っていたのだけど、
リンク切れになっていた…トホー。(2009/07/03)
訪問してくれた方、スミマセン。探したけど同じ内容のページは現在ない様子。
以下は、HTかどうかは確認できないけど、プロセッサー・ナンバーに対応したコア数
なら分かるよ…(名プロセッサモデルの画像リンクをクリック→仕様タブをクリック)
インテル® サーバー向けプロセッサー
関連記事
dmidecodeでハードウェアの情報を取得する
lspciでPCIバスデバイスの情報を確認する
scsi_infoでSCSIデバイスの情報を確認する
Linuxにおけるudev、hald、lsusbなど
Linux関連記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index