Warum zeigt top eine andere Anzahl an Kernen an als cpuinfo?

Warum zeigt top eine andere Anzahl an Kernen an als cpuinfo?

Wenn ich top ausführe, wird CPU 0-7 angezeigt. Wenn ich das tue:

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

Ich bekomme:

cpu cores : 4

Wenn ich „physische ID“ grepe, habe ich 1.

Ich denke, mein Befehl ist falsch und top ist richtig. Dies ist keine VM, sondern ein physischer Server, RedHat. Was mache ich falsch?

Ich bin nicht sicher, ob diese die Antwort sind:

Wie kann man die Anzahl der Kerne eines Systems unter Linux ermitteln?

Anzahl der Prozessoren in /proc/cpuinfo

Bearbeiten: Habe ich Recht, dass ich, wenn die physische ID nur 1 anzeigt, einen physischen Chip auf der Hauptplatine habe?

Bearbeiten: Es handelt sich um eine Intel(R) Xeon(R) CPU X5560 @ 2,80 GHz, aber die physische ID ist 1, und ich dachte, sie wäre 0, aber in CPUinfo gibt es keine physische ID 0.

Bearbeiten: Falls es wichtig ist, versuche ich herauszufinden, wo die Lizenzierung die Kernanzahl um das Fünffache reduziert.

Antwort1

Der X5560 ist ein einzelnerChip. Es sieht aus wie das:

Bildbeschreibung hier eingeben

grep "physical id"teilt Ihnen mit, dass Sie EINEN physischen Prozessor installiert haben.

Wenn Sie den Wärmeverteiler von oben abnehmen, können Sie Folgendes sehen - eine einzelne physikalischesterben(mit der Vorderseite nach unten):

Bildbeschreibung hier eingeben

Wenn Sie den Würfel herausnehmen und umdrehen könnten, sähe er folgendermaßen aus:

Bildbeschreibung hier eingeben

Auf diesem einzelnen physischen Würfel befinden sich vierphysische CPU-Kerneauf dem Silizium aufgebaut:

Bildbeschreibung hier eingeben

grep "cpu cores"sagt Ihnen, dass Ihr Prozessor über vier integrierte physische Kerne verfügt.

Jeder Kern ist ein einzelner Prozessor mit einer Gleitkommaeinheit, einer Anzahl von Ganzzahl-Ausführungseinheiten, einem Paar Registerstapel und einigen weiteren technischen Finessen, die es jedem einzelnen Kern ermöglichen, effektiv zwei unabhängige Befehlsströme (Threads) gleichzeitig auszuführen.

Bildbeschreibung hier eingeben

topbedeutet, dass alle Prozessoren und Kerne Ihres Computers gemeinsam acht unabhängige Arbeitsabläufe gleichzeitig ausführen können. Es bedeutet, dass das Betriebssystem in der Lage ist, zu jedem beliebigen Zeitpunkt acht gleichzeitige Threads für die Ausführung einzuplanen.

Antwort2

Welche CPU verwenden Sie? Wie viele Threads sind pro physischem Kern vorhanden?

cat /proc/cpuinfozeigt die Anzahl der physischen Kerne an, währendtop Gesamtzahl der vorhandenen Threads an.

Ich glaube, Ihre CPU hat 4 physische Kerne und 2 logische Kerne pro physischem Kern. Es ist alsotop 8 angezeigt.

Darüber hinaus ist der Inhalt von /proc/cpuinfoetwas implementierungsabhängig. Wie in der gerooteten Android-Shell cpuinfoenthält die Datei keinen Begriffcpu cores .

cpuinfoJeder Thread wird jedoch wie folgt benannt processor : X: Wo Xist die Thread-Nr. Die letzte Thread-Nr. muss also dieselbe sein wietop/htop der Ausgabe identisch sein.

Das Ergebnis nproc --allmuss auch im Einklang stehen mittop/htop

Antwort3

topzeigt eine „CPU“ pro logischer CPU; auf x86 ist das das Produkt aus der Anzahl der Sockets im System, der Anzahl der physischen Kerne pro Socket und der Anzahl der Threads pro Kern.

Der cpu coresEintrag in /proc/cpuinfozeigt, ebenfalls auf x86, die Anzahl der physischen Kerne. Um die Anzahl der logischen Kerne zu finden, wie in verwendet top, sollten Sie stattdessen den siblingsWert betrachten:

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

Eine ausführliche Beschreibung finden Sie imKernel-Dokumentation.

lscpuBietet leichter verständliche Informationen zu den installierten CPUs /proc/cpuinfo(oder stellt vielmehr dieselben Informationen in einfacherer Form dar).

Antwort4

cpuinfo zeigt die tatsächlichen Kerne an, während htop/top sowohl Kerne als auch Threads als Kerne anzeigt. Aus diesem Grund haben Sie höchstwahrscheinlich 4 Kerne und 4 Threads.

verwandte Informationen