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

SMB 構成に関する考慮事項

ファイルサーバーとクライアントが必要としないサービスや機能は、有効にしないでください。 これには、SMB 署名、クライアント側のキャッシュ、ファイルシステムのミニフィルター、search サービス、スケジュールされたタスク、NTFS 暗号化、NTFS 圧縮、IPSEC、ファイアウォールフィルター、Teredo、SMB 暗号化などが含まれます。

BIOS およびオペレーティングシステムの電源管理モードが必要に応じて設定されていることを確認します。これには、高パフォーマンスモードまたは C 状態の変更が含まれる場合があります。 最新、回復性、最速の記憶域およびネットワークデバイスドライバーがインストールされていることを確認します。

ファイルのコピーは、ファイルサーバーで実行される一般的な操作です。 Windows Server には、コマンドプロンプトを使用して実行できるいくつかの組み込みファイルコピーユーティリティがあります。 Robocopy をお勧めします。 Windows Server 2008 R2 で導入された /mt オプションを使用すると、複数の小さなファイルをコピーするときに複数のスレッドを使用することで、リモートファイル転送の速度を大幅に向上させることができます。 また、 /log オプションを使用して、ログを NUL デバイスまたはファイルにリダイレクトすることにより、コンソールの出力を減らすことをお勧めします。 Xcopy を使用する場合は、既存のパラメーターに /q オプションと /k オプションを追加することをお勧めします。 以前のオプションでは、コンソール出力を減らすことで CPU のオーバーヘッドが削減され、後者ではネットワークトラフィックが減少します。

SMB パフォーマンスチューニング

ファイルサーバーのパフォーマンスと使用可能なチューニングは、各クライアントとサーバーの間でネゴシエートされる SMB プロトコルと、展開されたファイルサーバーの機能によって異なります。 現在利用可能な最も高いプロトコルバージョンは、Windows Server 2022、Windows Server 2016、および Windows 10 の SMB 3.1.1 です。 クライアントで Windows PowerShell SMBConnection を使用して、ネットワークで使用されている SMB のバージョンを確認できます。 SMBSession | サーバー上の FL。

SMB 3.0 プロトコルファミリ

SMB 3.0 は Windows server 2012 で導入され、Windows Server 2012 R2 (SMB 3.02) および Windows Server 2016 (SMB 3.1.1) でさらに強化されました。 このバージョンでは、ファイルサーバーのパフォーマンスと可用性を大幅に向上させることができるテクノロジが導入されました。 詳細については、「 Windows Server 2012 および 2012 R2 2012 の smb 」と「 smb 3.1.1 の新機能」を参照してください。

SMB ダイレクト

SMB ダイレクトは、低待機時間で CPU 使用率が低い、高スループットに RDMA ネットワークインターフェイスを使用する機能を導入しました。

RDMA 対応のネットワークが SMB によって検出されると、常に RDMA 機能の使用が試行されます。 ただし、何らかの理由で、SMB クライアントが RDMA パスを使用して接続できない場合は、代わりに TCP/IP 接続を使用し続けます。 SMB ダイレクトと互換性のあるすべての RDMA インターフェイスは、TCP/IP スタックも実装する必要があります。また、SMB マルチチャネルはそれを認識します。

Smb ダイレクトは smb 構成には必要ありませんが、待機時間を減らし、CPU 使用率を低くする必要があるユーザーには、常にお勧めします。

SMB ダイレクトの詳細については、「 Smb ダイレクトを使用したファイルサーバーのパフォーマンスの向上」を参照してください。

SMB マルチチャネル

SMB マルチチャネルにより、ファイルサーバーは複数のネットワーク接続を同時に使用し、スループットを向上させることができます。

SMB マルチチャネルの詳細については、「 Smb マルチチャネルの展開」を参照してください。

SMB Scale-Out

SMB スケールアウトを使用すると、クラスター構成の SMB 3.0 でクラスターのすべてのノードの共有を表示できます。 このアクティブ/アクティブ構成を使用すると、複数のボリューム、共有、およびクラスターリソースを含む複雑な構成を使用せずに、ファイルサーバークラスターをさらに拡張することができます。 最大共有帯域幅は、すべてのファイルサーバークラスターノードの合計帯域幅です。 合計帯域幅は、1つのクラスターノードの帯域幅によって制限されなくなりましたが、その代わりに、バッキングストレージシステムの機能に依存しています。 ノードを追加することで合計の帯域幅を増大することができます。

