Microsoft Services for Network File System パフォーマンス チューニング ガイドライン

概要

このドキュメントでは、Microsoft® Windows Server™ 2003 システム上の Microsoft Network File System のパフォーマンスを改善する主要なチューニング パラメータと設定、そしてその効果を解説します。お客様のシステムと負荷状態、および目標としているパフォーマンスにあわせてご検討ください。

Just a Bunch

トピック

はじめに
Microsoft Services for Network File System のパフォーマンス チューニング
ネットワークのパフォーマンス チューニング
ストレージのパフォーマンス チューニング
ファイル サーバーのパフォーマンス チューニング
ファイル サーバー負荷のベンチマーク (Spec SFS)
関連情報

はじめに

Microsoft® Windows Server™ 2003 システムで実行中の既定の状態の Microsoft Network File System はほとんどの状況において十分対応できます。しかし、特定の環境において、たとえば負荷状態が一定の状況などでは、サーバー設定を調整することでパフォーマンスの向上を期待できる場合があります。

効果的なチューニングはハードウェア、負荷状態、およびパフォーマンス目標を包括的に考慮したものです。このドキュメントではパフォーマンスを改善する可能性のある主要なチューニング パラメータおよび設定について解説します。各設定とその効果について解説します。お客様が要求するシステム、負荷状態、およびパフォーマンス目標にあわせて検討ください。

このドキュメントは、Services for UNIX 3.5 に同梱した Microsoft Services for Network File System を前提で解説します。このドキュメントの大半は従来のバージョンの Microsoft Services for Network File System にも適用できますが、一部のチューニング パラメータが不適切な場合もあります。

メモ    メモ Microsoft® Windows® 2000 Server と Windows Server 2003 ではレジストリ設定やチューニング パラメータが変更されている場合があります。サーバーのチューニングを行う場合、過去のバージョンを対象としたチューニング ガイドラインを Windows Server 2003 で使用すると予期しない結果が生じることがありますのでご注意ください。
レジストリを直接操作するときは注意が必要です。レジストリの編集を行う前にレジストリをバックアップしておく必要があります。

Microsoft Services for Network File System のパフォーマンス チューニング

このセクションでは、Microsoft Services for Network File System アーキテクチャ、およびそのパフォーマンスを影響する各種設定を解説します。Spec SFS に関するガイドラインについては、「ファイル サーバー負荷のベンチマーク (Spec SFS)」セクションを参照してください。

Microsoft Services for Network File System のサーバー モデル

Microsoft Services for Network File System モデルは、クライアントとサーバーの 2 つの要素から構成されます。クライアントは、リダイレクタ (rdbss.sys および NFS mini-redirector nfsrdr.sys) を経由してサーバーに格納されたファイルの要求を受け取ります。クライアントは NFS プロトコルを使用して TCP/IP を通して要求を送信します。サーバーは TCP/IP を通して複数の要求をクライアントから受信し、要求をストレージ スタックにアクセスするローカル ファイル システム (ntfs.sys) に送信します。

図 1   Microsoft Services for Network File System のクライアント/サーバー通信モデル

** 1   Microsoft Services for Network File System** のクライアント / サーバー通信モデル

Network File System (NFS) のチューニング パラメータ

以下のレジストリ項目は、Network File System (NFS) を実行中のファイル サーバーのパフォーマンスに高可がある場合があります。

DefaultNumberOfWorkerThreads

HKLM\System\CurrentControlSet\Services\RpcXdr\Parameters\ (REG_DWORD)

受信 NFS 要求を処理するスレッド数を指定します。

OptimalReads

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

既定値は "0" です。FILE_SEQUENTIAL_ONLY に対し、FILE_RANDOM_ACCESS でファイルを開くかどうかを決定します。この値を "1" に設定するとファイルを強制的にFILE_RANDOM_ACCESS で開きます。これにより、ファイル システムおよびキャッシュ マネージャはプリフェッチ (先読み) を行えなくなります。

RdWrHandleLifeTime

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

ファイル ハンドル キャッシュの NFS キャッシュ エントリのライフタイムを制御します。実際のライフタイムは RdWrHandleLifeTime x RdWrThreadSleepTime に相当します。

RdWrNfsHandleLifeTime

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

ファイル ハンドル キャッシュの NFS キャッシュ エントリのライフタイムを制御します。実際のライフタイムは RdWrNfsHandleLifeTime x RdWrThreadSleepTime に相当します。

RdWrNfsReadHandlesLifeTime

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

ファイル ハンドル キャッシュの NFS キャッシュ エントリのライフタイムを制御します。この設定は 1 GB 以上のメモリを搭載したシステムで NFS_ONLY モードを使用する場合にのみ有効です。実際のライフタイムは RdWrNfsReadHandlesLifeTime x RdWrThreadSleepTime に相当します。

RdWrThreadSleepTime

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

ファイル ハンドル キャッシュのクリ-ンアップ スレッド動作の頻度を制御します。値はティック単位で不定です。1 ティックは約 100 ナノ秒です。

FileHandleCacheSizeinMB

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

既定値は 4 です。ファイル ハンドル キャッシュ エントリが消費する最大メモリ量を指定します。

LockFileHandleCacheInMemory

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

既定値は "0" です。FileHandleCacheSizeInMB で指定されたキャッシュ サイズに割り当てられた物理ページをメモリにロックするかどうか指定します。値が 1 の場合、有効になります。この設定は、1 GB 以上のメモリを搭載するサーバーでのみ有意義です。ページがメモリにロックされる (つまり、ディスクにページングされない) ため、アプリケーションが利用できるページ数が減ります。

MaxIcbNfsReadHandlesCacheSize

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

ボリュームごとのリード データ キャッシュのハンドルの最大数を指定します。リード キャッシュ エントリは、1 GB 以上のメモリを搭載したシステムで NFS_ONLY モードを使用する場合にのみ作成されます。

