Windowsファイル共有ネットワークのボトルネック(限界・最大転送スループット)
Windows共有(Windowsネットワーク)を使用しているプログラム・システムは多い。
このWindows共有のネットワークプロトコルSMBもしくはCIFSには ボトルネックになりうる限界があるようだ。
ギガビットイーサーのNICを使用し、1Gbpsのネットワーク帯域があるにも関わらず、
Windowsのファイル共有でファイル転送すると、1多重(セッション)でどんなにがんばっても 50%程度のネットワーク帯域しか使えない。
このWindowsネットワークの限界値、調べてみてもどこにボトルネックがあるのか不明。
プロトコルの仕様的な問題かも知れない。
以下の、URL情報日経BPを見ると
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030918/3/
ウインドウ・サイズやジャンボ・フレームを変更してもSMBとCIFSともに効果なしだったそうです。
日経BPでのWindowsファイル共有(Windowsネットワーク)の最大転送スループットが511Mビット/秒。
また、アスキービジネスの以下のURLの記事
http://ascii-business.com/news/wanjet060728.html
も良い概算サンプルになる。
「 ただ、CIFSは本来LAN環境を前提に作られたプロトコルであり、WANを経由すると遅くなることがよく知られている。原因は、CIFSで1度の要求に対して応答できるデータの大きさが61KBに制限されているためだ。
たとえば、CIFSでは100MBのファイルをドラッグアンドドロップした場合、約1700回のやりとりが必要である。遅延が1ms程度のLANであれば、計算上は1700×1msで約1.7秒でコピーが完了する。それに対し、遅延が200msあるWANの場合、コピーにかかる時間は5~6分にもなってしまう。 」
厳密には不明だが、概算としてはテスト結果と一致している。
概算結果のWindowsファイル共有(Windowsネットワーク)の最大転送スループットが470Mビット/秒。
やはり、1GbEのNICを使用したWindowsファイルサーバーは、 1Gbpsのネットワーク帯域を使用しきる事は出来きない。
(テスト環境のストレージスループットは良くて150MB/s 程度と考えている。 )
Windows上で、ストレージネックを考慮しないテスト方法
windows OS上でネットワーク帯域測定
① fsutil で大きいサイズの転送用データ作成
> fsutil file createnew zero-10gbite.dat 10737418240
② compactでディスク上0バイトに圧縮 (ファイルシステムクラスタサイズの4KB )
> compact /c zero-10gbite.dat
③ copyでネットワーク越しにnulデバイスにコピー
> copy \\server\test\zero-10gbite.dat nul
ディスクのネックを考えないで純粋にネットワーク帯域測定が出来る
テスト結果、
1多重 ・・・ 1gbEの44%
2多重 ・・・ 1gbEの70%
3多重 ・・・ 1gbEの80%
と多重度を上げれば徐々にスループット倍率は低下するが、ネットワーク帯域はまだ使用できる。
(テストは、クライアント・サーバー共にWindows Server 2003 R2を使用)
1gbEの70%は90MB/s程度(1gbE=128MB/s)なので、巨大ファイルのコピー2多重の場合は70%出る前にディスクネックになる可能性が高い。