私はQNAP TS-433(内蔵2.5 GbEインターフェース搭載、QTS 5.2.10運用中)を使っています。
システム詳細:
モデル: TS-X33
QTS: 5.2.10
カーネル: 5.10.60-qnap
アーキテクチャ: aarch64
NICドライバー: r8125
ドライバーバージョン: 9.007.01-NAPI
問題は、2.5 GbEインターフェースが安定した2.5 GbE性能を提供できず、大量のTCP再送/受信側パケットドロップが発生していることです。
最初にこの問題に気付いたのは、QNAPに接続した外付けUSB HDD経由でSMBで動画再生した時に、ひどいスタッタリングが発生したことでした。
外付けHDD自体がボトルネックではありません。QNAP内でそのディスクからローカルコピーすると70–100 MB/s程度出ますが、MacからSMBで読んだ場合は最初以下のような速度のみでした:
9 MB/s
Mac側でCisco Secure Clientのコンポーネントを無効化し再起動すると、SMB性能が約以下まで改善しました:
81 MB/s
つまり、Mac/Cisco関連のSMB問題が別途存在していましたが、その後の検証でQNAP側の独立したネットワーク問題が明らかになりました。
ネットワーク構成は、Mac、Mac mini、QNAPすべて同じ2.5 GbEスイッチ接続です。
Mac ↔ Mac mini間の性能はほぼ完璧です:
~2.35 Gbit/s
例:
2.74 GB転送
2.35 Gbit/s
111再送
逆方向も同様に安定:
2.35 Gbit/s
43再送
4並列ストリームの場合:
Mac -> Mac mini:
2.35 Gbit/s
363再送
Mac mini -> Mac:
2.35 Gbit/s
92再送
ただし、QNAPは全く異なる挙動を示します。
Mac → QNAPの典型的なテスト:
2.12 Gbit/s
3963再送
別のテスト:
2.06 Gbit/s
4350再送
さらに:
2.11 Gbit/s
2968再送
逆方向はさらに悪く非常に不安定です。
例:QNAP → Mac:
1.34 Gbit/s
テスト中のスループットは以下の間で大きく変動:
0.95 Gbit/s - 1.86 Gbit/s
逆方向の再テスト:
1.21 Gbit/s
412再送
4並列ストリームでも改善されません。
Mac → QNAP(-P 4):
1.90 Gbit/s
17679再送
QNAP → Mac(-R -P 4):
1.19 Gbit/s
1549再送
同じMacと同じスイッチ環境で、Mac miniは常にほぼパケットロスなしで2.35 Gbit/sを維持する点が特に興味深いです。
QNAPのNIC統計も確認しました:
ethtool -S eth0
単一のiperfテスト中、カウンターは以下のように変化しました:
rx_missed: 24545
rx_mac_error: 117
rx_mac_missed: 720535
→
rx_missed: 27430
rx_mac_error: 123
rx_mac_missed: 720628
テスト中の増分:
rx_missed: +2885
rx_mac_error: +6
rx_mac_missed: +93
同時にiperfテストでは:
2968再送
rx_missedとTCP再送のほぼ同じスケールから、QNAP NIC/ドライバーの受信側パケットロスが強く疑われます。
NICの状態:
Speed: 2500Mb/s
Duplex: Full
Auto-negotiation: on
Link detected: yes
異なるEthernetケーブル・スイッチポートも試しましたが結果は変わりません。
EEEも無効化:
EEE status: disabled
Tx LPI: disabled
フロー制御設定:
RX: on
TX: on
RX negotiated: off
TX negotiated: off
ドライバー機能は以下の通り:
receive-hashing: off [固定]
scatter-gather: off
tcp-segmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: on
インターフェースにはRXキュー・TXキュー各1つのみ:
/sys/class/net/eth0/queues/
rx-0
tx-0
NIC割り込みも1つのみ:
eth0-0
またハードウェア受信ハッシュ/RSSなし。
IRQアフィニティやRPSも試しました。
IRQアフィニティ変更でも性能は大きく改善せず:
CPU3のみ:
~2.00 Gbit/s
4011再送
CPU1-3:
~2.05 Gbit/s
5006再送
RPSは最初無効:
rps_cpus = 0
xps_cpus = 0
4CPU全体へRPS有効化:
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
しかしこれでも問題は解決せず。
NICを1 GbEでもテストしました。
1 GbE時は状況が大幅に改善します:
Mac -> QNAP:
~939 Mbit/s
682再送
QNAP -> Mac:
~854-914 Mbit/s
~500-600再送
つまり問題は特に2.5 GbE速度時により深刻になります。
現時点で除外できた要因:
- Ethernetケーブル
- スイッチポート
- スイッチ本体
- Macの2.5 GbEインターフェース
- EEE
- 単純なIRQアフィニティ問題
- RPS設定
- 外付けHDD性能
- SMBが直接的な原因ではない
残る共通要素はRTL8125インターフェース+QNAP r8125 9.007.01-NAPIドライバーです。
本スレッドでの議論によると、TS-433で新しいr8125バージョンも検証されているようです。
QNAP公式ファームウェアで新しいRTL8125ドライバーを入手した方はいませんか?
特に、QTSの今後のリリースでTS-433の
r8125 9.007.01-NAPI
から新しいドライバーバージョンに更新される予定があるか知りたいです。
私の測定結果からすると単なる性能上限ではありません。NIC側のrx_missedカウンターが実際に増加しており、負荷時にTCPパケットロス/数千回の再送が発生しています。