SecureHandleLevel

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

既定値は 6 です。SecureHandleInfo は NFS Server が出すファイル ハンドルのセキュリティ強度を制御します。以下の値を指定できます。

0x0   NFS ハンドルのすべてのセキュリティ チェックを無効化。

0x1   クライアントに送られるハンドルを署名してセキュリティを強化。

0x2   クライアントの IP アドレスおよびその他の情報を使用してハンドルを署名。

0x4   ハンドルに埋め込まれた親パスがハンドルのエクスポート時に同時にエクスポートされることを検証。

0x6   クライアントの IP アドレスおよびその他の情報を使用してハンドルを署名し、ハンドルに埋め込まれた親パスがハンドルのエクスポート時に同時にエクスポートされることを検証。

UseWriteCache

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)

既定値は "0" です。ライト キャッシュの使用を指定します。値が "1" の場合、ライト キャッシュが有効になります。ライト キャッシュを有効にすると、パフォーマンスが大幅に向上する場合があります。ただし、ディスク サブシステムに適切なバッテリ バックアップが搭載されていない場合、停電時にデータ損失またはデータ破損が発生する可能性があります。ライト キャッシュを有効にすると NFS プロトコル セマンティクスに反することになります。

NFS-Only モード

NFSONLY.EXE アプリケーションを使用すると、NFS パフォーマンスを改善できます。このアプリケーションを使用すると、共有はより積極的なキャッシュを行い、パフォーマンスを改善します。NFSOnly モードは共有単位で設定します。NFS Only モードは、NFS 以外の方法でアクセスできる共有には使用しないでください。データ損傷の恐れがあります。NFS Only 共有では、最大 15% の改善を期待できる場合もあります。このコマンドの構文は、次のとおりです。

NfsOnly <リソース名|共有名> [/enable|/disable]

<リソース名|共有名>は NFS 共有の名前です。/enable オプションを指定するとリソースまたは共有で NFS-Only モードが有効になります。/disable オプションを指定するとリソースまたは共有で NFS-Only モードが無効になります。NFS-Only モードを有効にするには、Microsoft Services for Network File System サービスを再起動する必要があります。

ネットワークのパフォーマンス チューニング

ネットワーク アーキテクチャは多数のコンポーネント、インターフェイス、およびプロトコルを網羅します。図 2 にその一部を示します。このセクションでは、サーバー負荷に関連する一部のコンポーネントのチューニング ガイドラインを示します。

図 2   ネットワーク スタック コンポーネント

** 2   ** ネットワーク スタック コンポーネント

ネットワーク アーキテクチャは多層構造です。図 2 の層は下から上に順番に、次の層に大きく分類できます。

  • ネットワーク ドライバおよび **NDIS (Network Driver Interface Specification)   **これらは最下層に位置します。NDIS はその下位層のドライバおよび上位層の TCP/IP などの層にインターフェイスを公開します。

  • プロトコル スタック    これは TCP/IP や UDP/IP などのプロトコルを実装します。これらの層は上位層に対して TDI (Transport Driver Interface) を公開します。

  • システム ドライバ    これらは一般的に TDI クライアントであり、ユーザー モード アプリケーションに対してインターフェイスを公開します。

ネットワーク集中型の負荷のチューニングを行うために各層のチューニングが必要な場合があります。以下にチューニング方法を解説します。

ネットワーク アダプタの選択

ネットワーク集中型のアプリケーションは高性能なネットワーク アダプタが必要です。このセクションでは、ネットワーク アダプタ選択時の考慮事項を示します。

WHQL 認定

WHQL (Windows Hardware Quality Labs) 認定済みのネットワーク アダプタを選択ください。

オフロード機能

タスク オフロードを行うと、サーバーの CPU 負荷率が下がり、システム全体のパフォーマンスが改善する場合があります。Microsoft TCP/IP トランスポートは、適切なタスク オフロード機能を搭載したネットワーク アダプタに以下のタスクをオフロードすることができます。

  • チェックサム タスク    TCP/IP トランスポートは、IP および TCP 送受信のチェックサムの計算と検証タスクをオフロードできます。

  • IP セキュリティ タスク    TCP/IP トランスポートは、認証ヘッダ (AH) および 認証ペイロード (ESP) の暗号化チェックサムの計算と検証タスクをオフロードできます。また、TCP/IP トランスポートは、ESP ペイロードの暗号化と解読タスクもオフロードできます。

  • ラージ TCP パケットのセグメント化    TCP/IP トランスポートは、大量送信オフロード (LSO) をサポートします。LSO により、TCP/IP トランスポートはラージ TCP パケットのセグメント化タスクをオフロードできます。

  • スタック オフロード    対応するネットワーク アダプタにネットワーク スタック全体をオフロードすることもできます。

割り込み節度

一部のネットワーク アダプタは、ネットワーク活動もしくは活動の完了を示すためのホスト プロセッサへの割り込みを行う回数を調整することが可能です。また、一部のネットワーク アダプタはネットワークとホスト プロセッサの負荷を考慮し、処理を適切に調整することが可能です。割り込み頻度を調整することでホスト CPU 負荷を軽減することが可能ですが、割り込み節度をインテリジェントもしくはアダプティブに行わないと CPU 負荷率軽減の代わりに遅延が増加する可能性があります。

64 ビット能力

64 ビット対応のネットワーク アダプタは、高物理メモリ領域 (4 GB 以上) に対して DMA (direct memory access) による動作を行うことができます。

銅線とファイバ ネットワーク アダプタ

銅線ネットワーク アダプタは、ファイバと同等のパフォーマンスを提供しつつ、コストが安い場合があります。銅線ネットワーク アダプタのトランシーバは、ファイバのものよりも安価です。

2 または 4 ポート ネットワーク アダプタ

