Gibt es noch eine Verwendung für das Ungleichgewicht bei moderner Hardware?

39

Diese Frage wurde bereits gestellt, aber ich glaube, dass sich die Welt so verändert hat, dass sie erneut gestellt werden kann.

Kann irqbalance auf heutigen Systemen eingesetzt werden, auf denen NUMA-fähige CPUs mit gemeinsamer Speichernutzung zwischen ihren Kernen eingesetzt werden?

Die Ausführung irqbalance --oneshot --debugzeigt, 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 erkennt in diesem Fall, dass es auf einem NUMA-System ausgeführt wird, und beendet das Programm. Dies beeinträchtigt unsere Prozessüberwachung.

Sollen wir untersuchen, ob auf solchen Systemen Numad ausgeführt wird, anstatt ein Ungleichgewicht zu verursachen?

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

espenfjo
quelle

Antworten:

27

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

Erfahrungen (insbesondere in Bezug auf VMware) sind sehr willkommen.

Das liegt an modernen Servern. Beachten Sie, dass Multi-CPU / Muli-Core nicht mit NUMA identisch ist. Es gibt viele Multi-CPU / Core-Systeme ohne NUMA.

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

RHEL 6 Performance Tuning Guide

Leistungsoptimierung mit geringer Latenz für RHEL 6

Hast du alles gelesen? Toll, du brauchst nichts mehr von mir zu hören! ;-) Aber nur für den Fall, dass Sie ungeduldig waren, hier ist, warum Sie sie wollen ...

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 E / A-Anforderungen von CPU 0 warten.

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

Sie sollten Irqbalance verwenden, es sei denn:

Sie heften Ihre Apps / IRQs aus einem sehr guten Grund (geringe Latenz, Echtzeitanforderungen usw.) manuell an bestimmte Kerne.

Virtuelle Gäste. Dies ist nicht wirklich sinnvoll, denn wenn Sie den Gast nicht an bestimmte CPUs und IRQs und dedizierte Net / Storage-Hardware binden, werden Sie wahrscheinlich nicht die Vorteile sehen, die Sie auf Bare-Metal-Basis erzielen würden. Ihr KVM / RHEV-Host sollte jedoch Irqbalance, Numad und Tuned verwenden .

Andere sehr wichtige Abstimmungswerkzeuge sind abgestimmte Profile und Nummern. Lesen Sie über sie! Benutze sie!

Numad ähnelt insofern dem Irqbalance, als es versucht, sicherzustellen, dass sich ein Prozess und sein Speicher in derselben Numazone befinden. Bei vielen Kernen ist eine deutliche Reduzierung der Latenzen zu beobachten, was zu einer wesentlich gleichmäßigeren und zuverlässigeren Leistung unter Last führt.

Wenn Sie kompetent und gewissenhaft sind und regelmäßig überwachen oder eine sehr vorhersehbare Arbeitsauslastung haben, erzielen Sie möglicherweise eine bessere Leistung, indem Sie Prozesse / IRQs manuell an CPUs anheften. Auch in diesen Situationen kommen Irqbalance und Numad dem Matching sehr nahe. Aber wenn Sie unsicher sind oder Ihre Arbeitsbelastung nicht vorhersehbar ist, sollten Sie Irqbalance und Numad verwenden.

espenfjo
quelle
5
Wie bereits erwähnt, wird in einigen 10-GbE-Handbüchern empfohlen, Irqbalance zu deaktivieren, um einen besseren Durchsatz zu
erzielen
8
Um ein absolutes Maximum zu erreichen, das ihren Benchmark-Zahlen entspricht, müssen Sie die Dinge auf eine bestimmte Weise zusammenschrauben, aber diese Benchmarks entsprechen im Allgemeinen nicht den tatsächlichen Arbeitslasten. Wenn auf dem Server EINE Anwendung ausgeführt wird, für die in einem sehr vorhersehbaren Verwendungsmuster eine extrem latenzkritische Anforderung besteht, können Sie die Prozessoraffinität für bestimmte Dinge manuell konfigurieren. Aber wenn es sich bei der Anwendung eher um einen realen Anwendungsfall handelt, bei dem die Dinge über einen weiten Bereich von Prozessen und Lasten variieren können, stimme ich der Red Hat-Technologie zu. Linux NUMA Balancing macht gute Fortschritte.
GeorgeB