Ich habe ein QNAP TS-433 mit QTS 5.2.10 und der integrierten 2.5 GbE-Schnittstelle.
Systemdetails:
Modell: TS-X33
QTS: 5.2.10
Kernel: 5.10.60-qnap
Architektur: aarch64
NIC-Treiber: r8125
Treiber-Version: 9.007.01-NAPI
Das Problem ist, dass die 2.5 GbE-Schnittstelle keine stabile 2.5 GbE-Leistung bietet und eine große Anzahl an TCP-Neuübertragungen sowie Paketverlusten auf Empfängerseite zeigt.
Das Problem ist mir zuerst aufgefallen, weil die Videowiedergabe über SMB von einer externen USB-Festplatte, die am QNAP angeschlossen ist, sehr stark gestottert hat.
Die externe Festplatte selbst ist nicht der Engpass. Lokales Kopieren auf dem QNAP von diesem Datenträger liegt bei etwa 70–100 MB/s, während SMB-Lesen vom Mac anfangs nur etwa:
9 MB/s
betrug.
Nachdem ich einige Cisco Secure Client-Komponenten auf dem Mac deaktiviert und neu gestartet hatte, verbesserte sich die SMB-Leistung auf etwa:
81 MB/s
Es gab also ein separates Mac/Cisco-bezogenes SMB-Problem, aber weitere Tests haben ein unabhängiges Netzwerkproblem auf der QNAP-Seite gezeigt.
Das Netzwerk besteht aus dem Mac, einem Mac mini und dem QNAP, die alle am selben 2.5 GbE-Switch angeschlossen sind.
Mac ↔ Mac mini läuft praktisch perfekt:
~2.35 Gbit/s
Beispiel:
2.74 GByte übertragen
2.35 Gbit/s
111 Neuübertragungen
Die Gegenrichtung ist ähnlich stabil:
2.35 Gbit/s
43 Neuübertragungen
Mit 4 parallelen Streams:
Mac -> Mac mini:
2.35 Gbit/s
363 Neuübertragungen
Mac mini -> Mac:
2.35 Gbit/s
92 Neuübertragungen
Das QNAP verhält sich jedoch ganz anders.
Typischer Mac → QNAP Test:
2.12 Gbit/s
3963 Neuübertragungen
Ein weiterer Lauf:
2.06 Gbit/s
4350 Neuübertragungen
Ein weiterer Lauf:
2.11 Gbit/s
2968 Neuübertragungen
Die Gegenrichtung ist sogar noch schlechter und sehr instabil.
Beispiel QNAP → Mac:
1.34 Gbit/s
Während des Tests schwankte der Durchsatz ungefähr zwischen:
0.95 Gbit/s - 1.86 Gbit/s
Ein weiterer Gegenrichtungstest:
1.21 Gbit/s
412 Neuübertragungen
Vier parallele Streams haben das Problem nicht gelöst.
Mac → QNAP mit -P 4:
1.90 Gbit/s
17679 Neuübertragungen
QNAP → Mac mit -R -P 4:
1.19 Gbit/s
1549 Neuübertragungen
Das ist besonders interessant, weil beim gleichen Mac und selben Switch der Mac mini konstant 2.35 Gbit/s mit fast keinem Paketverlust erreicht.
Ich habe auch die QNAP-NIC-Statistiken geprüft mit:
ethtool -S eth0
Während eines einzelnen iperf-Tests änderten sich die Zähler von:
rx_missed: 24545
rx_mac_error: 117
rx_mac_missed: 720535
zu:
rx_missed: 27430
rx_mac_error: 123
rx_mac_missed: 720628
Also während dieses Tests:
rx_missed: +2885
rx_mac_error: +6
rx_mac_missed: +93
Der iperf-Test meldete zur gleichen Zeit:
2968 Neuübertragungen
Der fast identische Umfang von rx_missed und TCP-Neuübertragungen weist stark auf Paketverlust auf Empfängerseite des QNAP-NIC/Treibers hin.
Das NIC meldet:
Speed: 2500Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
Ich habe bereits unterschiedliche Ethernet-Kabel und verschiedene Ports des Switches getestet. Die Ergebnisse bleiben gleich.
EEE ist ebenfalls deaktiviert:
EEE status: disabled
Tx LPI: disabled
Flow Control ist wie folgt eingestellt:
RX: on
TX: on
RX negotiated: off
TX negotiated: off
Die Fähigkeiten des Treibers sind ebenfalls interessant:
receive-hashing: off [fixed]
scatter-gather: off
tcp-segmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: on
Das Interface bietet nur jeweils einen RX-Queue und einen TX-Queue:
/sys/class/net/eth0/queues/
rx-0
tx-0
Es gibt auch nur einen NIC-Interrupt:
eth0-0
Und Hardware Receive Hashing / RSS ist nicht verfügbar.
Ich habe zudem IRQ-Affinity und RPS getestet.
IRQ-Affinity-Änderungen haben die Leistung nicht merklich verbessert:
Nur CPU3:
~2.00 Gbit/s
4011 Neuübertragungen
CPU1-3:
~2.05 Gbit/s
5006 Neuübertragungen
RPS war zunächst deaktiviert:
rps_cpus = 0
xps_cpus = 0
Ich habe RPS über alle vier CPUs aktiviert:
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
Das hat das Problem jedoch ebenfalls nicht gelöst.
Ich habe das NIC auch bei 1 GbE getestet.
Bei 1 GbE verbessert sich die Situation deutlich:
Mac -> QNAP:
~939 Mbit/s
682 Neuübertragungen
QNAP -> Mac:
~854-914 Mbit/s
~500-600 Neuübertragungen
Das Problem wird also speziell bei 2.5 GbE-Geschwindigkeiten deutlich gravierender.
Bis zu diesem Punkt habe ich ausgeschlossen:
- Ethernet-Kabel
- Switch-Port
- den Switch selbst
- Mac 2.5 GbE-Schnittstelle
- EEE
- einfache IRQ-affinity-Probleme
- RPS-Konfiguration
- Performance der externen Festplatte
- SMB als Netzwerkursache
Der verbleibende gemeinsame Faktor ist die RTL8125-Schnittstelle mit QNAP r8125 9.007.01-NAPI Treiber.
Basierend auf der Diskussion in diesem Thread scheint es, dass neuere r8125-Versionen auf dem TS-433 getestet wurden.
Hat jemand von QNAP ein offizielles Firmware-Build mit einer neueren RTL8125-Treiberversion erhalten?
Insbesondere würde mich interessieren, ob QNAP plant, den TS-433 von:
r8125 9.007.01-NAPI
auf eine neuere Treiberversion in einem zukünftigen QTS-Release zu aktualisieren.
Aus meinen Messungen sieht das nicht nach einer einfachen Performance-Begrenzung aus: Das NIC erhöht tatsächlich die rx_missed-Zähler unter Last, verursacht TCP-Paketverlust und tausende Neuübertragungen.