「高遅延ネットワーク」でのTCPパフォーマンスの向上


8

Linuxマシン間の「高遅延ネットワーク」を介してTCPスループットを改善しようとしています。

私はセットtcp_memtcp_wmemおよびtcp_rmem「8192 7061504 7061504」へ。
私が設定しrmem_maxwmem_maxrmem_defaultおよびwmem_default「7061504」へ。
私はセットnetdev_max_backlogtxqueuelen10000への
Iセットtcp_congestion_control「スケーラブル」へ。

「nist」(cnistnet)を使用して100ミリ秒の遅延をシミュレートしています。到達する帯域幅は約200 mbpsです(遅延なしでは約790 mbpsに到達します)。

テストを実行するためにiperfを使用し、結果を分析するためにTCPTraceを使用しています。

受信側:
最大勝利adv:5294720バイト
平均勝利adv:5273959バイト
送信されたsack pkts:0

送信側:
実際のデータバイト:3085179704
rexmtデータバイト:9018144
最大owin:5294577バイト
平均owin :3317125バイト
RTT最小:19.2 ms
RTT最大:218.2 ms
RTT平均:98.0 ms

なぜ200mbpsしか到達しないのですか?「owin」は何かと関係があると思いますが、よくわかりません(これらの結果は2分のテストの結果です。1分のテストの「avg owin」は1552900でした)…

遅延が100ミリ秒であっても、スループットがほぼ790 Mbpsであると誤解していますか?

(私はウィンドウ構成でより大きな数を使用しようとしましたが、効果がないようです)


ここに本物のハードウェアが手に入りました。TCPのテイクCPU、NICはなど。、ACPIは、独自の制限があり、独自のバッファを持っている
J-16 SDiZ

回答:


3

これは、「Long Fat Pipe」と呼ばれる一般的なTCPの問題です。あなたがそのフレーズとTCPをググると、この問題と可能な解決策に関する多くの情報が見つかります。

このスレッドには、この種のことのためにLinux TCPスタックをチューニングするための一連の計算と提案があります。


1

サイト

http://www.psc.edu/networking/projects/tcptune/

Linuxは現在、TCP設定を自動調整しているため、値をいじっても改善されない可能性が高いと述べています。

とはいえ、100 msと広い帯域幅(少なくとも790 mbps)を併用すると、巨大なBDPが発生する可能性があるため、自動調整によって何かが間違っていると判断され、十分ではない可能性があります。


カーネルのバージョンによっては、自動チューニングが20MBをはるかに超えることがわかりました。
pfo 2011


0

そのリンクのbandwidth-delay-productを実際に一致させるようにiperfウィンドウサイズを設定してみてください。だから平均 RTT * 1Gbpsはおおよそ10MBを与えるはずです。それが物事を改善するかどうかを確認します。


0

何が起こっているのかを本当に理解し始めることができる唯一の方法は、より多くのデータを取得することです。パッケージsarからシステムレベルのビュー(CPU、メモリ、割り込みなど)を取得することをお勧めしiostatます。また、Wiresharkまたはtcpdumpを使用してパケットダンプを取得する必要があります。次に、Wiresharkを使用して、このためのツールがたくさんあるので、それを分析できます。経時的なウィンドウサイズ、パケット損失などをグラフ化できます。

高レイテンシリンクでのわずかなパケット損失でさえ、帯域幅をかなり損なう傾向があります。シミュレーションされていますが、これは少し奇妙です。小さなパケットがたくさんあると、高い割り込みが発生する可能性があります(それらも同様にシミュレートされますか?)。

つまり、TCPDumpとSarを取得して、パケットレベルとシステムリソースで何が行われているのかを確認します。


0

このマシンにはどのくらいのメモリがありますか?tcp_mem設定は非常識であると思われる、それは世界的にTCPデータの28ギガバイト(7061504 * 4キロバイト)を構成しました。(ただし、数ソケットのテスト実行ではこの制限に達しない可能性が高いため、これはパフォーマンスの問題ではありません。tcp_memをtcp_xmemの値に設定すると、非常に一般的な誤解が生じるため、単に言及したいと思います)。

デフォルトで設定した7MBは問題ないようです。ただし、最大遅延パイプでは、最大値がはるかに高くなる場合があります。テストでは、tcp_wmemおよびの最大数として64MBを使用しtcp_rmemます。これが制限要因であることを除外できます。(これはバッファーを膨らませるので、並行性が制限されていて、接続のジッターとドロップが低い場合にのみ機能します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.