Warum zeigt top eine andere Anzahl von Kernen als cpuinfo?

8

Wenn ich oben laufe, zeige ich CPU 0-7. Wenn ich es tue:

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

Ich bekomme:

cpu cores : 4

Wenn ich "physische ID" grep, habe ich 1.

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

Ich bin nicht sicher, ob diese darauf antworten:

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

Anzahl der Prozessoren in / proc / cpuinfo

Bearbeiten: Korrigiere ich diese physische ID, wenn nur 1 angezeigt wird, habe ich einen physischen Chip im Motherboard?

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

Bearbeiten: Wenn es darauf ankommt, versuche ich herauszufinden, wo die Lizenzierung erfolgt .5 die Kernanzahl.

Johnny
quelle

Antworten:

14

Welche CPU benutzt du? Wie viele Threads pro physischem Kern vorhanden?

cat /proc/cpuinfoZeigt die Anzahl der physischen Kerne an, während topdie Gesamtzahl der vorhandenen Threads angezeigt wird.

Ich denke, Ihre CPU hat 4 physische Kern und 2 logische Kern pro physischem Kern. Es topzeigt also 8.

Darüber hinaus ist der Inhalt von /proc/cpuinfoetwas implementierungsabhängig. Wie in der verwurzelten Android-Shell enthält die cpuinfoDatei keinen Begriff cpu cores.

In cpuinfojedem Thread heißt er jedoch processor : X: Wo Xist Thread-Nr. Der letzte Thread Nr. Soll also mit der top/htopAusgabe identisch sein .

Das Ergebnis von nproc --allmuss auch mit übereinstimmentop/htop

Abhik Bose
quelle
Was bedeutet 8 hier?
Johnny
1
8 bedeutet Gesamtzahl der Fäden, markiert von 0-7. top/htopzählt threadsals Kern
Abhik Bose
Aber wie viele physische Chips habe ich? Wie viele Chips sehe ich, wenn ich die Box öffne? Ich habe eine physikalische ID von 1, aber das lässt mich denken, dass es tatsächlich zwei Chips gibt, weil ich dachte, es wäre Null.
Johnny
2
thedaneshproject.com/posts/… dies erklärt gut, wie man die Anzahl von zählt core, threadundphysical cpu
Abhik Bose
Ich habe das vor dem Posten benutzt. Aber ich habe physische ID 1.
Johnny
16

Der X5560 ist ein einzelner Chip . Es sieht aus wie das:

Geben Sie hier die Bildbeschreibung ein

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

Wenn Sie den Wärmeverteiler von der Oberseite abnehmen, können Sie dies sehen - einen einzelnen physischen Würfel (verdeckt):

Geben Sie hier die Bildbeschreibung ein

Wenn Sie diesen Würfel entfernen und umdrehen könnten, würde er folgendermaßen aussehen:

Geben Sie hier die Bildbeschreibung ein

Auf diesem einzelnen physischen Chip befinden sich vier physische CPU-Kerne, die auf dem Silizium aufgebaut sind:

Geben Sie hier die Bildbeschreibung ein

grep "cpu cores" sagt Ihnen, dass auf Ihrem Prozessor vier physische Kerne aufgebaut sind.

Jeder Kern ist ein einzelner Prozessor mit einer Gleitkommaeinheit, einer Anzahl von ganzzahligen Ausführungseinheiten, einem Paar von Registerstapeln und einer anderen Zauberei, die es jedem einzelnen Kern ermöglicht, zwei unabhängige Befehlsströme (Threads) gleichzeitig effektiv auszuführen.

Geben Sie hier die Bildbeschreibung ein

top sagt Ihnen, dass alle Prozessoren und Kerne auf Ihrem Computer zusammen acht unabhängige Workflows gleichzeitig ausführen können - es sagt Ihnen, dass das Betriebssystem acht gleichzeitige Threads für die Ausführung zu einem bestimmten Zeitpunkt planen kann.

J ...
quelle
Vielen Dank. Ich schätze deine Zeit dafür sehr. Hilft mir sehr.
Johnny
Warum sind es aus Neugier zwei Fäden? Wie bekommen sie zwei? Warum nicht vier oder fünf, so albern das klingt?
Johnny
2
@johnny Die meisten CPUs waren die meiste Zeit ein Chip, ein Kern, ein Thread. Im Laufe der Zeit stellten die Ingenieure fest, dass einige Teile eines Kerns viel Zeit im Leerlauf verbringen, während sie darauf warten, dass andere Teile ihre Arbeit beenden. Hyperthreading ist eine relativ neue Technologie, die dem Kern einige zusätzliche Bits hinzufügt, damit mehr dieser zuvor inaktiven Teile die meiste Zeit meistens beschäftigt bleiben, indem sie einer separaten unabhängigen Arbeitslast zugeführt werden. Es verdoppelt nicht die Leistung eines Kerns, aber es ermöglicht ihm, ungefähr 30% mehr Arbeit zu erledigen, als es sonst tun würde, so dass das Geld dort bei zwei stoppt.
J ...
7

topzeigt eine "CPU" pro logischer CPU; Unter x86 ergibt sich 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/cpuinfo, ebenfalls auf x86, zeigt die Anzahl der physischen Kerne. Um die Anzahl der logischen Kerne zu ermitteln, wie sie in verwendet werden top, sollten Sie siblingsstattdessen den Wert betrachten:

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

Dies wird in der Kernel-Dokumentation ausführlich beschrieben .

lscpuBietet Informationen zu den installierten CPUs, die leichter zu verstehen sind als /proc/cpuinfo(oder vielmehr die gleichen Informationen auf einfachere Weise darstellen).

Stephen Kitt
quelle
3

Wahrscheinlich haben Sie eine CPU, die eine "Quad-Core" -CPU ist, und Hyperthreading aktiviert, sodass sich jeder physische Kern dem Betriebssystem (dem Kernel) als zwei logische Kerne präsentiert, denen zwei Threads demselben physischen Kern zugewiesen werden können gleichzeitig.

Die wichtigsten Begriffe, die Sie hier verstehen sollten, sind: CPU oder physischer Chip oder "Die" (bezieht sich auf "Socket"); dann physischer Kern; Stellen Sie dann sicher, dass Sie "Prozess" und "Thread" verstehen. Löschen Sie dann "Hyperthreading" und "logischer Kern".

Ich habe an einem Vortrag auf der LISA 2017 teilgenommen, bei dem alles sehr gut geklärt wurde. Die Folien aus diesem Vortrag sind online verfügbar , obwohl sie natürlich nicht so viel helfen wie der eigentliche Vortrag (da der gesprochene Teil fehlt).

Platzhalter
quelle
1

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

AsenM
quelle
Ich bin kurz davor, die Schachtel zu öffnen und nachzuschauen!
Johnny
Sie haben 8 Threads, deshalb zeigt oben 8
AsenM