最大1Gビット/秒の通信速度を誇るギガビット・イーサネット。USB 2.0の480Mビット/秒に倍する「パソコン最速」のインターフェースだ。とはいえ、1Gビット/秒を期待すると肩すかしを食う。一般のパソコンでは実効速度で300Mビット/秒も出ない。チューニングを施し、速度アップを試みた。

 最大1Gビット/秒で通信できるギガビット・イーサネット機器が100BASE-TX並みの価格で手に入るようになってきた。メタルケーブルを使う1000BASE-Tに対応する製品だ。ネットワーク・カードであれば4000円前後,全ポートが1000BASE-T対応の4ポート・スイッチでさえ1万円未満で買えるようになっている。ギガビットのネットワークはもはや基幹だけのものではない。

 とはいえ,単にカードとスイッチを入れ替えただけでは,最大転送能力は引き出せない。「一般のパソコンでは400Mビット/秒がやっと」(複数の周辺機器メーカー)というのが現状だ。実使用で1Gビット/秒に近い通信速度を得るには,ハードウェア性能の強化とネットワーク・プロトコルのチューニングが欠かせない。

パソコンの性能が追いつかない

 チューニングの実際を見ていく前に,一般的な環境におけるギガビット・イーサネットの実効速度を確認しておこう。一般的な仕様を想定した自作クライアント機にギガビット・イーサネット・カードを装着し,実使用上のスループットを計測した。計測した環境は,サーバーにXeon 2.4GHzのデュアルCPU機「NEC Express5800/56Wg」,クライアントにCeleron 2GHz搭載の自作機を配したもの。サーバー側のネットワーク・カードは米Intel社製の「Intel PRO/1000 T Server Adapter」,クライアント側のカードは「Intel PRO/1000 MT Desktop」とした。

図1●一般的なパソコンでの実効速度とボトルネック
NEC Express5800/56Wgに米Intel社製64ビット/66MHz PCIカード「Intel PRO/1000 T Server Adapter」を装着したマシンをサーバーとして,Pentium 4(2.5GHz)搭載の自作機に32ビット/33MHz PCIカード「Intel PRO/1000 MT Desktop Adapter」を装着した自作パソコンのスループットを計測した。Express5800/56Wgは2002年6月発売で,現行機種はExpress5800/56Xa。

 測定したのは,TCP/IPのスループットとファイル転送。TCP/IPのスループットの計測には,米Hewlett-Packard社のTCP/IP性能測定ツール「Netperf」を使った。ファイル転送は,600Mバイトのバイナリ・ファイルをWindowsの共有フォルダから読み出し/書き込みにかかった時間を基に計測した。時間はコマンドの実行時間を計測する「Timethis」ツール(http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/timethis-o.aspで無償配布)を用いた。OSはWindows 2000である。

 この環境では,実効速度で300Mビット/秒がやっとである(図1[拡大表示])。結果を見てみると,TCP/IPレベル(Netperf)のスループットが約300Mビット/秒であるのに対して,ファイルの読み書きは260M~270Mビット/秒とやや低い。

 ボトルネックはどこにあるのだろうか。サーバー側のCPU使用率はNetperf,ファイル転送とも20~40%程度なので,CPUの処理能力には余裕がある。また,ハードディスクの転送速度も60Mバイト/秒と十分といえる。ところがクライアント側のCPU使用率は,Netperf計測時で99%と限界に近いところまで達した。CPUによるTCP/IPやファイル共有プロトコルの処理に時間がかかり,TCP/IPレベル(Netperf)のスループットが約300Mビット/秒にとどまったと見られる。

 ファイルの読み書きでは,CPU性能ではなく,クライアント側のハードディスクがボトルネックとなったようだ。ハードディスクの連続読み出し速度が約33Mバイト/秒(=264Mビット/秒前後)であったためだ。

内部の減速要因をなくした「CSA」

図2●ギガビット・イーサネット経由でファイルを読み出す際のパソコン内のデータの流れ
PCI接続ではチップセット間のバスを往復するデータ転送が多発するのに対して,CSA接続ではハードディスクへの書き込み時のみとなる。

 では,CPUとハードディスクの能力を高めるとスループットは劇的に高まるのだろうか。実は,それとは別の構造上のボトルネックも一般的なパソコンには存在する。パソコンの内部バスが,ギガビット・イーサネットの最大速度に追いついていないことだ(図2-a[拡大表示])。増設スロットのバスとして馴染みのある32ビットPCI(Peripheral Component Interconnect)の最大データ転送速度は133Mバイト/秒。ただし,この133Mバイト/秒という仕様はデータを連続転送する「バースト転送」時の瞬間最大値である。PCIバスの利用権を調整する時間や,データを転送するメモリー・アドレスを指定する時間を含めると,実効速度は100Mバイト/秒(800Mビット/秒)程度となる。そのうえ,ギガビット・イーサネットは信号の送受信を同時にこなせる全二重のインタフェースであるため,最大2Gビット/秒(250Mバイト/秒)の帯域が必要になる。送受信が同時に起こる使い方では,どうしてもPCIバスがボトルネックになってしまうのである。

 ギガビット・イーサネットの性能を引き出すには,32ビットPCIバス以上の帯域を持つインタフェースが求められる。サーバー機では,32ビットPCIの4倍の帯域を持つ最大533Mバイト/秒で転送できる「64ビットPCI」を備えている製品が大勢を占める。信号線の数を32本から71本に増やし,動作周波数も33MHzだけでなく66MHzをサポートする。半面,信号線の増加と動作周波数が上がるため,コストと大きさを押し上げてしまう。一般のパソコンにはほとんど採用されていない。

 そこで32ビットPCI以上の帯域を安価に確保する手段として,Intelは2003年4月に発表した同社のチップセット「i875」にギガビット・イーサネット・コントローラ専用インタフェース「Communication Streaming Architecture」(CSA)を追加した。すでにマザーボードに直付けするオンボードの同社製ネットワーク・コントローラ「Intel PRO/1000 CT」と組み合わせたマザーボードが市場に出回り始めている。個人向けパソコンでは,NECとソニーが上位機で採用した。

 CSAの帯域はPCIバスの2倍の266Mバイト/秒。CPUとメモリーを制御するコントローラ・チップ(いわゆるノースブリッジ)に直結する(図2-b[拡大表示])。ノースブリッジに直結するのは,(1)チップセット間を往復することによるチップセット間バスの占有,(2)チップセット間バスを往復するための遅延,というこれまで抱えていた二つの問題を解決したいからである。ギガビット・イーサネット経由でファイルをダウンロードする際のパソコン内のデータの流れを例に取ると,ネットワーク・カードから入ったデータはメモリーに転送され,CPUによるTCP/IPやファイル共有プロトコルの処理を経て,ハードディスクに書き込まれる。データを読み出しながら別のパソコンに書き込むような作業をすると,必要な帯域は250Mバイト/秒(2Gビット/秒)と倍になる。