Sun NFS サーバーの調整

付録 A NFS性能監視ツールとベンチマークツールの使用方法

この付録では、サーバーの NFS とネットワークの性能を監視するためのツールについて説明します。監視ツールは、性能向上に向けた調整に役立つ情報を提供します。第 2 章「NFS 性能の分析」と、第 3 章「最適な NFS 性能を得るためのサーバーとクライアントの設定」を参照してください。

監視ツールについての詳細は、そのツールに関するマニュアルページを参照してください。サン以外のツールについては、製品に付属しているマニュアルを参照してください。

また、この章では、SPEC SFS 2.0 という NFS ファイルサーバーのベンチマークツールについても説明します。

NFS 監視ツール

NFS の動作と性能を監視するためのツールを以下に示します。

表 A-1 NFS 動作と性能の監視ツール

ツール 

機能 

iostat

ディスク入出力などの入出力統計情報を提供します。 

nfsstat

カーネルの NFS や RPC (遠隔手続き呼び出し) インタフェースなどの NFS 統計情報を提供します。統計情報の初期設定に使用することもできます。 

nfswatch

ファイルシステム別に NFS トランザクションを提供します。nfswatch はフリーソフトウェアです。近くの ftp サイトから入手してください。

sar

CPU の使用状況やバッファーの状態、ディスクドライブや テープドライブなどの動作状況を提供します。 

SharpShooter* 

障害となっている問題を特定し、クライアントとサーバーに NFS 負荷を均等に分散します。アプリケーションの分散状況を示し、サーバーにネットワークトラフィックを均等に分散させます。ユーザーまたはグループ別のディスク使用状況も提供します 

vmstat

ディスクの動作状況を含む、仮想メモリーの統計情報を提供します。 

 * Network General Corporation (旧 ATM Technology)

他のネットワークユーティリティーやネットワーク監視ユーティリティーについては、購入先にお問い合わせください。

ネットワーク監視ツール

NFS 関係のネットワークの性能を監視するためのツールを以下に示します。

表 A-2 ネットワーク監視ツール

ツール 

機能 

snoop

Ethernet の指定パケットに関する情報を表示します 

netstat

ネットワーク関連のデータ構造体の内容を表示します。 

ping

ネットワークホストに ICMP ECHO_REQUEST パケットを送信します

NetMetrix Load Monitor 

リアルタイムまたは特定の時間範囲でネットワークの負荷を監視ができます。負荷情報として、時間や発信元、宛先、プロトコル、パケットの大きさを提供します。 

SunNet Manager 

ネットワーク装置の監視と障害追跡を行う管理・監視ツールです 

LAN アナライザ : Network General Sniffer, Novell/Excelan Lanalyzer 

パケットの分析を行います。 

snoop

snoop は、Solaris 2.x ソフトウェア環境で提供されているコマンドです。無制限にパケットを確保するには、snoop コマンドをスーパーユーザーで実行する必要があります。制限付きのパケットを確保したり、確保したファイルからのパケットを分析する場合は、スーパーユーザーである必要はありません。

無制限のパケット確保では、フィルターが無効になり、使用しているシステム宛のものかどうかに関係なく、サブネットのあらゆるパケットを監視することができます。使用しているシステム宛てではないパケットを、間接的に監視することもできます。無制限モードは、スーパーユーザーでだけ使用することができます。

snoop コマンドを実行すると、サンのシステムはネットワーク監視装置となり、ネットワーク上の問題を検出することが可能になります。snoop コマンドは、特定の数のネットワークパケットを確保するため、クライアントからサーバーへの呼び出しを追跡して、パケットの内容を表示することができます。パケットの内容をファイルに保存し、後で調査することもできます。

snoop コマンドは以下を行います。

snoop コマンドは、データリンクプロバイダインタフェース (DLPI) のパケットフィルタとバッファーモジュールの両方を使用し、ネットワークを介してやりとりされるパケットを効率良く捕捉します。

任意の 2 台のシステム間の、全トラフィックを表示または捕捉するには、その 2 台以外のシステムで snoop を実行してください。

snoop はパケット解析ツールなので、サブネットを構築する場合に特に有用となります。snoop コマンドを実行して得られる出力を使用し、負荷統計情報を蓄積するスクリプトを実行することができます。また、このコマンドには、パケットヘッダーを取り出す機能があり、この情報を利用してパケットをデバッグしたり、非互換の問題の原因を突き止めたりすることができます。

