キャッシュおよびメモリ マネージャーの機能強化

このトピックでは、Windows Server 2012 と2016でのキャッシュ マネージャーとメモリ マネージャーの機能強化について説明します。

Windows Server 2022 でのキャッシュ マネージャーの機能強化

キャッシュ マネージャーは NUMA に対応するようになりました。これにより、NUMA の境界を越えたデータ移動を回避することで、システムのパフォーマンスが向上します。 NUMA ノードからメモリにアクセスしたり、別の NUMA ノードの他のカーネル リソースにアクセスしたりすると、オーバーヘッドが大きくなります。 キャッシュ マネージャーを NUMA 対応にすることで、このようなクロス NUMA ホップを排除し、マルチ ノード構成で実行されるキャッシュされた IO ワークロードを最適化しました。

Windows Server 2019 でのキャッシュ マネージャーの機能強化

永続メモリ (PMEM) ストレージのゼロコピー サポートを追加しました。 永続メモリの詳細については、「永続的なメモリの理解とデプロイ」をご覧ください。 直接アクセス (DAX) モードでは、PMEM はメモリのように最短待機時間で動作し、データの余分なコピーを排除し、ファイルシステムのミニフィルターとストレージ スタックから大量のオーバーヘッドをバイパスします。 このモードは、NTFS でのみファイルシステムとして機能します。

Windows Server 2016 でのキャッシュ マネージャーの機能強化

キャッシュ マネージャーでは、真の非同期キャッシュ読み取りのサポートも追加されました。 これにより、非同期のキャッシュされた読み取りに大きく依存しているアプリケーションのパフォーマンスが向上する可能性があります。  ほとんどのインボックスのファイルシステムでは、非同期キャッシュの読み取りがサポートされていますが、多くの場合、スレッドプールとファイルシステムの内部作業キューの処理に関連するさまざまな設計の選択により、パフォーマンスが制限されていました。  カーネルが適切にサポートされるようになったため、キャッシュ マネージャーでは、ファイルシステムからのスレッドプールとワークキュー管理の複雑さがすべて非表示になり、非同期的にキャッシュされた読み取りを処理しやすくなりました。 キャッシュ マネージャーには、並列処理を最大化するために、(システムでサポートされている最大の) VHD 入れ子レベルの制御データ構造のセットが 1 つずつあります。

Windows Server 2012 でのキャッシュ マネージャーの機能強化

シーケンシャルなワークロードの先読みロジックに対するキャッシュ マネージャーの機能強化に加えて、新しい API CcSetReadAheadGranularityEx が追加され、SMB などのファイル システム ドライバーで先読みパラメーターを変更できます。 これにより、1 つの大規模な先行読み取り要求を送信する代わりに、複数の小さなサイズの先行読み取り要求を送信することで、リモート ファイルのシナリオのスループットを向上させることができます。 ファイル システム ドライバーなどのカーネル コンポーネントのみが、ファイルごとにこれらの値をプログラムで構成できます。

Windows Server 2012 でのメモリ マネージャーの機能強化

ページの結合を有効にすると、サーバーのメモリ使用量が少なくなる可能性があります。これには、同一のコンテンツを持つ、プライベートでページング可能なページが多数あります。 たとえば、同じメモリを集中的に使用するアプリの複数のインスタンスを実行しているサーバーや、非常に反復的なデータを扱う 1 つのアプリの場合は、ページを結合することをお勧めします。 ページの結合を有効にすることの欠点は、CPU の使用率が高くなることです。

次に、ページの結合によって多くのメリットが得られないサーバーの役割の例をいくつか示します。

  • ファイル サーバー (ほとんどのメモリは、プライベートではなく、そのため結合できないファイル ページによって消費されます)

  • AWE または大規模なページを使用するように構成されている Microsoft SQL サーバー (ほとんどのメモリはプライベートですが、ページングできません)

ページの結合は既定で無効になっていますが、Enable-mmagent Windows PowerShell コマンドレットを使用して有効にすることができます。 Windows Server 2012 ではページの結合が追加されました。