Verbindungen unterbrechen

Um eine Überflutung des Hostsystems mit zu vielen Interrupts zu vermeiden, werden Pakete erfasst und ein einzelner Interrupt für mehrere Pakete generiert. Dies wird als Interrupt-Verbindungbezeichnet.

Bei Empfangsoperationen informieren Interrupts die Host-CPU normalerweise, dass Pakete in der Eingabewarteschlange der Einheit angekommen sind. Ohne irgendeine Form der Unterbrechungsmoderationslogik auf dem Adapter kann dies zu einem Interrupt für jedes eingehende Paket führen. Mit zunehmender Rate eingehender Pakete beendet der Einheitentreiber jedoch die Verarbeitung eines Pakets und prüft, ob sich weitere Pakete in der Empfangswarteschlange befinden, bevor er den Treiber verlässt und den Interrupt löscht. Der Treiber stellt dann fest, dass mehr Pakete zu verarbeiten sind, und verarbeitet am Ende mehrere Pakete pro Interrupt, wenn die Paketrate steigt, was bedeutet, dass das System effizienter wird, wenn die Last zunimmt.

Einige Adapter stellen jedoch zusätzliche Funktionen bereit, die noch mehr Kontrolle darüber bieten, wann Empfangsunterbrechungen generiert werden. Dies wird häufig als Interrupt-Coalescing oder Interrupt-Moderationslogik bezeichnet, die es ermöglicht, mehrere Pakete zu empfangen und einen Interrupt für mehrere Pakete zu generieren. Ein Zeitgeber beginnt, wenn das erste Paket ankommt, und dann wird der Interrupt um n Mikrosekunden verzögert oder bis m Pakete eintreffen. Die Methoden variieren je nach Adapter und nach welchen Funktionen der Einheitentreiber dem Benutzer die Steuerung ermöglicht.

Bei leichten Lasten erhöht die Unterbrechungskoaleszierung die Latenzzeit für die Paketankunftszeit. Das Paket befindet sich im Hostspeicher, aber der Host kennt das Paket erst einige Zeit später. Bei höheren Paketlasten wird das System jedoch effizienter ausgeführt, indem weniger CPU-Zyklen verwendet werden, da weniger Interrupts generiert werden und der Host mehrere Pakete pro Interrupt verarbeitet.

Bei AIX, die die Interrupt-Moderationsfunktion enthalten, sollten Sie die Werte auf ein moderates Niveau setzen, um den Interrupt-Overhead zu reduzieren, ohne große Latenzzeiten hinzuzufügen. Für Anwendungen, die möglicherweise eine Mindestlatenzzeit benötigen, sollten Sie die Optionen inaktivieren oder ändern, um mehr Interrupts pro Sekunde für eine geringere Latenzzeit zuzulassen.

Die Gigabit-Ethernet-Adapter bieten die Unterbrechungsmoderationsfunktionen. Die PCI-Adapter FC 2969 und FC 2975 GigE stellen einen Verzögerungswert und eine Methode für die Pufferanzahl bereit. Der Adapter startet einen Zeitgeber, wenn das erste Paket ankommt, und dann tritt ein Interrupt auf, wenn der Zeitgeber abläuft oder wenn n Puffer im Host verwendet wurden.

Die PCI-X-Adapter FC 5700, FC 5701, FC 5706 und FC 5707 GigE verwenden die Interrupt-Drosselungsrate, bei der Interrupts mit einer angegebenen Häufigkeit generiert werden, die das Bündeln von Paketen auf der Basis der Zeit ermöglicht. Die Standardinterruptrate beträgt 10.000 Interrupts pro Sekunde. Für einen geringeren Interrupt-Overhead können Sie die Interruptrate auf mindestens 2.000 Interrupts pro Sekunde setzen. Für Workloads, die eine geringere Latenzzeit und eine schnellere Antwortzeit erfordern, können Sie die Interruptrate auf maximal 20.000 Interrupts setzen. Wenn Sie die Unterbrechungsrate auf 0 setzen, wird die Unterbrechungsregulierung vollständig inaktiviert.

Die 10-Gigabit-Ethernet-PCI-X-Adapter (FC 5718 und 5719) verfügen über eine Unterbrechungskoaleszenzoption (rx_int_delay) mit einer Verzögerungseinheit von 0.82 Mikrosekunden. Die tatsächliche Länge der Verzögerung wird durch Multiplikation von 0.82 mit dem Wert in rx_int_delaybestimmt. Diese Option ist standardmäßig inaktiviert (rx_int_delay= 0), da beim Testen festgestellt wurde, dass die Verbindungsunterbrechungen bei der höheren Eingaberate dieser Adapter die Leistung nicht verbessern.

Tabelle 1. Merkmale der 10-Gigabit-Ethernet-PCI-X-Adapter
Adaptertyp Feature-Code Attribut ODM Standardwert Bereich
10-Gigabit-Ethernet-PCI-X (LR oder SR) 5718, 5719 rx_int_delay (Verzögerung) 0 0-512