このタイプのネットワーク アダプタはフェイルオーバー シナリオに適しています。しかし、通常はネットワーク アダプタが搭載しているすべてのポートが 1 つの割り込みを共有します。一般的には、同一の負荷に対して 1 つの 2 ポート ネットワーク アダプタを使用するよりも、2 つの 1 ポート ネットワーク アダプタを使用したほうがパフォーマンスが良好です。

ネットワーク アダプタのチューニング

ネットワーク アダプタの設定が変更可能な場合、これらの設定を調整することで、ネットワーク スループットとリソース使用率を最適化できます。最適な設定は、ネットワーク アダプタの特性、負荷、ホスト コンピュータのリソース、およびパフォーマンス目標に左右されます。

オフロード機能の有効化

オフロード機能の有効化は、ほとんどの状況に適しています。しかし、高負荷時にネットワーク アダプタのオフロード処理能力が不足する場合があります。たとえば、一部のネットワーク アダプタで LSO を有効にすると、最大持続スループットが低下する場合があります。しかし、スループットの低下を許容できるのなら、オフロード機能を有効化することをお勧めします。一部のネットワーク アダプタでは送信パス、受信パスのオフロード機能をそれぞれ個別に有効しなければならない場合があります。

ネットワーク アダプタのリソース

一部のネットワーク アダプタは、管理者によるリソースの設定に対応しています。受信バッファ、送信バッファなどのパラメータを設定できます。また、一部のネットワーク アダプタは使用リソースを動的に調整するため、パラメータの設定を必要としない機種もあります。

割り込み節度

一部のネットワーク アダプタは "buffer coalescing" (バッファ一体化) パラメータを指定し、割り込み節度を制御できます。送信、受信バッファを個別に設定する場合があります。ネットワーク アダプタがアダプティブな割り込み節度を行えない場合にバッファ合体の使用を検討ください。

TCP パラメータの調整

表 1 に高スループット シナリオに有効な TCP パラメータを示します。

** 1   TCP** パラメータ

パラメータ

説明

TCPWindowSize

この値は、ネットワーク上で 1 度に未解決の状態にできる最大データ量 (バイト数) です。次のレジストリ エントリを操作することで 1 ~ 65535 バイトの値を指定できます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip \Parameters\TcpWindowSize (REG_DWORD)

ギガビット インターフェイスの場合の既定値は 65535 (TCP フル パケットの倍数で端数を切捨て)、100 Mbps インターフェイスの場合は 16384、そしてモデムなどの 100 Mbps 以下のインターフェイスは 8192 です。この値は、エンドツーエンドのネットワーク帯域幅 (バイト単位) と往復時間 (秒) を積算したものを指定するのが理想です。この値を BDP (Bandwdth Delay Product) とも呼びます。この値は、想定されるコンピュータの受信 TCP 情報量を考慮して設定する必要があります。

Window Scaling

衛星接続など、BDP が高いリンクでは、ウィンドウ サイズを 64 k 以上に増やさなければならない場合があります。これを行うには、以下のレジストリ エントリを設定し、RFC 1323 で規定されている TCP Options を有効にする必要があります。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters \Tcp1323Opts (REG_DWORD)

65535 以上のウィンドウ サイズを使用するには、このレジストリ エントリを "1" に設定する必要があります。このレジストリ エントリを設定すると、最大 1 GB までの TCPWindowSize を指定できます。

MaxHashTableSize

この値は、TCP 接続の状態を記憶するハッシュ テーブルのサイズを指定します。既定値は 128 にシステムのプロセッサ数の二乗を乗算した値になります。システムに大量の同時接続負荷が想定される場合、以下のレジストリ エントリを高い値に設定し、ハッシュ テーブルのパフォーマンスを改善することができます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip \Parameters\MaxHashTableSize (REG_DWORD)

最大値は 0x10000 (65536) です。高い接続負荷を受ける大規模なサーバーでは最大値の使用を検討ください。ただし、ハッシュ テーブルは非ページド プール メモリを使用するため、サーバーの非ページド プール メモリが少ない場合や高い接続負荷を予想しない場合は低めの値を使用ください。

NumTcbTablePartitions

既定では、TCP 接続状態を保持するテーブルのパーティション数はプロセッサ数の二乗と同じ値になります。既定値はほとんどの状況に適切であり、テーブルの競合も抑えられます。しかし、プロセッサを 16 以上搭載したシステムでは値が高すぎる場合があり、CPU 使用率が上昇する可能性があります。このような場合、次のレジストリ エントリを操作して、プロセッサ数の二乗より低い値に設定します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip \Parameters\NumTcbTablePartitions (REG_DWORD)

MaxUserPort

コンピュータからアクティブな接続が行われるとき、ポートが使用されます。既定で利用可能なユーザー モード ポート数 (IP アドレス毎に 5000) および TCP time-wait の要件によってはより多くのポート数を確保しなければならない場合があります。次のレジストリ エントリを操作して、最大 0xfffe (65534) まで増やすことができます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip \Parameters\MaxUserPort

ストレージのパフォーマンス チューニング

このセクションでは、ストレージ負荷に関連するチューニング ガイドラインを示します。

ストレージの選択

ストレージ システムを選択する際の要件を以下に示します。

  • 現在および将来のニーズを満たすストレージ容量、帯域幅、および遅延における特性を提供すること。

  • 要求されるパフォーマンスおよび復旧能力を満たすハードウェア RAID タイプとバックアップ手順を選択すること。

また、WHQL 認定済みのストレージ アダプタを選択することをお勧めします。

格納するデータ量の判断

新規のファイル サーバーに格納するデータの量を判断するとき、以下の点も考慮する必要があります。

  • 既存のファイル サーバーに現在格納されている、新しいファイル サーバーに統合する予定のデータの量。

  • ファイル サーバーがレプリカ メンバの場合、新しいファイル サーバーに格納する複製データの量。

  • 将来ファイル サーバーに格納する予定のデータの量。