ここでは、snoop の使用例を紹介します。

確保したファイル (pkts) 内の選択したパケット情報の表示

統計情報には、読み取り要求を出しているクライアントが示されます。左側の列に 約 4 マイクロ秒の精度で秒数が表示されます。

読み取りまたは書き込み要求を発行したときに、サーバーが時間切れにならないようにしてください。サーバーが時間切れになると、クライアントは要求を再送信する必要があり、クライアントの IP コードによって、書き込みブロックがより小さな UDP ブロックに分解されます。デフォルトの書き込み時間は 0.07 秒です。時間切れの値は、mount コマンドで変更することができます。


例 A-1 snoop -i pkts -p99,108 コマンドの出力例d

# snoop -i pkts -p99,108
99   0.0027   boutique -> sunroof     NFS C GETATTR FH=8E6C
100   0.0046   sunroof -> boutique     NFS R GETATTR OK
101   0.0080   boutique -> sunroof     NFS C RENAME FH=8E6C MTra00192
to .nfs08
102   0.0102   marmot -> viper          NFS C LOOKUP FH=561E screen.r.13.i386
103   0.0072   viper -> marmot          NFS R LOOKUP No such file or
directory
104   0.0085   bugbomb -> sunroof    RLOGIN C PORT=1023 h
105   0.0005   kandinsky -> sparky    RSTAT C Get Statistics
106   0.0004   beeblebrox -> sunroof  NFS C GETATTR FH=0307
107   0.0021   sparky -> kandinsky    RSTAT R
108   0.0073   office -> jeremiah        NFS C READ FH=2584 at 40960
for 8192

snoop コマンドの引数の意味は、以下のとおりです。

表 A-3 snoop コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-p99,108

確保したファイルから読み出すパケット範囲の指定です。パケット番号 99 から 108 のパケットの情報が表示されます。確保したファイルの先頭パケットのパケット番号は 1 です。 

  1. パケットの詳細情報を表示するには、以下のように snoop コマンドを使用します。


    # snoop -i pkts -v 101
    

snoop -i pkts -v 101 コマンドは、パケット 101 に関する詳細情報を表示します。引数の意味は、以下のとおりです。

表 A-4 snoop -i pkts -v 101 コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-v

詳細モードの指定です。パケット 101 のヘッダの詳細情報を表示します。このオプションは、特定のパケットに関する情報が必要なときに使用してください。 

NFS パケットを表示するには、以下のように入力します。


# snoop -i pkts rpc nfs and sunroof and boutique
1   0.0000   boutique -> sunroof    NFS C GETATTR FH=8E6C
2   0.0046    sunroof -> boutique   NFS R GETATTR OK
3   0.0080   boutique -> sunroof    NFS C RENAME FH=8E6C MTra00192 to .nfs08

この例では、sunroof システムと boutique システム間の NFS パケットを表示しています。このコマンドの引数の意味は、以下のとおりです。

表 A-5 snoop -i pkts rpc nfs and sunroof and boutique コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

rpc nfs

RPC 呼び出しのパケットまたは NFS プロトコルの応答パケットを表示します。nfs の後に、/etc/rpc の RPC プロトコル名かプログラム番号オプションが続きます。

and

2 つのブール値の論理和をとります。たとえば sunroof boutique は、sunroof and boutique と同じです。

  1. 新しく確保したファイルにパケット情報を保存するには、以下のように入力します。


    # snoop -i pkts -o pkts.nfs rpc nfs sunroof boutique
    

上記の snoop コマンドの引数の意味は、以下のとおりです。

表 A-6 snoop -i pkts -o pkts.nfs rpc nfs sunroof boutique コマンドの引数

-i pkts

pkts ファイルに確保されているパケット情報を表示します。

-o pkts.nfs

pkts.nfs ファイルに表示中のパケット情報を保存します。

rpc nfs

RPC 呼び出しのパケットまたは NFS プロトコルの応答パケットを表示します。nfs の後に、/etc/rpc の RPC プロトコル名かプログラム番号オプションが続きます。

snoop コマンドの使用法およびオプションについての詳細は、snoop のマニュアルページを参照してください。

SPEC System File Server 2.0

