top が cpuinfo とは異なるコア数を表示するのはなぜですか?

top が cpuinfo とは異なるコア数を表示するのはなぜですか?

top を実行すると、CPU 0-7 が表示されます。次のようにします。

cat /proc/cpuinfo | grep "cpu cores" | uniq

次のような結果になります:

cpu cores : 4

「physical id」をgrepすると、1になります。

私のコマンドが間違っていて、top が正しいのではないかと思います。これは VM ではなく、物理サーバー、RedHat です。何が間違っているのでしょうか?

これらが答えになるかはわかりません:

Linux でシステムのコア数を知るにはどうすればいいですか?

/proc/cpuinfo のプロセッサ数

編集: 物理 ID が 1 しか表示されない場合、マザーボードに物理チップが 1 つあるということになりますか?

編集: Intel(R) Xeon(R) CPU X5560 @ 2.80GHz ですが、物理 ID は 1 で、0 になると思っていましたが、cpuinfo には物理 ID 0 がありません。

編集: 重要であれば、コア数を 0.5 にするライセンスを検討しています。

答え1

X5560はシングルチップ次のようになります。

ここに画像の説明を入力してください

grep "physical id"物理プロセッサが 1 つインストールされていることを示しています。

ヒートスプレッダーを上から外すと、これが見えます。単一の物理的な死ぬ(下向き) :

ここに画像の説明を入力してください

そのサイコロを取り外して裏返すと、次のようになります。

ここに画像の説明を入力してください

その一つの物理的なサイコロには4つの物理CPUコアシリコン上に構築:

ここに画像の説明を入力してください

grep "cpu cores"プロセッサに 4 つの物理コアが組み込まれていることを示しています。

各コアは、浮動小数点ユニット、複数の整数実行ユニット、一対のレジスタ スタック、および各コアが 2 つの独立した命令ストリーム (スレッド) を同時に効率的に実行できるようにするその他の機能を備えた単一のプロセッサです。

ここに画像の説明を入力してください

topこれは、コンピューター上のすべてのプロセッサとコアが、総合的に、一度に 8 つの独立したワークフローを実行できることを示しています。つまり、オペレーティング システムが、任意の時点で 8 つの同時スレッドの実行をスケジュールできることを示しています。

答え2

使用している CPU は何ですか? 物理コアあたりのスレッド数はいくつですか?

cat /proc/cpuinfo物理コアの数が表示され、top存在するスレッドの合計数も表示されます。

あなたの CPU には 4 つの物理コアと、物理コアごとに 2 つの論理コアがあると思います。つまり、top8 と表示されます。

さらに、 の内容は/proc/cpuinfo実装に多少依存します。ルート化された Android シェルと同様に、cpuinfoファイルには用語は含まれませんcpu cores

ただし、cpuinfo各スレッドは という名前でprocessor : X、 はXスレッド番号です。したがって、最後のスレッド番号は出力と同じになりますtop/htop

の結果はnproc --alltop/htop

答え3

top論理 CPU ごとに 1 つの「CPU」が表示されます。x86 では、これはシステム内のソケット数、ソケットあたりの物理コア数、コアあたりのスレッド数の積になります。

のエントリcpu cores/proc/cpuinfo、x86 の場合も物理コアの数を示します。 で使用されている論理コアの数を確認するにはtop、代わりに次の値を確認する必要がありますsiblings

cat /proc/cpuinfo | grep "siblings" | uniq

これについては、カーネルドキュメント

lscpuインストールされている CPU に関する情報を提供します。これは、より理解しやすいものです/proc/cpuinfo(または、同じ情報をよりシンプルな方法で提示します)。

答え4

cpuinfo は実際のコアを表示しますが、htop/top はコアとスレッドの両方をコアとして表示します。おそらく 4 つのコアと 4 つのスレッドがあるのでしょう。

関連情報