サーバーに格納するデータ量が、過去に比べて増加率がさらに加速することを前提として考慮することをお勧めします。組織が人員を大幅に強化する予定があるかどうか、あるいはストレージを大量に必要とするプロジェクトの開始予定があるかどうかを確認します。

また、オペレーティング システム ファイル、アプリケーション、RAID 冗長化、ログ ファイル、およびその他の要素が使用する容量も考慮する必要があります。表 2 にファイル サーバー容量を消費する要素を示します。

** 2   ** ファイル サーバー容量を消費する要素

要素

必要なストレージ容量

オペレーティング システム ファイル

最低 1.5 GB。オプションのコンポーネントや将来のサービス パックやその他のファイル用の領域として、オペレーティング システム ボリュームにさらに 3 ~ 5 GB を確保します。

ページング ファイル

既定で RAM 容量の 1.5 倍。理想値は実行する全アプリケーションの組み合わせにより左右されます。パフォーマンスを考えた場合、ページング ファイルは別の物理ディスク上に置いた方がよいでしょう。

メモリ ダンプ

選択したメモリ ダンプ オプションによっては、最大で物理メモリ量 + 1 MB のディスク容量が必要になります。

アプリケーション

アプリケーションに応じて異なります。アプリケーションには、ウィルス対策プログラム、バックアップ、ディスク クォータ ソフトウェア、データベース アプリケーション、および回復コンソール、Services for UNIX、Services for NetWare などのオプション コンポーネントが含まれます。

ログ ファイル

ログを作成したアプリケーションに応じて異なります。一部のアプリケーションは最大ログ ファイル サイズを指定できます。ログ ファイルを格納するのに十分な空き容量を確保する必要があります。

RAID ソリューション

構成に応じて異なります。このドキュメントの RAID に関する記述を参照してください。

シャドウ コピー

既定でボリュームの全容量の 10%。ただし、サイズを増やすことをお勧めします。

ストレージ アレイの選択

ストレージ アレイとアダプタを選択する場合、多くの考慮事項が存在します。表 3 に一般的なストレージ アレイの種類を示します。

** 3   ** ストレージ アレイの種類

オプション

説明

ファイバ チャネルまたは SCSI

  • ファイバ チャネルは、高い帯域幅を提供しつつストレージ アレイとシステムをケーブル長の長い光ファイバまたはイーサネットで接続します。

  • SCSI は非常に高い帯域幅を提供しますがケーブル長が制限されます。

ハードウェア RAID 能力

ストレージ コントローラがハードウェア RAID 機能を提供していることは重要です。表 4 に RAID レベル 0、1、および 5 を説明します。

最大ストレージ容量

  • 最大ストレージ領域。

  • ストレージにアクセスできる帯域幅は、アレイの物理ディスク数、コントローラの処理速度、ディスクの種類 (SCSI またはファイバ チャネルなど)、ハードウェア RAID の種類、およびストレージ アレイをシステムに接続するアダプタの種類に依存します。

ハードウェア RAID レベル

多くのストレージ アレイは、表 4 に示すハードウェア RAID 能力を提供します。

** 4   ** ハードウェア RAID レベル

オプション

説明

RAID 0

RAID 0 は複数の物理ディスクにわたってディスク アクセスをストライピングする論理ディスクを使用します。

  • 最も高速なハードウェア RAID 構成です。

  • データを複製しないため、最もコストのかからない RAID 構成です。

  • RAID 1 と RAID 5 と異なり、RAID 0 はデータの冗長化機構を持ちません。

RAID 1

RAID 1 は他の物理ディスクにミラー化された論理ディスクを使用します。

  • RAID 1 は 2 つ以上の物理ディスクにデータを書き込む必要があるため、RAID 0 よりも書き込み操作が遅くなります。また、レイテンシは遅いほうの書込み操作の時間に拘束されます。

  • RAID 1 は、特定の状況下ではビジーではない物理ディスクからデータを読み取ることができるため、RAID 0 よりも読み取り操作が早い場合があります。

  • RAID 1 は完全な状態のデータのコピーを 2 以上作成するため、物理ディスクの費用対効果では最も高価な構成です。

  • RAID 1 は、物理ディスク障害後の復旧が最も高速です。これはミラー化ディスクを即座に使用できるためです。完全なデータ アクセスを行いつつ、新しいミラー化ディスクをインストールできます。

RAID 5

RAID 5 は複数のディスクにパリティ情報を書き込んだ論理ディスクを使用します。

  • RAID 5 はパリティ ブロックを分散配置した独立データ ディスクを使用します。

  • RAID 5 は各論理ディスク書き込みの I/O が複数のディスクに分散されるため、RAID 0 よりも書き込み操作が遅くなります。しかし、RAID 5 はパリティからデータを再構築できるため、RAID 0 よりもデータ復旧能力が優れます。

  • RAID 5 は、他のディスクに格納したパリティ情報からデータを再構築する必要があるため、RAID 0 よりも復旧に時間を要します。

  • RAID 5 は各ディスクにデータの完全な状態のコピーを作成しないため、物理ディスクの費用対効果では RAID 1 よりも優れます。

その他

RAID 0+1、RAID 10 などの構成も存在します。

RAID レベルの選択

各 RAID レベルには次の要素に対する一長一短が存在します。

  • コスト

  • パフォーマンス

  • 可用性と信頼性

各種データ タイプの読み取り、書き込み負荷を評価し、組織が求めるパフォーマンス、可用性と信頼性を満たすために必要な予算を決定してファイル サーバーに最適な RAID レベルを判断できます。表 5 に一般的な 4 種類の RAID レベル、そのコスト、パフォーマンス、可用性と信頼性、およびその推奨利用方法を示します。

** 5   RAID** の一長一短

 

RAID -0

