前回のディスク・サブシステムと共に,ネットワークの性能がサーバーの性能を大きく左右することも多い。なぜなら,クライアント・コンピュータから見た場合,サーバーのネットワークは,サーバーの入出力のすべてである場合が多いからである。NICのパフォーマンスに問題があると,サーバーが扱えるデータ量を抑制してしまう。
このボトルネックは,100Mビット/秒のファースト・イーサネットのNICから1Gビット/秒のギガビット・イーサネット対応NICにするなどしてNIC単体の性能を上げることや,後述するリンク・アグリゲーションなどの手法を使うことで解決できる。
最近ではギガビット・イーサネット対応NICは安価になり,現在のIAサーバーでは,ほとんどの機種で標準搭載するようになってきた。Linuxでもドライバが提供されているため,標準でギガビット・イーサネット対応NICを利用できる場合が多い。
そこで,単にNIC単体の性能を上げるチューニングに関してはここでは触れず,複数NICを束ねる技術に的を絞って解説する。
それには,まずはネットワークの状況を調べる方法を紹介し,データ転送のスループット向上のための技術を説明しよう。
ネットワークの状況を調べる
ネットワークの状況を調べるためには,以下のような方法がある。
(1)tcpdump
ネットワークのトラフィックをダンプするコマンドである(図1)。tcpdumpは負荷状況を監視するというよりは,どちらかというとパケットをモニタリングしてネットワークの状況分析やトラブルの解析を行うのに用いられることが多い。データは以下のような順序で並んでいる。
|
図1●tcpdumpの実行結果 「tcpdump -n -c 回数」で一定回数の情報を取得できる。 [画像のクリックで拡大表示] |
(2)SNMPエージェント
SNMP(Simple Network Management Protocol)とは,ネットワークに接続された機器をネットワーク経由で管理・監視するためのプロトコルである。管理される側に「SNMPエージェント」と呼ばれるモジュール(ソフトウエア)を,監視するコンソールに「SNMPマネージャ」と呼ばれるモジュールをインストールする。これにより,ネットワークの情報を含めてさまざまな統計情報の取得ができる。例えば,図2はeth0に割り当てられたNICの情報を取得した一例である。MACアドレスと IPアドレス,リンク・スピード,送受信それそれの転送バイト数などの情報を見ることができる。
図2●SNMPエージェントで取得できる情報 hp ProLiant NICエージェントでの取得例。 [画像のクリックで拡大表示] |