SPEC System File Server (SFS) 2.0 は、NFS ファイルサーバーのスループットと応答時間を計測します。これは、097.LADDIS から成るテストベンチマーク群です。異なるアプリケーション環境下の 1,000 以上の NFS サーバーの調査結果に基づいて開発された更新された作業負荷情報が含まれます。サーバーの技術進歩により、SFS 1.1 で使用されていたときよりも、作業負荷はより大きく、応答時間のしきい値はより低くなっています。このような変更と、その他の変更により、 SPEC SFS 2.0 の結果と SFS 1.1 や SFS 1 の結果とを比較することはできません。

また、一般的なコードの改善により、SPEC SFS 2.0 には以下の機能が追加されました。

097.LADDIS では、以下の基準ポイントが考慮されます。

LADDISは、テスト対象のサーバーの性能が、あるレベル以下になるまで、徐々に作業負荷を大きくできるように設計されています。このための基準ポイントは、平均応答時間が 50ms を超えるポイントに定義されています。この制限は、NFS 操作において、応答時間が 50ms 以下のときの 1 秒あたりの最高のスループットを導出するときに適用されます。

作業負荷とともにスループットが高くなり続けるかぎり、50ms 時のスループットが報告されます。しかし、多くの場合、スループットは、応答時間が制限の 50ms を下回ったときから低下し始め、この後に示すような形式の表によって、最高のスループット時の応答時間が報告されます。

0.97 LADDIS ベンチマーク

SPEC SFS 1 (0.97LADDIS) ベンチマークは、アプリケーションの抽象化と NFS の操作群、NFS 操作要求率に基づく総合的な NFS の作業負荷テストです。このベンチマークによって生成される作業負荷は、NFS プロトコルレベルで集中的なソフトウェア開発環境をエミュレートします。LADDIS は、サーバーに対して直接 RPC 呼び出しを行い、実際に使用されている NFS クライアントの差を排除します。結果として、操作群や作業負荷の制御が簡単になるため、ベンダー同士の結果比較の際に有用です。ただし、この方法は同時に、キャッシュファイルシステムクライアントのように、個々のクライアントのもつ特長を隠すという側面もあります。

NFS 操作群の各操作の割合を以下にまとめます。示した値は、各操作の呼び出し数の相対値です。

表 A-7 呼び出し別の NFS 操作群

NFS 操作 

割合 

Lookup

34 

Read

22 

Write

15 

GetAttr

13 

ReadLink

ReadDir

Create

Remove

Statfs

SetAttr

NFS ファイルシステム用の LADDIS ベンチマークでは、書き込み操作が15 % の操作群が使用されています。このため、実際の NFS クライアントが1〜2 % の書き込み操作しか行わない場合は、性能は低く見積もられることになります。実際の操作が、操作群の割合に近いほど、NFS 操作の最大スループットは基準としてより信頼性が高くなります。

LADDIS ベンチマークを行うには、NFS 負荷ジェネレータとして、テスト対象のサーバーに少なくとも 2 台のクライアントが、独立したネットワークで接続されている必要があります。1 つのネットワークでは、サーバーの最高の性能に達する前に飽和することがあるため、複数のネットワークをサポートすることは非常に重要です。1 台のクライアントを、LADDIS 第 1 負荷ジェネレータとして指定し、そのクライアントによって、すべての負荷生成クライアントでの LADDIS 負荷生成コードの実行を制御します。一般的に、ベンチマークも、第 1 負荷ジェネレータが制御します。また、第 1 負荷ジェネレータは、作業負荷のそれぞれのポイントでスループットと応答時間データを収集し、結果を生成することもできます。

応答時間を短くするには、NFS サーバーに NVRAM-NVSIMM Prestoserve NFS アクセラレータを追加してください。NVSIMMは、直接高速のメモリーサブシステムに記憶領域を確保しますから、待ち時間が大幅に短くなり、より少ないディスク入出力で、求めるレベルの性能を得ることができます。

NVSIMM との間では、余分なデータコピーがやりとりされるため、最高のスループットは抑えられます。しかし、NFS の負荷によって最高のスループットが維持されることはないため、NVSIMM を使用して応答時間を短くすることをお薦めします。Prestoserve NFS アクセラレータについての詳細は、「Prestoserve NFS アクセラレータ」を参照してください。