2002年10月現在、Linuxで利用可能なネットワークカードの種類は大変豊富に
存在します。値段が高いものから安いもの。大きいものから小さいものまで、
ひと口に100Base-TX対応PCIカードと言っても価格、種類、性能の差は
ピンからキリ まで様々です。
ネットワークカードの見分け方は、
コアとして搭載しているコントローラチップにあり、
代表的な製品が搭載しているチップとして、
- Intel
- 3com
- DEC
- SMC
- VIA
- WDC
- AMD
- RealTek
などが挙げられます。
日本でパッケージ販売されている製品(メルコ,Planex,コレガ)も
殆どが上記何れかのチップを搭載しています。
種類の豊富なネットワークカードですが、主に2種類に分類する事ができます。 インテリジェンスなものと、そうでないものです。
インテリジェンスなもの
- Intel
- 3com
- DEC
- WDC
- AMD
- VIA
そうでないもの
「インテリジェンスな」チップはエラー制御やある程度決まった
フロー通信などはチップ上の独自の制御を用い簡略化して行いますが、
「そうでないもの」はOS(ドライバ)が計算と判断をする事になります。
この違いにより、同じ通信量(トラフィック)でもCPUの占有率が両者では
大きく違ってきます。
では、どれだけ両者に違いがあるのか、実験してみましょう。
行う実験は、閉鎖されたLAN上でhttp通信を行い、通信速度と
CPU占有率を測定するものです。
サーバー側ではcgiスクリプトから2.1Gbyteのデータを出力するものを
用意し、キャッシュは無効になるようにデチューンしてあります。
クライアント側ではwgetでCGIスクリプトを読みながら/dev/nullに捨てます。
それを5回繰り返し、平均DL速度とCPU占有率(uptime)を測定します。
LANカードは IntelのEtherExpressPro/100+ とPlanexのRealTek
チップ搭載カードを同じマシンに 差して実験しました。
実験結果は上記の通り。特に説明は不用かと思いますが、
敢えて言わせて いただくと、8139Cは馬鹿です。
同じ作業をしていて5倍近くの大差が付いてしまいました。
今回行った実験では/dev/nullにデータを捨てていますが、
ディスクに保存していたらさらに差が出ていた事は明白ですね。
前述した通り、LANのパフォーマンスは搭載しているチップで決まります。
「有名メーカーのパッケージだから」といった幻想は捨てるべきです。
これから購入を検討する場合は、各社ウェブサイトや商品パッケージの
搭載チップ欄に充分気を遣って購入しましょう。
具体的な目安は、3000円以下の商品は避けた方が良いといった感じになります。
サーバー用途や広帯域を使う用途なら、既製サーバー機への搭載実績も豊富な、
Intel製品(実勢価格6000円強,バルクなら3000円弱)を選択しましょう。
# 私は Intel EtherExpress Pro/100+ を10枚づつまとめて買っています。