Topを実行すると、CPU 0〜7が表示されます。私がする時:
cat /proc/cpuinfo | grep "cpu cores" | uniq
私は得ます:
cpu cores : 4
「物理ID」をgrepすると、1になります。
私のコマンドは間違っていて、トップは正しいと思います。これはVMではなく、物理サーバー、RedHatではありません。何が問題なのですか?
私はこれらがそれに答えるかはわかりません:
編集:私はその物理IDを修正しますが、1しか表示されない場合、マザーボードに1つの物理チップがありますか?
編集:これはIntel(R)Xeon(R)CPU X5560 @ 2.80GHzですが、物理IDは1であり、0になると思っていましたが、cpuinfoに物理ID 0がありません。
編集:それが重要な場合、私は彼らがどこでコアライセンスを行うかについてライセンスを把握しようとしています。
どのCPUを使用していますか?物理コアごとにいくつのスレッドが存在しますか?
cat /proc/cpuinfo
は物理コアの数を示し、top
は存在するスレッドの総数を示します。
CPUには4つの物理コアと、物理コアごとに2つの論理コアがあると思います。つまり、top
は8を示しています。
さらに、/proc/cpuinfo
の内容は、実装によって多少異なります。 rootのようにAndroid Shellの場合、cpuinfo
ファイルにはcpu cores
という用語が含まれていません。
ただし、cpuinfo
では、各スレッドの名前はprocessor : X
です。ここで、X
はスレッド番号です。したがって、最後のスレッドはtop/htop
出力と同じではありません。
nproc --all
の結果もtop/htop
と一致する必要があります
X5560はシングルチップです。次のようになります。
grep "physical id"
は、1つの物理プロセッサがインストールされていることを示しています。
ヒートスプレッダーを上部から外すと、これを確認できます-単一の物理的なdie(下向き):
そのダイを取り外して裏返すと、次のようになります。
その単一の物理ダイには、4つの物理CPUコアがシリコン上に構築されています。
grep "cpu cores"
は、プロセッサに4つの物理コアが組み込まれていることを示しています。
各コアは、浮動小数点ユニット、多数の整数実行ユニット、レジスタスタックのペア、および各シングルコアが同時に2つの独立した命令ストリーム(スレッド)を効果的に実行できるようにするいくつかのウィザードを備えたシングルプロセッサです。
top
は、コンピューター上のすべてのプロセッサとコアをまとめて一度に8つの独立したワークフローで実行できることを示しています。これは、オペレーティングシステムが同時に8つの同時実行スレッドをスケジュールできることを示しています。 。
top
は、論理CPUごとに1つの「CPU」を示します。 x86では、これは、システム内のソケット数、ソケットあたりの物理コア数、コアあたりのスレッド数の積です。
cpu cores
の/proc/cpuinfo
エントリは、x86でも、物理コアの数を示しています。 top
で使用される論理コアの数を見つけるには、代わりにsiblings
値を確認する必要があります。
cat /proc/cpuinfo | grep "siblings" | uniq
これは カーネルのドキュメント で詳しく説明されています。
lscpu
は、インストールされたCPUに関する情報を提供します。これは、/proc/cpuinfo
よりも理解しやすくなっています(または、同じ情報をより簡単に表示します)。
おそらく、「クアッドコア」CPUであるCPUが1つあり、ハイパースレッディングが有効になっているため、各物理コアはOSに(カーネルに対して)2つのlogicalコアとして表示され、2つのコアを持つことができます。同じ物理コアに同時に割り当てられたスレッド。
ここで確実に理解するための重要な用語は次のとおりです。CPU、または物理チップ、または「ダイ」(「ソケット」に関連)。次に、物理コア。次に、「プロセス」と「スレッド」を把握していることを確認してください。次に、「ハイパースレッディング」と「論理コア」をクリアします。
私はこれを非常にうまくクリアするリサ2017での講演に出席しました。その話のスライド オンラインで利用可能 ですが、もちろん実際には話せませんできるだけ多く(話された部分がないため)。
cpuinfoは実際のコアを表示しますが、htop/topはコアとスレッドの両方をコアとして表示します。おそらく4つのコアと4つのスレッドがあるためです。