ストライピング

RAID -1

ミラーリング

RAID -5

パリティ付きストライピング

RAID-0+1

ミラーリング + ストライピング

ディスクの最低必要数

2

2

3

4

利用可能ストレージ容量

100%

50%

N-1/N

N はディスク数

50%

フォールト トレランス

なし。1 台のディスクに障害が発生するとボリューム全体が失われます。

ミラー化した 2 台の対で同時に障害が発生しない限り、複数台のディスクに障害が発生してもデータは損失されません。

1 台のディスク障害に耐えられます。

ミラー化された 2 台の対で同時に障害が発生しない限り、複数台のディスクに障害が発生してもデータは損失されません。アレイのミラー化ディスクの数に応じて異なります1。 

読み取りパフォーマンス

同時アクセス性を増やすことで改善。

良好な読み取りパフォーマンス。

同時アクセス性を増やすことで改善。

各要求に対して同時アクセス性とデータ供給元の多重化を増やすことで改善。

書き込みパフォーマンス

同時アクセス性を増やすことで改善。

JBOD より劣る (一般的な負荷では 20% ~ 40%)

フル ストライプ書き込み (大きな要求) の場合を除き劣る。JBOD の 25% 未満の場合有り2 (4:1 要求)。

要求サイズ、アクセスの多い箇所 (静的または動的) などに応じて異なる。

最適な使用方法

一時データのみ

オペレーティング システム

ログ ファイル

  • オペレーティング システム

  • ユーザーと共有データ

  • アプリケーション ファイル

  • オペレーティング システム

  • ユーザーと共有データ

  • アプリケーション ファイル

  • ログ ファイル

1 ディスクに障害が発生した場合、交換前にミラー化ディスクの双方に障害が発生するとデータが損失されます。しかし、他のメンバ ディスクに障害が発生してもデータ損失は発生しません。

2 JBOD (Just a Bunch Of Disks) は、RAID に構成されていない独立した物理ディスクを意味します。

2 台以上のディスクを使用する場合、RAID 1 よりも RAID 0+1 をお勧めします。

RAID 0、RAID 5、および RAID 0+1 論理ディスクに含める物理ディスク数を決定する際、以下の点を考慮してください。

  • ディスクを追加するとパフォーマンスが改善します。

  • 平均故障時間 (MTTF) は、RAID 5 にディスクを複数追加、または RAID 0 にディスクを 1 台追加すると増加し、信頼性が向上します。

  • ディスクを追加すると利用可能ストレージ容量が増えますが、コストも増加します。

  • ストライプ ユニット サイズは重要です。ソフトウェア RAID ソリューションは 64 KB に固定されます。ハードウェア RAID ソリューションは 4 KB ~ 1 MB の値をとります。理想的なストライプ ユニット サイズを使用すると、ディスク アクティビティを最大化しつつ、要求を不必要に分割しません。要求を不必要に分割すると、1 つの要求が複数のディスクに分散されます。たとえば、次の例をあげます。

    • JBOD 上の大きなシーケンシャル要求のストリームは、1 度に 1 つのディスクを占有します。すべてのディスクを占有するには、ストライプ ユニットを 1/N にする必要があります。N は要求サイズです。

    • 小さなランダム リクエストが S 個ある場合、S がディスク数よりも多く、かつアクセスが多いファイルがない場合、ストライプを行ってもパフォーマンスが改善しません。しかし、アクセスが多いファイルが存在する場合、要求が分割されないよう、そしてアクセスが多いファイルが 2 つのストライプ ユニットの間に入らないようにストライプ ユニット サイズを最適化する必要があります。この場合、要求がストライプの境界上 (4 KB や 8 KB など) に乗ってしまうような状況では、要求サイズの 5 倍または 10 倍などの低い倍数を選択します。

    • ディスクよりもストリーム数が少ない場合、ストリームを分割して、各ディスクを均等に占有する必要があります。上の 2 例を使用して検討します。たとえば、10 台のディスクに対してストリームが 5 つの場合、要求サイズの半分のストライプ サイズを使用して各要求を半分に分割します。

ボリューム レイアウトの判断

可能な限り、各データ タイプを個別のボリュームに分割します。たとえば、1 つのボリュームにオペレーティング システムとページング領域、そして共有ユーザー データ、アプリケーション、およびログ ファイルなどを別のボリュームに分散します。

各種データ タイプを、異なる仮想ディスク上の独立したボリュームに格納します。仮想ディスクを使い分けることは、ログ ファイルなど書き込み負荷の高いデータ タイプにとって重要です。これにより、仮想ディスクを構成する物理ディスクがログ ファイルの書き込みによって発生するディスク I/O を集中的に処理することができます。

コストを抑えつつパフォーマンスを最大化するには、1 つの仮想ディスク上の複数のボリュームに異なるデータ タイプをまとめます。たとえば、1 つの仮想ディスクにオペレーティング システムとページング領域を格納し、共有ユーザー データ、アプリケーション、およびログ ファイルなどを他の仮想ディスクに格納します。

割り込み節度

一部のストレージ アダプタは、ディスク活動もしくは活動の完了を示すためにホスト プロセッサに割り込みを行う回数を調整することが可能です。割り込みを調整することでホストの CPU 負荷を軽減することが可能ですが、割り込み節度をインテリジェントに行わないと CPU 負荷率軽減の代わりにレイテンシが増加する可能性があります。

** 6   ** 割り込み調停の種類

デバイス

説明

64 ビット処理能力

64 ビット対応のアダプタは、高物理メモリ領域 (4 GB 以上) に対して DMA 操作を行うことができます。

銅線とファイバ アダプタ

銅線アダプタは一般的にファイバと同等の性能を発揮します。一部のファイバ チャネル アダプタは銅線、ファイバの両方に対応します。環境に応じて銅線またはファイバ アダプタを使い分けます。

