Warteschlangentiefe für ONTAP FC Hosts berechnen
Möglicherweise ist eine Anpassung der FC-Warteschlangentiefe auf dem Host erforderlich, um die maximalen Werte für ITNs pro Node und FC-Port-Fan-In zu erreichen. Die maximale Anzahl von LUNs und die Anzahl der HBAs, die eine Verbindung zu einem FC-Port herstellen können, sind durch die verfügbare Warteschlangentiefe an den FC-Zielports begrenzt.
Die Warteschlangentiefe ist die Anzahl der E/A-Anforderungen (SCSI-Befehle), die gleichzeitig auf einem Speicherkontroller in die Warteschlange gestellt werden können. Jede E/A-Anforderung vom initiierenden HBA des Hosts an den Zieladapter des Speicherkontrollers belegt einen Eintrag in der Warteschlange. In der Regel entspricht eine höhere Warteschlangentiefe einer besseren Performance. Wird jedoch die maximale Warteschlangentiefe des Speicherkontrollers erreicht, weist dieser eingehende Befehle mit einer QFULL-Antwort zurück. Wenn eine große Anzahl von Hosts auf einen Speicherkontroller zugreift, ist eine sorgfältige Planung erforderlich, um QFULL-Zustände zu vermeiden, da diese die Systemleistung erheblich beeinträchtigen und auf manchen Systemen zu Fehlern führen können.
In einer Konfiguration mit mehreren Initiatoren (Hosts) sollten alle Hosts eine ähnliche Warteschlangentiefe aufweisen. Aufgrund der ungleichen Warteschlangentiefe zwischen Hosts, die über denselben Zielport mit dem Storage-Controller verbunden sind, wird Hosts mit geringerer Warteschlangentiefe der Zugriff auf Ressourcen durch Hosts mit größerer Warteschlangentiefe verwehrt.
Folgende allgemeine Empfehlungen können hinsichtlich des „Tuning“ der Warteschlangentiefe gegeben werden:
-
Für kleine bis mittelgroße Systeme ist eine HBA-Warteschlangentiefe von 32 zu verwenden.
-
Für große Systeme wird eine HBA-Warteschlangentiefe von 128 empfohlen.
-
Für Ausnahmefälle oder Leistungstests empfiehlt sich eine Warteschlangenlänge von 256, um mögliche Warteschlangenprobleme zu vermeiden.
-
Alle Hosts sollten ähnliche Warteschlangentiefen eingestellt haben, um allen Hosts gleichen Zugriff zu ermöglichen.
-
Um Leistungseinbußen oder Fehler zu vermeiden, darf die Warteschlangentiefe des Ziel-FC-Ports am Speichercontroller nicht überschritten werden.
-
Die Gesamtzahl der FC-Initiatoren in allen Hosts, die mit einem FC-Zielport verbunden sind, ermitteln.
-
Mit 128 multiplizieren.
-
Ist das Ergebnis kleiner als 2.048, sollte die Warteschlangentiefe für alle Initiatoren auf 128 gesetzt werden. Sie haben 15 Hosts, wobei jeweils ein Initiator an jeden der beiden Zielports des Storage Controllers angeschlossen ist. 15 × 128 = 1.920. Da 1.920 unter dem Gesamtlimit der Warteschlangentiefe von 2.048 liegt, kann die Warteschlangentiefe für alle Initiatoren auf 128 gesetzt werden.
-
Ist das Ergebnis größer als 2.048, gehen Sie zu Schritt 3. Sie haben 30 Hosts, wobei jeweils ein Initiator an jeden der beiden Zielports des Storage Controllers angeschlossen ist. 30 × 128 = 3.840. Da 3.840 größer als das Gesamtlimit der Warteschlangentiefe von 2.048 ist, sollte eine der Optionen unter Schritt 3 zur Behebung gewählt werden.
-
-
Wählen Sie eine der folgenden Optionen, um dem Storage Controller weitere Hosts hinzuzufügen.
-
Option 1:
-
Weitere FC-Zielports hinzufügen.
-
Verteilen Sie Ihre FC-Initiatoren neu.
-
Wiederholen Sie die Schritte 1 und 2. + Die gewünschte Warteschlangentiefe von 3.840 überschreitet die verfügbare Warteschlangentiefe pro Port. Um dies zu beheben, kann jedem Controller ein FC-Zieladapter mit zwei Ports hinzugefügt werden, anschließend werden die FC-Switches so umkonfiguriert, dass 15 der 30 Hosts mit einem Satz von Ports und die verbleibenden 15 Hosts mit einem zweiten Satz von Ports verbunden sind. Die Warteschlangentiefe pro Port wird dadurch auf 15 × 128 = 1.920 reduziert.
-
-
Option 2:
-
Jeder Host wird entsprechend seines erwarteten E/A-Bedarfs als “large” oder “small” bezeichnet.
-
Die Anzahl der großen Initiatoren ist mit 128 zu multiplizieren.
-
Die Anzahl der kleinen Initiatoren ist mit 32 zu multiplizieren.
-
Die beiden Ergebnisse werden addiert.
-
Ist das Ergebnis kleiner als 2.048, sollte die Warteschlangentiefe für große Hosts auf 128 und die Warteschlangentiefe für kleine Hosts auf 32 eingestellt werden.
-
Ist das Ergebnis pro Port immer noch größer als 2.048, sollte die Warteschlangenlänge pro Initiator verringert werden, bis die Gesamtwarteschlangenlänge kleiner oder gleich 2.048 ist.
Zur Abschätzung der erforderlichen Warteschlangenlänge für einen bestimmten Durchsatz von E/A pro Sekunde gilt folgende Formel:
Erforderliche Warteschlangentiefe = (Anzahl der E/A pro Sekunde) × (Antwortzeit)
Wenn beispielsweise 40.000 E/A-Vorgänge pro Sekunde bei einer Reaktionszeit von 3 Millisekunden benötigt werden, ergibt sich die erforderliche Warteschlangentiefe zu 40.000 × (0,003) = 120.
-
-
Die maximale Anzahl an Hosts, die Sie mit einem Zielport verbinden können, beträgt 64, wenn Sie die Warteschlangenlänge auf die empfohlene Basislänge von 32 beschränken. Wenn jedoch eine Warteschlangenlänge von 128 gewählt wird, können maximal 16 Hosts mit einem Zielport verbunden werden. Je größer die Warteschlangenlänge, desto weniger Hosts kann ein einzelner Zielport unterstützen. Falls die Anforderungen so sind, dass bei der Warteschlangenlänge keine Kompromisse möglich sind, ist es erforderlich, mehr Zielports zu verwenden.
Die gewünschte Warteschlangentiefe von 3.840 überschreitet die verfügbare Warteschlangentiefe pro Port. Es sind 10 „large“ Hosts mit hohem Storage-I/O-Bedarf und 20 „small“ Hosts mit geringem I/O-Bedarf vorhanden. Die Initiator-Warteschlangentiefe sollte auf den large Hosts auf 128 und auf den small Hosts auf 32 gesetzt werden.
Die resultierende Gesamttiefe der Warteschlange beträgt (10 × 128) + (20 × 32) = 1.920.
Sie können die verfügbare Warteschlangenlänge gleichmäßig auf alle Initiatoren verteilen.
Die daraus resultierende Warteschlangenlänge pro Initiator beträgt 2,048 ÷ 30 = 68.