Frage Gibt es noch einen Nutzen für irqbalance auf moderner Hardware?


Diese Frage wurde schon früher gestellt, aber ich glaube, dass sich die Welt so verändert hat, dass sie erneut gefragt wird.

Kann irqbalance auf heutigen Systemen verwendet werden, auf denen wir NUMA-fähige CPUs mit Speicheraufteilung zwischen ihren Kernen haben?

Laufen irqbalance --oneshot --debug zeigt, dass ein virtueller Gast in einer modernen VMware ESXi-Umgebung die NUMA-Knoten zwischen Kernen gemeinsam nutzt.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

irqbalance wird in diesem Fall erkennen, dass es auf einem NUMA-System ausgeführt wird, und beenden. Das macht unsere Prozessüberwachung durcheinander.

Sollten wir ins Laufen schauen? Numad anstelle von irqbalance auf solchen Systemen?

Dies ist vor allem für virtualisierte VMware-Server interessant.


35
2018-06-06 14:57


Ursprung




Antworten:


Hier ist eine Antwort von einem Techniker in RedHat. Obwohl ich glaube, dass die meisten Enterprise-Hardware NUMA-fähig ist. Und soweit ich weiß, wird VMware auch versuchen, Ihre VMs auf den gleichen NUMA-Knoten zu passen, solange seine CPU-Konfiguration passt.

Erfahrungen (besonders in Bezug auf VMware) würden sehr geschätzt werden.

Dies ist "wegen" moderner Server wahr. Denken Sie daran, dass Multi-CPU / Muli-Core nicht mit NUMA identisch ist. Es gibt viele Multi-CPU / Core-Systeme ohne NUMA.

Bevor Sie meine Erklärung lesen, lesen Sie bitte das obige IRQ Affinity-Dokument sowie die folgenden Handbücher:

RHEL 6 Performance Tuning Guide

Low Latency Performance Tuning für RHEL 6

Hast du alles gelesen? Großartig, du brauchst nichts mehr von mir zu hören! ;-) Aber für den Fall, dass du ungeduldig bist, hier ist, warum du sie willst ...

IRQbalance verhindert, dass alle IRQ-Anforderungen auf einer einzelnen CPU gesichert werden. Ich habe gesehen, dass viele Systeme mit 4+ CPU-Kernen langsam arbeiten, weil alle Prozesse auf verschiedenen CPUs auf CPU 0 warten, um Netzwerk- oder Speicher-IRQ-Anforderungen zu verarbeiten. CPU 0 sieht sehr, sehr ausgelastet aus, alle anderen CPUs sind nicht ausgelastet, aber die Apps sind sehr langsam. Die Apps sind langsam, weil sie auf ihre IO-Anforderungen von CPU 0 warten.

IRQbalance versucht dies über alle CPUs hinweg intelligent auszugleichen und wenn möglich, die IRQ-Verarbeitung so nah wie möglich an den Prozess zu bringen. Dies kann derselbe Kern sein, ein Kern auf demselben Chip, der denselben Cache verwendet, oder ein Kern in derselben NUMA-Zone.

Sie sollten irqbalance verwenden, es sei denn:

Sie pinnen Ihre Apps / IRQs aus einem sehr guten Grund (niedrige Latenzzeit, Echtzeitanforderungen usw.) manuell an bestimmte Kerne.

Virtuelle Gäste. Es macht keinen Sinn, denn wenn Sie den Gast nicht an bestimmte CPUs und IRQs und dedizierte Netz- / Speicherhardware binden, werden Sie wahrscheinlich nicht die Vorteile sehen, die Sie für Bare Metal haben. Aber dein KVM / RHEV-Host sollte irqbalance verwenden und Numad und abgestimmt.

Andere sehr wichtige Tuning-Tools sind gestimmte Profile und Numad. Lies über sie! Benutze sie!

Numad ist ähnlich wie irqbalance, da es versucht, sicherzustellen, dass ein Prozess und sein Speicher in derselben numazone sind. Bei vielen Cores sehen wir eine signifikante Verringerung der Latenzzeiten, was zu einer viel gleichmäßigeren zuverlässigen Leistung unter Last führt.

Wenn Sie in der Lage sind, regelmäßig zu fleißig und regelmäßig zu überwachen oder eine sehr vorhersehbare Arbeitslast zu haben, können Sie eine bessere Leistung erzielen, indem Sie Prozesse / IRQs manuell an CPUs anheften. Sogar in diesen Situationen kommen irqbalance und numad dem Matching sehr nahe. Wenn Sie jedoch unsicher sind oder Ihre Arbeitslast nicht vorhersehbar ist, sollten Sie irqbalance und numad verwenden.


24
2018-06-07 06:44



FWIW, einige 10GbE-Handbücher empfehlen irqbalance zu deaktivieren, um einen besseren Durchsatz zu erhalten ... - rogerdpack
Um das absolute Maximum zu erreichen, um mit ihren Benchmark-Zahlen übereinzustimmen, müssen Sie die Dinge auf gewisse Weise zusammenschrauben, aber diese Benchmarks stimmen im Allgemeinen nicht mit den tatsächlichen Arbeitsbelastungen überein. Wenn Sie EINE Anwendung auf dem Server mit einer extrem latenzempfindlichen Anforderung in einem sehr vorhersehbaren Verwendungsmuster ausführen, dann sollten Sie die Prozessoraffinität manuell konfigurieren. Aber wenn die Anwendung eher ein realer Anwendungsfall ist, in dem die Dinge über eine Vielzahl von Prozessen und Lasten hinweg variieren können, stimme ich der Red Hat-Technologie zu. Linux NUMA Balancing macht gute Fortschritte. - GeorgeB