2 または 4 ポート SCSI アダプタ

一部の SCSI アダプタは、1 枚のアダプタ カード上に 2 または 4 つの SCSI バスが実装されているものがあります。これは、1 つのSCSI バスに接続できるデバイス数が制限されるためです。通常、ファイバ チャネル ディスクには接続デバイス数の制限はありません。

ストレージ関連パラメータ

次のレジストリ エントリを操作して、高スループット シナリオに対応することができます。

CountOperations

このパラメータを指定すると、システムおよびプロセス レベルの I/O カウンタを無効にすることができます。この設定は、システムおよびプロセス レベルによるディスク、ネットワークの I/O 要求のカウントを行います。この設定を変更しても、物理ディスク、論理ディスク カウンタ、ネットワーク インターフェイス、IP、および TCP カウンタは影響を受けません。プロセスおよびシステム レベルでの I/O カウンタによって明確な負荷が発生し、かつ物理ディスク、論理ディスク、ネットワーク インターフェイス、IP、および TCP レベルで I/O レートの測定が必要な場合にプロセスおよびシステム カウンタを無効にします。プロセスおよびシステム I/O カウンタを無効にするには、存在しない場合は I/O System キーおよびレジストリ値を作成し、以下のレジストリ エントリに "0" (REG_DWORD) を指定します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\I/O System\CountOperations.

この設定を有効にするにはコンピュータを再起動する必要があります。CountOperations レジストリ エントリを "1" に設定するか、CountOperations キーを削除することでプロセスおよびシステム I/O カウンタを有効にすることができます。

NumberOfRequests

このパラメータは、指定したアダプタに作成される SRB の数を指定します。これはパフォーマンスを改善し、論理ディスクに送られるディスク要求の数を増やします。論理ディスクは複数の物理ディスクから構成されるため、コンカレント能力のあるハードウェア RAID アダプタに有効です。高速ハードウェア RAID ディスク アレイに対して既定値が不十分な場合があります。NumberOfRequests を 32 ~ 96 (整数) の間に設定することでディスク アレイのパフォーマンスを改善することができます。次のレジストリ エントリを設定します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<ミニポート アダプタ名>\Parameters \<DeviceN>\NumberOfRequests (REG_DWORD)

<ミニポート アダプタ名> のところにアダプタ名を挿入します。各デバイスに対してエントリを追加して、各エントリの <DeviceN> の代わりに Device0、Device1 とデバイスの数に応じて順番に指定します。この設定を有効にするにはコンピュータを再起動する必要があります。たとえば、2 つの Emulex LP9000 ミニポート アダプタがあり、ミニポート ドライバ名が lp6nds35 の場合、次のレジストリ エントリを作成します。それぞれの値のデータを "96" に設定します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device0\NumberOfRequestsHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device1\NumberOfRequests

DontVerifyRandomDrivers

このパラメータは、ドライバ検証ツールがデバッグ用にドライバをランダムに検証することを防止します。ドライバ検証ツールを無効に設定するには、次のレジストリ エントリの値を "1" (REG_DWORD) に設定します。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\Memory Management\DontVerifyRandomDrivers.

ファイル サーバーのパフォーマンス チューニング

一般的な考慮事項

平均負荷、最大負荷、キャパシティ、今後の拡張予定、および応答時間を考慮しつつ、予想する負荷条件を満たすファイル サーバー ハードウェアを選択する必要があります。ハードウェアにボトルネックが発生すると、ソフトウェア チューニングの効果が薄れます。

ハードウェアを選択し、オペレーティング システムをインストールする際に表 7 の要素も考慮してください。

** 7   ** ハードウェアの考慮事項

課題

推奨事項

プロセッサの数、種類と速度

  • L2 プロセッサ キャッシュが大きいほどパフォーマンスが向上します。

  • プロセッサを 2 台実装するよりも 2 倍の処理能力のプロセッサを 1 台実装したほうが優れる場合があります。

物理メモリ (RAM) の量

コンピュータのメモリ空き容量が不足すると、Windows Server 2003 はハードディスクの空き容量を仮想 のRAM として使用します。これは仮想メモリと呼ばれ、ページング ファイルを使用します。

  • ページング ファイルは、オペレーティング システム ファイルが格納されているドライブ以外に配置してください。

  • ミラー化ボリュームや RAID 5 ボリューム上などのフォールト トレラント ドライブにページング ファイルを配置しないでください。ページング ファイルは耐障害性を必要としません。また、一部のフォールト トレラント ドライブは、複数の場所に書込み操作を行い、書き込みが遅いためパフォーマンスが影響される場合があります。

  • 同一の物理ドライブ上の複数のパーティションにページング ファイルを複数個配置しないでください。

ネットワーク アダプタの数、種類と速度

  • ネットワーク アダプタがパフォーマンスのボトルネックになることを避ける必要があります。新型のネットワーク アダプタは一部のサーバー機能をオフロードし、パフォーマンスの改善を助けます。

  • すべてのネットワーク アダプタ設定が最適であることを確認します。

  • 各ネットワーク アダプタを CPU 別にバインドします。方法はネットワーク アダプタの数、CPU の数、およびネットワーク アダプタあたりのポート数により異なります。

  • 詳細については、このドキュメント前半の「Microsoft Services for Network File System のパフォーマンス チューニング」のセクションを参照ください。

ディスク コントローラの種類、物理ディスクの数、および全体的なキャパシティ

  • ファイル サーバーは、頻繁にアクセスするファイルをメモリにキャッシュします。しかし、アクセス頻度の低いファイルはディスクから読み取ることになります。大量のデータ、大量の要求数、および大量のファイル数が存在する場合、良好なディスク パフォーマンスを発揮する構成、つまり多数のディスクを使用した RAID コントローラが必要になります。

  • 可能であれば、システム ページ ファイル、オペレーティング システム、およびデータを異なる物理ディスクに格納します。

  • アローケーション ユニット サイズがボリュームの大きさに最適であることを確認します。

