前回のディスク・サブシステムと共に,ネットワークの性能がサーバーの性能を大きく左右することも多い。なぜなら,クライアント・コンピュータから見た場合,サーバーのネットワークは,サーバーの入出力のすべてである場合が多いからである。NICのパフォーマンスに問題があると,サーバーが扱えるデータ量を抑制してしまう。

 このボトルネックは,100Mビット/秒のファースト・イーサネットのNICから1Gビット/秒のギガビット・イーサネット対応NICにするなどしてNIC単体の性能を上げることや,後述するリンク・アグリゲーションなどの手法を使うことで解決できる。

 最近ではギガビット・イーサネット対応NICは安価になり,現在のIAサーバーでは,ほとんどの機種で標準搭載するようになってきた。Linuxでもドライバが提供されているため,標準でギガビット・イーサネット対応NICを利用できる場合が多い。

 そこで,単にNIC単体の性能を上げるチューニングに関してはここでは触れず,複数NICを束ねる技術に的を絞って解説する。

 それには,まずはネットワークの状況を調べる方法を紹介し,データ転送のスループット向上のための技術を説明しよう。

ネットワークの状況を調べる

 ネットワークの状況を調べるためには,以下のような方法がある。

(1)tcpdump

 ネットワークのトラフィックをダンプするコマンドである(図1)。tcpdumpは負荷状況を監視するというよりは,どちらかというとパケットをモニタリングしてネットワークの状況分析やトラブルの解析を行うのに用いられることが多い。データは以下のような順序で並んでいる。

タイム・スタンプ 送信ホスト名(IPアドレス).ポート番号
> 受信ホスト名.ポート番号:フラグ・シーケンス番号
 ack ack番号
 win ウィンドウ・サイズ
 urgent フラグ・オプション

図1●tcpdumpの実行結果
図1●tcpdumpの実行結果
「tcpdump -n -c 回数」で一定回数の情報を取得できる。
[画像のクリックで拡大表示]

(2)SNMPエージェント

 SNMP(Simple Network Management Protocol)とは,ネットワークに接続された機器をネットワーク経由で管理・監視するためのプロトコルである。管理される側に「SNMPエージェント」と呼ばれるモジュール(ソフトウエア)を,監視するコンソールに「SNMPマネージャ」と呼ばれるモジュールをインストールする。これにより,ネットワークの情報を含めてさまざまな統計情報の取得ができる。例えば,図2はeth0に割り当てられたNICの情報を取得した一例である。MACアドレスと IPアドレス,リンク・スピード,送受信それそれの転送バイト数などの情報を見ることができる。

図2●SNMPエージェントで取得できる情報
図2●SNMPエージェントで取得できる情報
hp ProLiant NICエージェントでの取得例。
[画像のクリックで拡大表示]