2
Linuxの最新バージョンでのより高いTCPレイテンシ
私の研究グループでは、最近、マシンのOSをRed Hat 6.2からDebian 8.3にアップグレードし、マシン間の統合Intel 1G NICを介したTCPラウンドトリップ時間が約110µsから220µsに倍増したことを観察しました。 最初は構成の問題だと思ったので、tcp_low_latency=1アップグレードされていないRed HatマシンからDebianマシンにすべてのsysctl構成(など)をコピーしましたが、問題は解決しませんでした。次に、これはLinuxディストリビューションの問題であると考え、マシンにRed Hat 7.2をインストールしましたが、往復時間は約220µsのままでした。 最後に、Debian 8.3とRed Hat 7.2の両方がカーネル3.xを使用していて、Red Hat 6.2がカーネル2.6を使用していたため、問題はLinuxカーネルバージョンにあると考えました。これをテストするために、Linuxカーネル2.6とビンゴでDebian 6.0をインストールしました。時間は再び110µsで速くなりました。 他の人も、最新バージョンのLinuxでこれらの高いレイテンシを経験しましたか?既知の回避策はありますか? 最小作業例 以下は、レイテンシのベンチマークに使用できるC ++アプリケーションです。メッセージを送信し、応答を待ってから、次のメッセージを送信することにより、レイテンシを測定します。100バイトのメッセージでこれを100,000回行います。したがって、クライアントの実行時間を100,000で割ると、往復の待ち時間が得られます。これを使用するには、まずプログラムをコンパイルします。 g++ -o socketpingpong -O3 -std=c++0x Server.cpp 次に、ホストでアプリケーションのサーバー側バージョンを実行します(たとえば、192.168.0.101)。IPを指定して、よく知られているインターフェイスでホストしていることを確認します。 socketpingpong 192.168.0.101 そして、Unixユーティリティtimeを使用して、クライアントの実行時間を測定します。 time socketpingpong 192.168.0.101 client 同一のハードウェアを備えた2つのDebian 8.3ホスト間でこの実験を実行すると、次の結果が得られます。 real 0m22.743s user 0m0.124s sys 0m1.992s Debian 6.0の結果は real 0m11.448s user 0m0.716s sys …