Bedeutet dies die Anzahl der virtuellen Prozessoren in einem physischen Prozessor?
Wenn die Anzahl der Geschwister gleich der Anzahl der Kerne ist, haben Sie CPUs, die kein Hyperthreading sind, oder das Hyperthreading ist ausgeschaltet. Wenn die Anzahl der Geschwister das Zweifache der Anzahl der Kerne beträgt, haben Sie eine Hyperthreading-CPU mit eingeschaltetem Hyperthreading. Es ist ein guter Artikel hier .
Die Anzahl der Geschwister auf einem Prozessor ist die Gesamtzahl der Ausführungseinheiten innerhalb dieses Prozessors. Dies umfasst sowohl zusätzliche Kerne als auch Hyperthreading.
Beispielsweise,
siblings : 2
. Dual Core, kein Hyperthreading.siblings : 4
. Dual Core mit Hyperthreading.siblings : 2
. Einkernig mit Hyperthreading.Verstehen Sie zunächst die folgenden Begriffe und ihren Verwendungskontext.
Moderne PCs werden normalerweise mit Multi-Core-Hyperthread-Prozessoren geliefert. Zum Beispiel sieht Linux, das auf einem PC mit Quad-Core-Hyperthread-Intel-CPU ausgeführt wird, 8 CPUs (4 Kerne x 2 Hyperthreads).
Moderne Server sind normalerweise Multi-Core-Multi-Prozessor-Systeme. Ein typischer Server verfügt über zwei Sockets mit jeweils 24 Hyperthread-Kernen. Linux, das auf diesem System ausgeführt wird, sieht also 96 CPUs (2 Sockel x 24 Kerne x 2 Hyperthreads).
Um auf die eigentliche Frage zurückzukommen: Prozessoren, die den Cache gemeinsam nutzen, werden als Geschwister bezeichnet. Die Cache-Organisation sieht wie folgt aus (obwohl sie je nach Architektur unterschiedlich sein wird).
Stellen Sie sich ein Multi-Core-Multi-Prozessor-System mit 2 Sockeln vor. Jede Buchse hat 24 Kerne mit Hyperthreading. In diesem Fall werden in Linux insgesamt 96 CPUs von 0 bis 95 nummeriert. Sockel 1 hat CPUs 0-47 und Sockel 2 48-95 (im Gegensatz dazu werden die Nummern normalerweise verschachtelt). Für dieses System mit der oben genannten Cache-Organisation
Der Kernel verwendet beispielsweise die Anzahl der Geschwister, um den Lastausgleich durchzuführen.
Auf einem System mit zwei physischen Paketen mit jeweils zwei Kernen (gemeinsam genutzter Cache der letzten Ebene) und jedem Kern mit zwei logischen Threads werden vier Aufgaben ausgeführt. Der Lastausgleich beginnt in der Multicore-Domäne für das erste Paket, was zu einer gleichmäßigen Lastverteilung auf alle Kerne führt.