SMB スケールアウトの詳細については、「 アプリケーションデータの概要」 および「スケール アウトするためのブログの投稿」 (スケールアウトファイルサーバーを参照してください。

SMB 3.0 のパフォーマンスカウンター

次の SMB パフォーマンスカウンターは、Windows Server 2012 で導入されたもので、SMB 2 以降のバージョンのリソース使用状況を監視するときに、カウンターの基本セットと見なされます。 パフォーマンスカウンターをローカルの未加工 (.blg) パフォーマンスカウンターログに記録します。 ワイルドカード文字 () を使用してすべてのインスタンスを収集 * し、Relog.exe を使用して後処理中に特定のインスタンスを抽出する方がコストが低くなります。

  • SMB クライアント共有

    これらのカウンターは、SMB 2.0 以降のバージョンを使用しているクライアントによってアクセスされているサーバー上のファイル共有に関する情報を表示します。

    Windows の通常のディスクカウンターを使い慣れている場合、特定のあくまが発生することがあります。 これは偶然ではありません。 SMB クライアント共有のパフォーマンスカウンターは、ディスクカウンターと正確に一致するように設計されています。 この方法により、現在使用しているアプリケーションディスクのパフォーマンスチューニングに関するガイダンスを簡単に再利用できます。 カウンターマッピングの詳細については、「 共有クライアントパフォーマンスカウンターのブログ」を参照してください。

  • SMB サーバー共有

    これらのカウンターは、サーバー上の SMB 2.0 以上のファイル共有に関する情報を表示します。

  • SMB サーバーセッション

    これらのカウンターは、SMB 2.0 以降を使用している SMB サーバーセッションに関する情報を表示します。

    サーバー側のカウンターをオンにすると (サーバー共有またはサーバーセッション)、高 IO ワークロードのパフォーマンスが大幅に低下する可能性があります。

  • キーフィルターの再開

    これらのカウンターは、再開キーフィルターに関する情報を表示します。

  • SMB 直接接続

    これらのカウンターは、接続アクティビティのさまざまな側面を測定します。 コンピューターは、複数の SMB 直接接続を持つことができます。 SMB 直接接続カウンターは、各接続を IP アドレスとポートのペアとして表します。最初の IP アドレスとポートは接続のローカルエンドポイントを表し、2番目の IP アドレスとポートは接続のリモートエンドポイントを表します。

  • 物理ディスク、SMB、CSV FS パフォーマンスカウンターの関係

    物理ディスク、SMB、および CSV FS (ファイルシステム) カウンターの関連の詳細については、次のブログ記事を参照してください。 クラスターの共有ボリュームパフォーマンスカウンターです。

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

次の REG _ DWORD レジストリ設定は、SMB ファイルサーバーのパフォーマンスに影響を与える可能性があります。

  • Smb2CreditsMinSmb2CreditsMax

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\Smb2CreditsMin
    
    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\Smb2CreditsMax
    

    既定値は、それぞれ512と8192です。 これらのパラメーターを使用すると、サーバーは、指定された境界内でクライアント操作の同時実行を動的に調整できます。 クライアントによっては、高帯域幅の待機時間の長いリンクを超えるファイルのコピーなど、高い同時実行性の制限によりスループットが向上する場合があります。

    ヒント

    Windows 10 および Windows Server 2016 より前では、クライアントに付与されるクレジットの数は、ネットワーク待機時間とクレジットの使用量に基づいて、付与するクレジットの最適な数を決定しようとしたアルゴリズムに基づいて、Smb2CreditsMin と Smb2CreditsMax の間で動的に変化します。 Windows 10 および Windows Server 2016 では、SMB サーバーは、構成されているクレジットの最大数まで、要求時に無条件にクレジットを付与するように変更されました。 この変更の一環として、サーバーのメモリが不足しているときに各接続のクレジットウィンドウのサイズを小さくするクレジット制限メカニズムが削除されました。 スロットルをトリガーしたカーネルのメモリ不足イベントは、サーバーのメモリが不足している場合 (< 数 MB)、役に立たない場合にのみ通知されます。 サーバーではクレジットウィンドウが縮小されないため、Smb2CreditsMin 設定は不要になり、現在は無視されています。

    SMB クライアント共有のクレジットを監視して、クレジット \ に問題があるかどうかを確認することができます。

  • AdditionalCriticalWorkerThreads

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

    既定値は0です。これは、追加の重要なカーネルワーカースレッドが追加されないことを意味します。 この値は、ファイルシステムキャッシュが先行読み取りおよび書き込み要求に使用するスレッドの数に影響します。 この値を大きくすると、記憶域サブシステムでより多くのキューに入っている i/o が可能になり、i/o パフォーマンスが向上します。特に、論理プロセッサと強力な記憶域ハードウェアが多数搭載されているシステムで発生します。

    ヒント

    この値は、キャッシュマネージャーのダーティデータ (パフォーマンスカウンターキャッシュ \ ダーティページ) が大きな部分 (最大で25%) を消費するように増加している場合に、増やす必要がある場合があります。メモリまたはシステムが多数の同期読み取り i/o を実行している場合。

  • MaxThreadsPerQueue

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\MaxThreadsPerQueue
    

    既定値は 20 です。 この値を大きくすると、同時要求を処理するためにファイルサーバーが使用できるスレッドの数が増加します。 多数のアクティブな接続を処理する必要があり、記憶域の帯域幅などのハードウェアリソースが十分である場合は、値を大きくすると、サーバーのスケーラビリティ、パフォーマンス、および応答時間が向上する可能性があります。

    ヒント

    SMB2 work キューのサイズが非常に大きくなっている場合は、値を大きくする必要があることを示しています (パフォーマンスカウンター ' Server Work Queue \ Length \ SMB2 * ' は、常に約100を超えています)。

    注意

    Windows 10、Windows Server 2016、および Windows Server 2022 では、MaxThreadsPerQueue は使用できません。 スレッドプールのスレッド数は、"20 * NUMA ノード内のプロセッサの数" になります。

  • AsynchronousCredits

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\AsynchronousCredits
    

    既定値は 512 です。 このパラメーターは、1つの接続で許可される同時非同期 SMB コマンドの数を制限します。 場合によっては (バックエンド IIS サーバーを使用するフロントエンドサーバーがある場合など)、大量の同時実行が必要になる場合があります (ファイル変更通知要求の場合は特に)。 このエントリの値は、このようなケースをサポートするように増やすことができます。

SMB サーバーチューニングの例

次の設定は、多くの場合に、ファイルサーバーのパフォーマンスに対してコンピューターを最適化することができます。 この設定は、すべてのコンピューターに最適で妥当というわけでありません。 個々の設定を適用する前に、その影響を評価する必要があります。

パラメーター Default
AdditionalCriticalWorkerThreads 64 0
MaxThreadsPerQueue 64 20

SMB クライアントパフォーマンスモニターカウンター

SMB クライアントカウンターの詳細については、「 Windows server 2012 ファイルサーバーのヒント: 新しい共有ごとの SMB クライアントパフォーマンスカウンターは、優れた洞察を提供します。