Was sind logische CPU-Kerne (im Gegensatz zu physischen CPU-Kernen)?


48

Ich habe gegoogelt, wie ich die Anzahl der CPUs in einer Maschine finden konnte, und ich habe einige Posts gefunden, aber ich bin verwirrt, da einige erwähnt haben, dass man die logischen Kerne mit den physischen Kernen usw. vergleicht.
Also, was ist der Unterschied zwischen logischen und physischen Kernen? Wie könnte ich nur die physischen Kerne bekommen? Oder ist es sinnvoll, logische Kerne in unsere Zählung einzubeziehen?

Antworten:


62

Physikalische Kerne sind genau das, physikalische Kerne innerhalb der CPU. Logische Kerne sind die Fähigkeiten eines einzelnen Kerns, zwei oder mehr Dinge gleichzeitig zu erledigen. Dies ist auf die frühere Fähigkeit von Pentium 4-CPUs zurückzuführen , das so genannte Hyper Threading (HTT) durchzuführen .

Es war ein bisschen wie ein Spiel, das gespielt wurde, in dem Unterkomponenten des Kerns für bestimmte Arten von Anweisungen nicht verwendet wurden, während möglicherweise eine andere Anweisung mit langer Laufzeit ausgeführt wurde. Die CPU könnte also zwei Dinge gleichzeitig bearbeiten.

Neuere Kerne sind vollwertige CPUs, sodass sie gleichzeitig an mehreren Dingen arbeiten, aber sie sind keine echten CPUs wie die physischen Kerne. Weitere Informationen zu den Einschränkungen der Hyperthreading-Funktionalität im Vergleich zu den physischen Fähigkeiten des Kerns finden Sie in diesem Artikel zu Tomshardware mit dem Titel: Intel Core i5 und Core i7: Intels Mainstream Magnum Opus .

Sie können die Aufteilung Ihrer Box mit dem folgenden lscpuBefehl anzeigen:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

In der obigen Abbildung hat mein Intel i5 Laptop insgesamt 4 "CPUs"

CPU (s): 4

Davon gibt es 2 physische Kerne

Adern pro Sockel: 2

von denen jeder bis zu 2 Threads ausführen kann

Gewinde pro Kern: 2

gleichzeitig. Diese Threads sind die logischen Funktionen des Kerns.


Ich habe keine. lscpuGibt es ein alternatives Tool?
Jim

1
Die rohen Informationen , die lscpuverwendet werden , hier ausgesetzt: cat /proc/cpuinfo. Was ist dein Betriebssystem?
SLM

1
@ ThomasWeller - siehe meine anderen A'er hier - unix.stackexchange.com/questions/113544/… .
slm

1
Core(s) per socketmal Thread(s) per core: 2= CPU(s): 4? Richtig?
user3019105

1
@ user3019105 - richtig
slm

12

Physische Kerne sind die Anzahl der physischen Kerne und die tatsächlichen Hardwarekomponenten.

Logische Kerne sind die Anzahl der physischen Kerne multipliziert mit der Anzahl der Threads, die durch Hyperthreading auf jedem Kern ausgeführt werden können.

Auf meinem 4-Kern-Prozessor werden beispielsweise zwei Threads pro Kern ausgeführt, sodass ich über 8 logische Prozessoren verfüge.


Diese Zahl ist also nur dann sinnvoll, wenn ein Prozessor verwendet wird, der Hyperthreading unterstützt. Und was bedeutet das? Immer noch ein Thread belegt jede CPU gleichzeitig. Also, was bedeutet diese Zahl?
Jim

Also, welche Nummer soll ich anstreben?
Jim

Nicht notwendigerweise können durch gleichzeitiges Multithreading beispielsweise zwei Threads gleichzeitig auf einem einzigen Kern ausgeführt werden. Es gibt auch eine Reihe anderer Vorteile.
Asche

Ich schaue auf die Anzahl der physischen Kerne.
Asche

1

Die Hyperthreading- Technologie ermöglicht, dass sich ein einzelner physischer Prozessorkern wie zwei logische Prozessoren verhält.

Ein einzelner Prozessorkern kann also zwei unabhängige Threads gleichzeitig ausführen .

Intel bezeichnet einen physischen Prozessor als Sockel.

Durch Hyperthreading verhält sich ein physischer Prozessor wie zwei physische Prozessoren, die als logischer Prozessor bezeichnet werden. Warum?

Während Hyperthreading die Leistung eines Systems nicht verdoppelt, kann es die Leistung steigern, indem inaktive Ressourcen besser genutzt werden, was bei bestimmten wichtigen Workload-Typen zu einem höheren Durchsatz führt. Eine Anwendung, die auf einem logischen Prozessor eines ausgelasteten Kerns ausgeführt wird, kann etwas mehr als die Hälfte des Durchsatzes erwarten, den sie erzielt, wenn sie alleine auf einem Prozessor ohne Hyperthread ausgeführt wird.


Zusammenfassung


Physische Prozessoren sind, dass wir sehen und fallen können.

Logischer Prozessor ist wie ein physikalischer Kern , der als zwei physikalische Kerne fungiert


Busted Link zu VMware-Dokument.
SLM

0
$ sudo dmidecode |egrep "Socket Designation: Proc|((Thread|Core) Count)"
Socket Designation: Proc 1
        Core Count: 14
        Thread Count: 28
Socket Designation: Proc 2
        Core Count: 14
        Thread Count: 28

Zwei Steckdosen. Jeder Sockel verfügt über 14 physische Kerne. Jeder Kern hat zwei Threads (28/14). Die Gesamtzahl der logischen "cpus" oder logischen Verarbeitungseinheiten beträgt 56 (das ist, was "top" und einige andere Befehle Ihnen als Anzahl der "cpus" anzeigen würden).


Was mich verblüfft, ist, dass ich auf meinem i3-3220 mit Ihrem Ansatz Core Count 2 und Thread Count 2 (= 4) lscpu shows CPUs 4 and threads per 2 (=8) but erhalte, aber lshw -C cpu` zeigt 16 logische CPU-Nummern 0 - 15
Elder Geek

dmidecode interpretiert, was im BIOS enthalten ist. Sie sind sich nicht sicher, was genau in Ihrem Fall falsch ist, z. lscpu und lshw sind Betriebssystembefehle. Zeigen Sie also, was der Betriebssystemkern erkannt hat. Intel-Spezifikation für Ihren Prozessor zeigen 2 Kerne 4 Threads.
Tagar

Würde ein deaktiviertes Hyperthreading nicht zu weniger als zu mehr logischen Kernen führen?
Elder Geek

Ich habe verstanden, dass Sie 2 Kerne 2 Threads von dmidecode anstelle von 2 Kernen 4 Threads gemeldete tatsächliche Anzahl von Threads / Kernen i3-3220 hat. Es ist also kleiner. Und das war nur eine Vermutung, ich weiß nicht, ob Sie tatsächlich Hyperthreading im BIOS deaktiviert haben oder nicht.
Tagar

Anscheinend habe ich die lscpuAusgabe falsch interpretiert und es sind insgesamt 4 Threads, aber "lshw-cpu" zeigt 16 logische CPUs. "Ich bin nicht sicher, was ich davon halten soll.
Elder Geek
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.