修正: Windows 上の ReFS でのメモリ使用量が多い

この記事では、Windows の回復性ファイル システム (ReFS) で発生するメモリ不足とパフォーマンスの問題の解決策について説明します。

適用対象: Windows 10 - すべてのエディション、Windows Server 2016、Windows Server 2019
元の KB 番号: 4016173

現象

Windows 10、Windows Server 2016、Windows Server 2019、Windows Server、1903、または Windows Server バージョン 1909 を実行しているコンピューターでメモリ使用量が多いことがわかります。

原因

メタデータの回復性を高めるために、Windows Server 2016の回復性ファイル システム (ReFS) では、すべてのメタデータ更新に対して書き込み時の割り当てセマンティクスが使用されます。 つまり、ReFS はメタデータに対してインプレース更新を行うことはありません。 代わりに、新しく割り当てられたリージョンにすべての書き込みを行います。

ただし、書き込み時に割り当てると、ReFS は、書き込みインプレース ファイル システムよりも多くのメタデータ I/O をボリュームの新しいリージョンに発行します。 さらに、ReFS はブロック キャッシュ ロジックを使用して、そのメタデータを RAM にキャッシュします。 ファイル キャッシュ ロジックほどリソース効率が高くありません。

ReFS ブロック キャッシュ ロジックと書き込み時の割り当てセマンティクスを組み合わせると、ReFS メタデータ ストリームが大きくなります。 ReFS はキャッシュ マネージャーを使用してメタデータ ストリームを作成し、キャッシュ マネージャーは非アクティブなビューのマップを遅延的に解除します。 場合によっては、この遅延マッピング解除によって、サーバー上のアクティブなワーキング セットが拡大します。 これにより、メモリ負荷が発生し、パフォーマンスが低下する可能性があります。

解決方法

この問題は、2017 年 3 月 14 日にリリースされた累積的な更新プログラム 4013429で解決されます。 この更新プログラムでは、3 つの調整可能なレジストリ パラメーターが導入されています。

累積的な更新プログラムの4013429は、Windows Updateを通じて利用できます。 Microsoft Update カタログから直接ダウンロードすることもできます。

詳細については、「2017 年 3 月 14 日 —KB4013429 (OS ビルド 14393.953)」を参照してください。

調整可能なパラメーターを設定する方法

この更新プログラムは、大規模な ReFS メタデータ ストリームに対処するための 3 つの調整可能なレジストリ パラメーターを提供します。 次の省略可能なメソッドを使用して、パラメーターを設定できます。 これらのパラメーターは機能的に重複しないため、任意の組み合わせで使用できます。

重要

  • これらのパラメーターの変更を有効にするには、再起動が必要です。
  • これらのパラメーターは、フェールオーバー クラスターのすべてのノードで一貫して設定する必要があります。

オプション 1

このオプションを使用すると、ReFS はチェックポイントごとにすべてのメタデータ ストリームの MM のマップ解除を完了しようとします。 このオプションは、ボリュームがアイドル状態で、マップされたページがない場合にのみ、予期される結果を生成します。

次のサブキーで、指定した値を指定します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
値名: RefsEnableLargeWorkingSetTrim
RefsEnableLargeWorkingSetTrim = 1 を設定する
値の種類: REG_DWORD

オプション 2

ReFS には、遅延 MM のマップ解除ロジックがあります。 そのため、ReFS は名前空間全体を循環して MM のマップ解除を完了すると、特定の粒度でマップ解除されます。 マップされていない仮想アドレス空間の量は、次の式によって決まります。

RefsNumberOfChunksToTrim 128 MB (サイズ > 10 TB のボリュームの場合) RefsNumberOfChunksToTrim 64 MB (サイズ < 10 TB のボリュームの場合)

このオプションは、マップ解除されている VA 範囲にアクティブな参照 (つまり、マップされたメタデータ ページ) がない場合に機能します。

次のサブキーで、指定した値を指定します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
値名: RefsNumberOfChunksToTrim
値の種類: REG_DWORD
DEFAULT (設定されていない場合または 0): 4

注:

RefsNumberOfChunksToTrim を高い値に設定すると、ReFS はより積極的にトリミングされます。 これにより、使用されているメモリの量が減ります。 トリミング値を適切な数値 (8、16、32 など) に設定します。

オプション 3

このオプションでは、ReFS はメタデータ ページのマップ解除中に MM トリミングをインラインで送信します。 これは、SSD や NVMe などの高パフォーマンス メディアで ReFS を使用するとパフォーマンス低下を引き起こす可能性があるため、最も積極的なオプションです。

次のサブキーで、指定した値を指定します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
値名: RefsEnableInlineTrim
値の種類: REG_DWORD
RefsEnableInlineTrim = 1 に設定する

推薦:

アクティブなワーキング セットが大きいとパフォーマンスが低下する場合は、まず RefsEnableLargeWorkingSetTrim = 1 を設定してみてください。

この設定で満足のいく結果が得られない場合は、 RefsNumberOfChunksToTrim のさまざまな値 (8、16、32 など) を試してください。

それでも必要な効果が得られない場合は、 RefsEnableInlineTrim = 1 を設定します。

詳細

そのメタデータを更新するために、ReFS では、インプレース書き込みの代わりに割り当て時書き込みを使用して、破損に対する回復性を向上させます。

インプレース書き込みは、書き込みが破損する可能性があります。 これは、電源障害または予期しないマウント解除によって書き込みが部分的にのみ完了した場合に発生します。

書き込み時に割り当てると、電源障害または予期しないマウント解除後に、ReFS でメタデータの整合性を確実に維持できます。 ReFS は、以前の一貫性のあるメタデータ コピーを引き続き参照できるためです。

関連情報