web-dev-qa-db-ja.com

ギガビットLANを介した単一ファイル転送が50MB /秒より速くないのはなぜですか?

ギガビットネットワークでいくつかのテストを実行しました。

大きなファイル(10GB)をWindows 7コンピューターから別のコンピューターに転送すると、トラフィックは50Mbを超えることはありません(80MB /秒で1秒間開始し、その後32MB /秒に低下します)。

複数のコンピューターからの同時転送を使用して、クライアントはGb接続を最大化できます。 Idem、同時に複数のクライアントを使用する場合、ソースコンピューターはGbトラフィックの近くに到達します。

テストは非常に高速なドライブで行われました(RAID 0では2ヴェロキラプトル、LSIメガレイドRAID5、SSD、RevodriveX3では4WD red ...)。したがって、それらはボトルネックではありません。

Windowsサーバーから転送する場合、スループットはわずかに向上しますが、予想される112MB /秒のギビットLANからはほど遠いです。

何か案が ?

奇妙な歩行者のコメントの後に編集:ASUSマザーボードとDellWorkstationで統合されたNIC(intel)を使用しています。スイッチは管理可能なCisco SG 300-20、SF 300-08、およびNetgear GS108です。

1
bokan

TCP/IPを使用してファイルを転送していると思いますが、使用しているプロトコルについても言及していません。

これに対する答えは大きな本を埋めるでしょう-そしてそれらはたくさんあります。しかし、考えられる理由には次のものがあります。

  1. 輻輳制御 :ネットワークスタックはスループットを抑制し、接続の存続期間にわたってレートを徐々に上げます(パケット損失が発生するまで、レートは大幅に低下します)。ジャンボパケットの使用も役立ちます。

  2. ウィンドウサイズ :TCP/IPエンドポイントは、リモートシステムがバッファリングできると考えられる量のデータのみを送信します。受信側は、少なくとも帯域幅xRTTをバッファリングできる必要があります。ここではRTTは低くなっていますが、帯域幅は広くなっています。 IPV4が設計されたとき、そのような大きなバッファに対処する必要はありませんでした。ウィンドウスケーリングを有効にするという解決策があります。

  3. お使いのコンピュータは、データ送信の目的に専念していません-それはマルチタスクです。データを処理するために、NICは割り込みを生成します-これにより遅延が追加されます。カードのバッファリングを有効にすることで、良好なネットワークカードへの影響を軽減できます(割り込み合体)

  4. データをフレームにラップし、ネットワーク上でそれらを噴出させるには、コンピューターが行うべきかなりの量の作業がまだあります-これも軽減できます-この場合、 TCPオフロード (OS /の場合)を使用しますハードウェアはそれをサポートします。

....そしてそれはあなたがファイルを転送するために使用しているイーサネットやプロトコルの特性を見る前です。

4
symcbean

私はついに100MB /秒以上のファイル転送を達成することができました。

NICをペリフェラルマネージャーから削除して再インストールしました。Intelドライバーパラメーターが混乱していると思います。おそらく、高いMTUをセットアップしようとしたためです。

0
bokan