Windows Vistaの登場から約半年。サーバー版のLonghorn(開発コード名)も最終ベータ版の5月投入を予定するなど,マイクロソフトの次世代OSを検証する時期が近付いている。両最新OSの売りの一つは,ネットワーク周りの性能向上だ。一足早く実際にファイル共有のデータ転送速度を測定してみた。

 Windows Vistaは,Windows XP以来約5年ぶりにネットワーク周りのシステム・プログラムを刷新したOSである。TCP/IPのプロトコル・スタックがIPv6を主軸とする実装に変わったほか,回線の帯域や遅延に応じて転送速度を調節する改善を施した。

 Windowsのファイル共有プロトコル「SMB」(server message block)においても,パケットのデータ構造やコマンド体系を見直すなど,高速化や大規模化に向けた「SMB 2.0」を実装している(図1)。

図1●Windows Vistaが搭載するファイル共有の主な強化点
図1●Windows Vistaが搭載するファイル共有の主な強化点
長年続いたSMBに加えて,新プロトコルのSMB 2.0を追加。TCP/IPスタックの受信応答のアルゴリズムも改良した。

 これらの新しい通信能力がフルに発揮されるのは,新機能に対応したOS,つまり Vista同士,あるいはVistaとそのサーバー版であるLonghornが通信するときである。ただし,Windows 2000/XPが広く浸透している多くの企業ネットワークを考えると,Vista導入の効果がどの程度なのかが気になってくる。

 そこで今回,社内のファイル・サーバーとクライアントの通信を想定したベンチマーク・テストを実施した。

 スループットに影響を与えるポイントとしては,(1)Vistaが備えるTCP/IPのウインドウ・サイズの自動制御機能と,(2)SMB 2.0がある。

 (1)のウインドウ・サイズの自動制御機能は,ウインドウ・サイズを帯域や遅延に合わせて動的に調整する機能である。ウインドウ・サイズとは,受信応答のパケット(ACK)を送ることなく連続的に受信できるTCPデータの量を伝えるパラメータのこと。受信側が送信側へ伝える。このパラメータをうまく制御すれば,帯域が広く,かつ遅延が大きいネットワークにおいてACKを待つ時間のオーバーヘッドが軽減される。

 ただし今回の実験は社内LANを想定しているので,遅延は1ミリ秒未満と極めて小さい。XPの段階で数十ミリまでの遅延であれば実効速度を損なわないウインドウ・サイズ(64Kバイト)が標準となったため,Vistaで加わった自動制御機能の効果はあまり期待できない。むしろ動的にウインドウ・サイズを変更する分だけ,スループットが安定しない可能性はある。

XP混在では有効にならない新機能

 (2)のSMB2.0では,SMBのコマンドをまとめて発行できる機能がスループットの向上に寄与するはずだ。一回の読み出し/書き込み命令で転送できるデータ量が増えるため,ファイル転送のパケットに占める制御用パケットの割合が減るからである。

 現状でSMB 2.0を実装しているOSはVistaと,開発中のLonghornである。SMB 2.0で通信するかどうかは,ネゴシエーションして決める。SMBのバージョンが互いに2.0であれば,SMB 2.0のプロトコルに基づいてファイルを共有する(表1)。SMB 2.0に対応していない XP以前のOSであれば,通常のSMBで通信する。なお,今のところ XPなど既存OSのアップデートとしては提供されていない。

表1●SMB 2.0が有効になる組み合わせ
Windows Vistaまたは次期サーバーOS「Longhorn」以外のOSでは有効にならない。
  Windows Vista以降のOS Windows XP以前のOS
Windows Vista以降のOS ×
Windows XP以前のOS × ×

 実験で用いた測定環境は4種類ある(図2)。(a)サーバー,クライアントとも Vista,(b)サーバーがVistaでクライアントがXP,(c)サーバーがXPでクライアントがVista,(d)サーバー,クライアントともXP--である。それぞれの環境で,ファイルの読み出し/書き込み速度を測定した。

図2●社内LANでの利用を想定したWindows Vistaのファイル転送ベンチマークの結果
図2●社内LANでの利用を想定したWindows Vistaのファイル転送ベンチマークの結果
Vista同士,Vista/XP混在で読み出し/書き込みの速度を測定した。Vista同士の場合,XP同士に比べ読み出しで約3Mビット/秒,書き込みで約15Mビット/秒速かった。サーバーのCPUはAthlon 64 X2 3800+,メモリー1Gバイト。クライアントのCPUはAthlon 64 2800+,メモリー1Gバイト。

 測定用のネットワークは100BASE-TXのイーサネット。テスト・データは単一のファイルで,サイズは128Mバイトである。テスト・データを格納したサーバーの共有フォルダをネットワーク・ドライブとしてクライアントにマウントし,コマンド・プロンプトで動作する「xcopy」コマンドでファイルを転送して測定した。

XP/Vista混在では性能低下も

 結果を見てみると,サーバー,クライアントともVistaで統一した(a)の環境が,最も高いスループットだった。読み出しが約63Mビット/秒,書き込みが約81Mビット/秒である。(d)のXP同士と比べると,読み出しこそ2Mビット/秒とそれほど目立った差はなかったが,書き込みでは16Mビット/秒という大幅な速度向上が見られた。

 スループットが出なかったのは,(b)と(c)のVista/XP混在環境である。VistaとXPが混在する環境を想定したテストでは,(b)のサーバーがVistaでクライアントがXPの場合で読み出しが61Mビット/秒,書き込みが62Mビット/秒となり,(c)のサーバーがXPでクライアントがVistaの場合で読み出し約61Mビット/秒,書き込み約65Mビットとなった。

 同じ混在環境として(b)と(c)を比べると,読み出しはほぼ同じ結果だが,書き込みでは3Mビット/秒の差がついた。ただ!)のXP同士でも,書き込みでは約65Mビット/秒という比較的高速な結果が出た。これらの結果から言えることは,VistaクライアントはサーバーがVistaあるいはLonghornでなければ処理速度が低下するということ。VistaはXPより重いOSなので,OS自体のオーバーヘッドをネットワーク周りの高速化で補う格好になると言えそうだ。

エクスプローラ経由は遅い

 ベンチマーク結果はVista同士で効果があるという結果になったが,実利用では注意が必要だ。Vistaでは,ファイル操作に使うエクスプローラの内部処理が増え,実際のファイル転送が始まるまでの時間が長くなっている。マイクロソフトは同社が公開する技術文書KB932170(http://support.microsoft.com/kb/932170/ja)で,エクスプローラではなくファイル転送用のrobocopyコマンドの利用を推奨している。

 またウインドウ・サイズの制御についても,無効にすることをファイル・コピー時の遅延回避策の一つとしている。コマンド・プロンプトで「netsh interface tcp set global autotuninglevel=disabled」と打ち込むことで,同機能を無効にできる(元に戻すにはdisabledをnormalにして実行する)。

 これらの事実から判断すると,ファイル・サーバーにLonghorn,クライアントにVistaという“純正環境”であっても,デフォルト設定のままエクスプローラでファイル共有するときは体感速度が向上しないことも起こりうるだろう。とはいえSMB 2.0がもたらすオーバーヘッドの軽減は,ファイル・サーバーのCPU負荷軽減につながるはず。多数のクライアントが頻繁にアクセスする環境なら,SMB 2.0が威力を発揮するだろう。