ハイエンドNICは実際にどの程度ネットワークスループットを向上させるのか?

 マザーボードに標準で搭載されているGigabit Ethernet NICをIntel製ハイエンドデスクトップ用NICに置き換えた場合、具体的にどの程度の機能向上が見込めるのだろう? 今回私は、2つの一般的なマザーボード搭載型ギガビットNICおよび、これらをIntel製PCIeデスクトップ用ギガビットNICに置き換えた場合とを比較対象として、ネットワークを介したNFS共有アクセスに特化したベンチマークを実行してみた。その結果を簡単にまとめておくと、連続的なリード/ライト処理のスループットはそれ程向上しなかったものの、レイテンシ(待ち時間)がかなり改善されたため、ネットワークの往復を伴うファイルの作成、削除、シークなどの処理が高速化することが判明したのである。

 今回のベンチマークテストに使用した2台のマシンはそれぞれ、AMD Athlon64 X2 4200+およびIntel Core 2 Quad Q6600クアドコアCPUを搭載したP35マザーボードを使用している。このうちAMDマシンはNvidia CK804 Ethernet Controller(rev a3)とforcedethドライバという組み合わせで、IntelマシンはMarvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller(rev 12)とsky2ドライバという組み合わせである。

 これらの比較対象に選んだNICSは、2枚のIntel Pro/1000 PTギガビットPCIe NICである。特に言及しない場合、ここでのテストは2つのコンピュータ間をDLink DGS-1008Dギガビットスイッチでつないだ結果を示している。またこれらの2つのテストマシンを除き、このスイッチには他の負荷はかからないようにしてある。なおスイッチを介さない状態でIntel NICに対していくつかのテストも実行しておいたが、その際にはレイテンシは10から20%程度向上したものの帯域幅については大差なかった。

 ベンチマーク測定用ツールとして使用したのは、lmbench(バージョン3.0-a9)、fio(バージョン1.18)、bonnie++(バージョン1.03)である。lmbenchでは様々なマイクロベンチマークを実施できるが、ここではネットワークに関連する項目として、ネットワーク帯域幅を計測するbw_tcpおよび、TCPとUDP通信のネットワークレイテンシをそれぞれ計測するlat_tcplat_udpに注目した。同じくfioおよびbonnie++で計測したのは、NFSを用いて共有されたRAID-5アレイに格納されているファイルシステムへのアクセスパフォーマンスである。またfioによる計測は主として、NFS共有されたファイルシステムに対する一般的なアクセスパターンがNICの違いによりどのように変化するかの確認に使用している。

 最初に行ったのは、各マシンの発揮可能な最大パフォーマンスを確認しておく目的でそれぞれのローカルホストに対して実施した、lmbenchによるテストである。

各マシンのローカルホストに対するlmbenchネットワークマイクロベンチマーク
ベンチマーク\マシン AMD X2 4200 Intel Q6600
bw_tcp(MB/秒)7661298
lat_tcp(マイクロ秒)31.829.8
lat_udp(マイクロ秒)31.930.2

 マザーボードNICを介して通信させた場合、bw_tcpは109.43Mbps、TCPレイテンシは1,459マイクロ秒、UDPレイテンシは1,129マイクロ秒というテスト結果が出された。次にIntel NICを介して同じテストを実施した場合、bw_tcpは87.47Mbps、TCPレイテンシは121マイクロ秒、UDPレイテンシは100マイクロ秒というスコアを出している。ここではネットワークレイテンシが大幅に改善されているが、この結果についてはマザーボードのオンボードNICに接続し直した上で再検証してある。またbw_tcpについてはマザーボードNICを使用した場合よりもIntel NICを使用した場合の方が悪化しているが、この結果はジャンボ(jumbo)フレームの有効化やe1000モジュールパラメータ(InterruptThrottleRate、RxDescriptors、TxDescriptors)の変更をしても劣ったままであった。その他IntelのWebサイトから入手したドライバe1000-7.6.15.4も試してみたが、その場合もIntel NICでのbw_tcp値87.5Mbpsに対する大幅な改善は成されていない。結局、Intel NICを使用することでレイテンシは1桁短縮されるものの、最大スループットについてはオンボードNICのレベルに戻すことはできなかった。Intel NICにてこうした悪化が生じる理由は今のところ不明である。

 fioを用いたベンチマークでは、1,024MBファイルの連続リード、128MBファイルのランダムリード、512MBファイルのランダムなリード/ライトをテストした。その結果、Intel NICを使用した場合はランダムリード/ライトでのパフォーマンス向上が成されているが、これはおそらく同NICによるレイテンシ改善の恩恵を受けているのであろう。Intel NICの最小スループットについては、ランダムリードではマザーボードNIC使用時の約2倍に向上しているものの、ランダムリード/ライトでは逆に悪化している。

NFS共有した3ディスクRAID-5に格納されたファイルシステムに対するfioベンチマーク
NIC マザーボードNIC Intel Pro/1000 PT
結果(Mbps) minmaxaggrbminmaxaggrb
連続リード77.1113.8 102 96.4102.899.6
ランダムリード6.7 16.7 13.515.617.416.2
ランダムリード/ライト13/015.3/15.35.5/5.5 8/016.1/15.45.5/7.1

 最後に行ったbonnie++ベンチマークは、NFS共有したRAID-5上にあるファイルシステムに対するテストである。マザーボードNICでのベンチマークの所要時間は14分40秒であったのに対して、Intel NICでのテスト完了には11分半強を要した。ここで注目すべきはどちらのネットワーク構成でも、連続的なアウトプット/インプット処理については両者がほぼ同等の結果を示している点である。おそらくIntel NICではレイテンシが短縮されることが、1秒当たりのシーク、作成、リード、削除の処理量の向上に寄与しているのだろう。つまりレイテンシの違いが、15分の実行時間から3分近くの短縮という目に見えるトータルパフォーマンスの差異となって現れているのである。

Bonnie++ on a filesystem on RAID-5 over NFS using motherboard NICs.

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
alkid            4G 42652  80 41138   5 25811   7 58229  95 102953  10  1479   6
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16   190   1  1021   2   175   0   196   1  1051   1   176   0
Bonnie++ on a filesystem on RAID-5 over NFS using two Intel Pro/1000 PT NICs

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
alkid            4G 44477  80 40783   5 25534   7 58719  96 97800   9  1708   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16   359   2  6139  11   303   1   358   1  6634  12   296   0

 1ないし2枚のギガビットNICが標準搭載されたマザーボードを現在使用しているユーザであれば、マシン1台当たり50ドル前後の出費を伴うギガビットNICの別途追加を正当化する理由を見いだすのは難しいだろう。実際デュアルコアないしクアドコアのCPU搭載マシンを使っていれば、過大なネットワーク負荷のかかる処理時における若干のプロセッサ時間の損失もそれほど気にならないはずだ。ただしNFS共有した高速RAID型のファイルサーバに置かれたファイルシステムへのアクセスを頻繁に行うヘビーユーザであれば、こうしたNICの追加は有意義な投資と見なせるかもしれない。ここでのベンチマーク結果が示しているように、連続したバルク転送単体での帯域幅向上は期待できないものの、ファイルの作成、削除、シークといった一部の処理については目に見えるレベルでの高速化がもたらされ、おそらくこれにはIntel NICを使用した場合のレイテンシ短縮が寄与しているものと思われる。

Ben Martinは10年以上にわたってファイルシステムに取り組んでおり、博士課程の取得後、現在はlibferris、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。

Linux.com 原文