Was ist Fibre-Channel-HBA-Warteschlangentiefe
Die Warteschlangentiefe gibt die Anzahl der E/A-Anforderungen an, die „in Flight“ sind, die angefordert, aber noch nicht als abgeschlossen bestätigt wurden, wenn sie mit einem SAN-Speicher kommunizieren. Diese Anfragen können pro einzelne Logical Unit Number (LUN), auf die zugegriffen wird, oder basierend auf dem HBA konfiguriert werden. Die maximale Warteschlangentiefe beschreibt den Wert von Anfragen, der maximal im Flug sein darf. Die Einstellung für die maximale Warteschlangentiefe kann die Speicherleistung erheblich beeinflussen.
Die maximale Warteschlangentiefe sollte sorgfältig gewählt werden. Niedrige Werte können zu einer schlechten E/A-Leistung führen. Hohe Werte können auch zu schlechter Leistung führen, da das SAN-Ziel Caches/Scheduling nicht optimal nutzt. Nicht nur die Warteschlangentiefe eines einzelnen HBAs, sondern die Warteschlangentiefe aller HBAs, die mit einem Speicherport auf dem SAN-Ziel verbunden sind, beeinflussen die Leistung des anderen. Der Anbieter des SAN-Ziels hat möglicherweise Empfehlungen für die maximal zu verwendende Warteschlangentiefe. Weitere relevante Faktoren sind:
- die Anzahl der mit dem Ziel verbundenen HBA-Ports
- das E/A-Muster, das von Anwendungen generiert wird, die auf dem System ausgeführt werden
Ändern der Warteschlangentiefe von Qlogic HBA
Führen Sie den folgenden Befehl aus, um den aktuellen Warteschlangentiefenwert qdepth zu ermitteln:
# cat /sys/module/qla2xxx/parameters/ql2xmaxqdepth 32
Das obige Beispiel gibt „32“ zurück.
Um den qdepth-Wert einzustellen/zu ändern, kann sysfs verwendet werden, es ist nicht erforderlich, das Modul zu entladen/laden. Folgendes ändert die ql2xmaxqdepth:
# echo 16 > /sys/module/qla2xxx/parameters/ql2xmaxqdepth
Um den qdepth-Wert so einzustellen, dass er auch nach Neustarts des Systems konfiguriert ist, ändern Sie den Wert der ql2xmaxqdepth-Option im qla2xxx-Treiber:
# modinfo qla2xxx | grep ql2xmaxqdepth parm: ql2xmaxqdepth:Maximum queue depth to set for each LUN. Default is 32. (int)
Der folgende Eintrag muss zu /etc/modprobe.conf hinzugefügt werden oder eine Datei im Verzeichnis /etc/modprobe.d und das initrd-Image neu erstellt, um die Änderung dauerhaft zu machen:
# vi /etc/modprobe.conf alias scsi_hostadapter1 qla2xxx options qla2xxx ql2xmaxqdepth=16CentOS / RHEL 6:So erstellen Sie das ursprüngliche Ramdisk-Image neu
Ändern der Warteschlangentiefe von Emulex HBA
Für Emulex HBA ist derzeit keine dynamische Änderung der maximalen Warteschlangentiefe möglich, es ist erforderlich, das Modul mit neuen Parametern zu entladen/laden oder das gesamte System neu zu starten. Emulex HBA unterstützt die folgenden Optionen, um die Warteschlangentiefe zu beeinflussen:
# modinfo lpfc|grep queue_depth parm: lpfc_lun_queue_depth:Max number of FCP commands we can queue to a specific LUN (uint) parm: lpfc_hba_queue_depth:Max number of FCP commands we can queue to a lpfc HBA (uint)
Diese Optionen können in /etc/modprobe.conf verwendet werden oder eine Datei im Verzeichnis /etc/modprobe.d und das initrd-Image neu aufgebaut.
CentOS / RHEL 6:So erstellen Sie das ursprüngliche Ramdisk-Image neuDer Standardwert von lpfc kann auch unter /sys/module/lpfc/parameters/ überprüft werden . Beachten Sie jedoch, dass diese Werte nicht geändert werden konnten (keine „w“-Berechtigung)
# ls -lrt /sys/module/lpfc/parameters/ -r--r--r--. 1 root root 4096 May 19 13:55 lpfc_hba_queue_depth -r--r--r--. 1 root root 4096 May 19 13:55 lpfc_lun_queue_depth -r--r--r--. 1 root root 4096 May 19 13:55 lpfc_tgt_queue_depth