Schlechte iSCSI-Leistung mit SSD-Festplatten und 10-Gbe-Netzwerk

10

iSCSI-Ziel

Ubuntu 14.04 (Trusty Tahr) mit 16 GB RAM und 16 Core-CPU als LVM-gestütztes iSCSI-Ziel mit drei Samsung-SSD-Festplatten, die jeweils 65.000 IOPS mit einem LSI 6-Gbit / s-Controller mit integriertem Cache ausführen können.

Benchmark auf SSD-Festplatte im Ziel:

fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max

iops=65514

Wo sddist in Hardware- RAID 0 mit drei Samsung 850 EVO SSDs konfiguriert .

Initiator

Ich habe eine 500G LUN auf einem Ubuntu 14.04 Client mit 32 GB RAM und 8 Core CPUs exportiert.

Benchmark für exportierte LUN

fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max

iops=2400

Bei DAS und über das Netzwerk ist ein erheblicher Leistungsabfall zu verzeichnen. Ich habe mindestens 10.000 IOPS erwartet.

Die Kommunikation zwischen Ziel und Initiator beträgt weniger als 1 ms und iperf zeigt einen Netzwerkdurchsatz von 9,2 Gbit / s.

Ich verstehe, dass sich 4k-Schreibvorgänge auf die Leistung auswirken werden, da alle Daten den Netzwerkstapel sowohl des Initiators als auch des Ziels durchlaufen müssen, bevor sie auf die Festplatte geschrieben werden. Dies ist jedoch ein inakzeptabler Rückgang von 65k auf 2k.

Wo kann das Problem liegen? Ich habe eine 10-Gbit / s-Ethernet-Netzwerkkarte zwischen dem Ziel und dem Initiator. Irgendwelche Ideen?

Kevin Parker
quelle
2
Nicht annähernd genug Informationen und unsere Kristallkugeln sind zu teuer, um sie an nicht zahlende Kunden zu verschwenden. Wenn Sie Hilfe benötigen, geben Sie aussagekräftige Informationen an, anhand derer Sie die Dinge festnageln können.
TomTom
Ich habe meine Frage bearbeitet. Wenn Sie Zeit haben, können Sie mir mit Ihren Vorschlägen helfen.
Kevin Parker
Da die Netzwerkkarte und die CPU wahrscheinlich der Engpass bei jedem Software-iSCSI-Setup sind, möchten Sie möglicherweise erwähnen, um welche es sich handelt.
Rakslice

Antworten:

20

Kurze Antwort: Dies ist das Ergebnis der Netzwerklatenz und eine seriellen Arbeitsbelastung (wie Sie durch den Einsatz auferlegt direct=1, sync=1und iodepth=1).

Lange Antwort: mit direct=1, sync=1und iodepth=1Du erstellt eine serielle Arbeitsbelastung, da neue Schreibvorgänge nicht die Warteschlange gestellt werden können , bevor der vorherige Schreib begangen wurde und bestätigt. Mit anderen Worten, die Schreibübermittlungsrate hängt streng von der Netzwerklatenz ab. Ein einfacher pingComputer zwischen zwei Computern kann durchaus mehr als 0,2 ms betragen, insbesondere wenn ein Protokoll höherer Ebene als TCP (und darüber hinaus iSCSI) verwendet wird. Unter der Annahme einer Gesamtnetzwerklatenz von ca. 0,33 ms haben Sie einen maximalen IOPS-Wert von ca. 3000. Dies berücksichtigt keine anderen Latenzquellen (z. B. die Festplatten selbst) und entspricht somit den von Ihnen aufgezeichneten Daten.

Versuchen Sie Folgendes: Führen Sie einen ersten Benchmark ohne --direct=1 --sync=1und einen weiteren mit diesen Optionen aus, erhöhen Sie jedoch die iodepthAnforderungen auf 32. Dann berichten Sie hier die Ergebnisse.

Shodanshok
quelle