ファイル サーバーの一般チューニング パラメータ

以下のレジストリ項目は、ファイル サーバーのパフォーマンスを影響します。

SystemPages

HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\ (REG_DWORD)

既定値は "0" です。I/O バッファや、その他の情報をシステム アドレス空間にマッピングするために予約されている、システム ページ テーブル エントリの数を指定します。システム ページ テーブル内の各エントリに対して 1 ページがマップされます。この値を "0" に設定すると、システムはプラットホームの種類およびシステムが利用可能なメモリの量から最適なページ テーブル エントリ数を決定します。この値を "0xFFFFFFFF" に設定すると、システム ページ数が上限まで作成され、システムは物理メモリで作成可能な最大ページ テーブル エントリ数を作成します。"0" または "0xFFFFFFFF" 以外の値を指定すると、指定した値のページ テーブル エントリ数が作成され、システムはページ テーブル エントリ数を自動的に調整できなくなります。

LargeSystemCache

HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\ (REG_DWORD)

既定値は "1" です。システムが標準サイズまたは大きいサイズのファイル システム キャッシュを作成するかどうかを指定します。また、変更されたページをシステムがディスクに書き込む頻度も指定します。通常、ファイル システム キャッシュのサイズを増やすとサーバー パフォーマンスは改善しますが、アプリケーションやサービスが利用可能な物理メモリ量が減少します。同様に、システム データの書き込み頻度を抑えるとディスク サブシステムの負荷が下がりますが、本来アプリケーションが使用するはずのメモリを変更されたページが占有することになります。

PagedPoolSize

HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\ (REG_DWORD)

ファイル キャッシュ領域とページド プール領域は、システムの仮想アドレス空間内で共通の領域を共有しています。ページド プールのサイズを制限すると、システム キャッシュ領域が増えるため、コンテンツのキャッシュ量が増え、ファイル サービスが高速になります。

AdditionalDelayedWorkerThreads

HKLM\System\CurrentControlSet\Control\SessionManager\Executive\ (REG_DWORD)

遅延ワーク キュー用に作成されるスレッドの数を増やします。このキューのスレッドは優先度が低いため、他のスレッドと競って CPU 時間を確保する必要があり、レイテンシが増えます。この値を増やすことで一部の状況下でパフォーマンスが改善する場合があります。

NtfsDisable8dot3NameCreation

HKLM\System\CurrentControlSet\Control\FileSystem\ (REG_DWORD)

既定値は "0" です。長いファイル名、および拡張文字セットの文字を含むファイル名に対して、NTFS から 8.3 (DOS) 形式の短い名前が生成されるかどうかを示します。このエントリの値が "0" の場合、ファイルにはユーザーが指定したファイル名および NTFS が生成する短いファイル名の 2 つの名前が付きます。ユーザーが指定する名前が 8.3 形式の場合、NTFS は短い名前を生成しません。

この値を変更してもファイルの内容は変わりませんが、ファイルの短い名前属性の作成が行われなくなります。また、NTFS がファイルの表示および管理を行う方法が変わります。

NtfsDisableLastAccessUpdate

HKLM\System\CurrentControlSet\Control\FileSystem\. (REG_DWORD)

既定ではこのレジストリ エントリは作成されません。

ファイル数またはフォルダ数が非常に多い NTFS ボリュームで、これらのファイルまたはフォルダに頻繁にアクセスするアプリケーションが存在する場合、アクセス日時を更新するために必要な I/O 帯域幅が非常に大きくなることがあります。ファイルまたはフォルダへのアクセスを高速化するには、NtfsDisableLastAccessUpdate を "1" に設定して、アクセス日時の管理を無効にすることができます。レジストリ エントリを変更後コンピュータを再起動すると、アクセス日時が更新されなくなります。ファイルを新規作成すると、アクセス日時はファイル作成日時と同じ値になります。

NumTcbTablePartitions

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\. (REG_DWORD)

既定ではこのレジストリ エントリは作成されません。

このパラメータは、TCB (伝送制御ブロック) テーブル パーティションの数を制御します。マルチプロセッサ システムでは TCB テーブルを分割すると、TCB テーブル上の競合が減るので、スケーラビリティが向上します。このパラメータには、2 の累乗となる値 (2、4、8、16、32 など) を設定する必要があります。マルチプロセッサ システムでは、システムに搭載したプロセッサ数の 4 倍のパーティション数に設定します。

TcpAckFrequency

Gigabit Ethernet アダプタ用

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

各 Gigabit Ethernet アダプタに対して、次のエントリを追加します。

TcpAckFrequency (REG_DWORD) = 13 (decimal)

既定ではこのレジストリ エントリは作成されません。制御パケットではなく、データ パケットのみを ACK する場合、既定の 2 ではなく、13 パケットごとに ACK します。これによりクライアントからサーバーへの大規模な書き込み (アップロード) 時にネットワーク スタックのパケット処理負荷を軽減することができます。

Fast Ethernet アダプタ用

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

各 Fast Ethernet アダプタに対して、次のエントリを追加します。

TcpAckFrequency (REG_DWORD) = 5 (decimal)

既定ではこのレジストリ エントリは作成されません。制御パケットではなく、データ パケットのみを ACK する場合、既定の 2 ではなく、5 パケットごとに ACK します。これによりクライアントからサーバーへの大規模な書き込み (アップロード) 時にネットワーク スタックのパケット処理負荷を軽減することができます。

割り込みの関係性

