Im Linux-Kernel heißt es in der Dokumentation für CONFIG_NUMA
:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
Ich habe einen Intel Core i7-Prozessor, aber AFAICT hat nur einen NUMA-Knoten:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Wozu also CONFIG_NUMA=y
, wenn i7 nur einen NUMA-Knoten hat?
quelle
CONFIG_NUMA
fürcore i7
?Beachten Sie zunächst, dass Intel Core i7 nur eine Marketingbezeichnung ist und die Formulierung Intel Core i7 (oder höher) sehr vage ist. Was könnte es also bedeuten?
Die Hilfetexte des Linux-Kernels
Kconfig
, in denen ein Intel Core 7i erwähnt und dann auf Intel Core i7 korrigiert wurde , wurden im November 2008 bearbeitet . Das Festschreibungsprotokoll lautet:Es kann sich vernünftigerweise nur auf Intel Core i7-CPUs beziehen, die zu diesem Zeitpunkt gemäß Spezifikation veröffentlicht oder angekündigt wurden. Das wären die Bloomfield- Prozessoren, die auf der Nehalem-Mikroarchitektur basieren und den Speichercontroller von der Northbridge auf die CPU verlagern (wie AMD es 2003 mit dem Opteron / AMD64 getan hatte) und QuickPath Interconnect / QPI einführen (als Pendant zu AMDs HyperTransport). für die CPU / CPU- und CPU / IOH-Verbindung (IO-Hub, ex-Northbridge).
Die Bloomdale i7-CPUs waren die ersten Einträge im neuen Core i {3,5,7} -Namensschema. Als dieser Linux-Dokumententext geschrieben wurde, bezog sich i7 nicht speziell auf den Core i7 im Gegensatz zu i5 (erstmals 09/2009) oder i3 (erstmals 01/2010), sondern höchstwahrscheinlich auf die neue Nehalem-Mikroarchitektur mit seinen integrierten Speichercontroller und QPI.
Es gibt eine Intel-Pressemitteilung vom 11/2008 über das i7 ( Intel führt den schnellsten Prozessor auf dem Planeten ein ), in der es heißt, dass der Core i7-Prozessor die Speicherbandbreite früherer Intel "Extreme" -Plattformen mehr als verdoppelt , aber NUMA überhaupt nicht erwähnt .
Der Grund ist meiner Meinung nach, dass NUMA für Desktop-PCs keine Rolle spielt, auch nicht für "extreme".
NUMA ist wichtig für teure Server mit mehreren CPU-Sockeln (nicht nur mehreren Kernen auf einem Sockel) mit dedizierten physischen Speicherzugriffsspuren (nicht nur einem Speichercontroller), sodass jede CPU über einen dedizierten lokalen Speicher verfügt, der "näher" liegt als der Speicher der anderen CPUs. (Denken Sie an 8 Sockel, 64 Kerne, 256 GB RAM.) NUMA bedeutet, dass eine CPU zusätzlich zu ihrem eigenen lokalen Speicher auch auf Remote-Speicher (den lokalen Speicher einer anderen CPU) zugreifen kann, allerdings zu höheren Kosten. NUMA ist die Synthese einer gemeinsam genutzten Speicherarchitektur wie SMP, bei der der gesamte Speicher für alle Kerne gleichermaßen verfügbar ist, und einer verteilten Speicherarchitektur wie MPP (Massively Parallel Processing), bei der jedem Knoten ein dedizierter Speicherblock zugewiesen wird. Es ist MPP, aber es sieht für die Anwendung wie SMP aus.
Desktop-Motherboards haben keine Dual-Sockets und Intel-Desktop-CPUs, einschließlich extremer i7-Editionen, verfügen nicht über den zusätzlichen QPI-Link für die Dual-Socket-Konfiguration.
Lesen Sie den Wikipedia-QPI- Artikel, um zu erfahren, wie wichtig QPI für NUMA ist:
Die Art und Weise, wie eine Intel Nehalem-CPU auf einer Multi-Socket-Serverplatine nicht lokalen Speicherzugriff ermöglicht, erfolgt über QPI. Auch im Artikel über NUMA :
Überprüfen Sie diesen Bericht aus dem Jahr 11/2008 , um festzustellen , dass Intel einen der beiden QPI-Links auf dem i7 deaktiviert hat und somit die Dual-Socket-Konfiguration deaktiviert hat, sofern NUMA zutrifft:
Ich habe mich also von Ihrer Frage bezüglich meiner Google-Forschungsergebnisse abgewandt. Sie fragen sich, warum in den Linux-Dokumenten empfohlen wird, sie Ende 2008 zu aktivieren. Ich bin nicht sicher, ob diese Frage nachweislich richtig beantwortet wurde. Wir müssten den Dokumentationsautor fragen. Das Einschalten von NUMA kommt Desktop-CPU-Benutzern nicht zugute, schadet ihnen aber auch nicht wesentlich, während es Multi-Socket-Benutzern hilft. Warum also nicht? Dies könnte die Begründung gewesen sein. Gefunden, was sich in einer Diskussion über das Deaktivieren von NUMA auf dem Arch Linux-Tracker widerspiegelt ( FS # 31187 - [linux] - NUMA aus Konfigurationsdateien deaktivieren ).
Der Verfasser des Dokuments hätte auch an das NUMA-Potenzial der Nehalem-Architektur denken können, deren einzige Vertreter bei der Erstellung des Dokuments die Core i7-Prozessoren 11/2008 (920, 940, 965) waren. Die ersten Nehalem-Chips, für die NUMA wirklich Sinn gemacht hätte, sind wahrscheinlich die Xeon-Prozessoren Q1 / 2009 mit doppeltem QPI-Link wie der Xeon E5520 .
quelle
Ich denke, wenn Sie den
--show
Schalter verwenden, könnte es sinnvoller sein:So können Sie die Verwendung von physcpubind wie folgt steuern:
Dies würde die Anwendung
myapp
auf die ersten 2 CPU-Kerne beschränken. Mein System ist ein i5 mit 4 Kernen.Verweise
quelle
Ich habe dasselbe für meinen Desktop-PC untersucht, während ich meinen Kernel selbst erstellt habe. Ich habe mich entschieden, NUMA nach langem Nachforschen zu deaktivieren. Meine CPU ist ein Core i7 3820, der 8 Prozessoren mit HT hat. Diese Seite hat mir bei meiner Entscheidung geholfen.
deaktiviere NUMA in den Konfigurationsdateien
Zusammenfassend ist NUMA nur dann sinnvoll, wenn Sie mehr als einen CPU-Sockel haben (unabhängig von den Kernen). Die Rechenleistung von 1-CPU-Socket-Rechnern ist selbst bei mehreren Kernen nur sehr gering, fällt jedoch kaum auf. Daher lassen die meisten Distributionen diese Funktion aktiviert, da sie Servern und Rechnern mit mehr als einem Socket enorme Vorteile bietet.
quelle
In einem PC mit höchstens einer CPU ist NUMA völlig nutzlos. Fühlen Sie sich frei, es in Ihrem eigenen Kernel zu deaktivieren.
Sie können das CPU-Bonden jederzeit über das Task-Set (1) steuern .
quelle