割り込みの関係性とは、マルチプロセッサ コンピュータで特定のデバイスのからの割り込みを特定のプロセッサにバインドすることを意味します。これにより、指定したプロセッサで ISR および DPC ルーチンの実行を強制できます。ネットワーク接続とファイル サーバー セッションが同一のネットワーク アダプタに固定されるため、ネットワーク アダプタの割り込みを特定のプロセッサにバインドすることで受信パケット (SMB 要求、データなど) の処理を特定のプロセッサで行うことが可能になり、ローカル性とスケーラビリティが向上します。シングル プロセッサのコンピュータでは関係性の設定はできません。

Interrupt-Affinity Filter (IntFiltr) ツールは、システムの CPU の関係性を変更するために使用します。

このツールを使用することで、システム内のプロセッサにランダムに割り振るのではなく、あらゆるデバイスの割り込みを特定のプロセッサまたはプロセッサ群に割り振ることができます。デバイスに応じて割り込みの関係性の設定が異なります。このツールは、プロセッサまたは IRQ コントローラの種類に関わらず、Windows Server 2003 を実行中のサーバーで使用することができます。

ファイル サーバー負荷のベンチマーク (Spec SFS)

Spec SFS は、Network File System ファイル サーバーがクライアントからのネットワーク ファイル要求を処理するパフォーマンスを測定するためのベンチマーク プログラムです。Spec SFS は、サーバーの全般的な I/O スループット スコアと平均応答時間を示し、クライアント コンピュータの個々のスコアを示します。このスコアを参考に、サーバーがクライアントからのファイル要求能力を測定、分析、および予測することができます。詳細については、http://www.spec.org にある Standard Performance Evaluation Corporation Web サイト (英語) を参照してください。

Windows Server 2003 の Spec SFS 関連レジストリ チューニング パラメータ

このセクションで説明するガイドラインは、Spec SFS ベンチマークでの最適なパフォーマンスを発揮するためのものです。しかし、これらの推奨事項すべてが一般的な NFS ファイル サーバーに適しているとは限りません。また、これらの推奨事項すべてが実際の環境に適しているとは限りません。

一般レジストリ設定

以下のレジストリ設定は、すべてのシステムに適切です。

キー

設定

HKLM\System\CurrentControlSet\Control\SessionManager\
MemoryManagement\

PagedPoolSize = 0xFFFFFFFF (16 進数) (既定 = 0)

SystemPages = 0

LargeSystemCache = 0

HKLM\System\CurrentControlSet\Control\Session Manager\Executive

AdditionalDelayedWorkerThreads = 16

HKLM\System\CurrentControlSet\Control\FileSystem\

NtfsDisable8dot3NameCreation = 1 (既定 = 0)  

NtfsDisableLastAccessUpdate = 1 を追加

既定ではこのレジストリ エントリは作成されません。

HKLM\System\CurrentControlSet\Services\RpcXdr\Parameters

DefaultNumberOfWorkerThreads = 16

メモ   この値は 1 プロセッサあたり 16 まで、最大 64 に設定します。

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters

OptimalReads = 1

RdWrHandleLifeTime = 10

RdWrNfsHandleLifeTime = 60

RdWrThreadSleepTime = 60

RdWrNfsReadHandlesLifeTime = 10

SecureHandleLevel = 0 (既定 = 6)

UseWriteCache= 0 (既定 = 0)

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\

NumTcbTablePartitions = 8 を追加

既定ではこのレジストリ エントリは作成されません。

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
Interfaces\

各 Gigabit Ethernet アダプタに対して TcpAckFrequency (REG_DWORD) = 13 (10 進数) を追加

既定ではこのレジストリ エントリは作成されません。Fast Ethernet アダプタの場合は "5" に設定。

システム依存の追加レジストリ設定

以下のレジストリ設定は、2 GB 以上のシステム メモリを搭載するシステムのみに適切です。

キー

設定

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters

FileHandleCacheSizeInMB = 1038090240

LockFileHandleCacheInMemory = 1

MaxIcbNfsReadHandlesCacheSize = 8000

以下の表のレジストリ設定は、1 GB 以上 2 GB 未満のシステム メモリを搭載するシステムのみに適切です。

キー

設定

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters

FileHandleCacheSizeInMB = 536870912

LockFileHandleCacheInMemory = 1

以下の表のレジストリ設定は、512 MB 以上 1 GB 未満のシステム メモリを搭載するシステムのみに適切です。

キー

設定

HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters

FileHandleCacheSizeInMB = 0

LockFileHandleCacheInMemory = 0

ベスト プラクティス

Spec SFS ベンチマークを実施する場合、以下のベスト プラクティスを参考にしてください。

サーバー構成

  • Spec SFS ベンチマーク時は、NFS 共有に対して NFS-Only モードのみを使用します。

  • Interrupt-Affinity Filter (IntFiltr) ツール を使用して各ネットワーク アダプタを個別のプロセッサに割り当てます。

  • ターミナル サービス、インデックス サービス、またはその他の既定外のサービスをインストールしません。これらの追加サービスはシステム リソースの消費の原因となります。

Spec SFS ベンチマーク実行時は、次の点にご注意ください。

  • ベンチマーク実行時にターゲット サーバーでタスクがスケジュールされていないことを確認します。

  • システム リソースを消費する重要性の低いサービス (w32time など) をすべて無効にします。

  • サーバー コンピュータからログオフします。ログオン状態はシステムのリソースを消費する原因になります。

  • スクリーンセーバー、壁紙、またはシステム リソースを消費するその他の視覚効果などを無効にします。

  • ベンチマーク中はターミナル サービスを使用してリモートでサーバーにアクセスしません。

  • perform、perfmon、sysmon、またはその他ツールを使用してオペレーティング システム アクティビティまたはネットワーク トラフィックを計測しません。これらのツールの使用は、システム リソース消費の原因となり、ネットワーク帯域幅も消費します。

関連情報

詳細情報については、次の資料を参照してください。

Windows Server 2003 の最新情報については、Windows Server 2003 Web サイトを参照ください。(https://www.microsoft.com/japan/windowsserver2003/default.mspx)