FIX: Heavy memory usage in ReFS on Windows

この記事では、Windows の Resilient File System (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 の Resilient File System (ReFS) では、すべてのメタデータ更新に対して書き込み時の割り当てセマンティクスを使用します。 つまり、ReFS はメタデータに対して一時更新を行う必要があります。 代わりに、新しく割り当てられた領域へのすべての書き込みを行います。

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

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

解決方法

This issue is addressed in cumulative update 4013429 that was released on March 14, 2017. この更新プログラムでは、3 つのレジストリ パラメーターを使用できません。

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

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

Tunable パラメーターを設定する方法

この更新プログラムは、大規模な 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 を設定してみてください

この設定で十分な結果が得ない場合は、8、16、32 など 、RefsNumberOfChunksToTrim に対して異なる値を試してください。

If this still doesn't provide the wanted effect, set RefsEnableInlineTrim = 1.

詳細情報

ReFS では、メタデータを更新するために、インセットの書き込みではなく書き込み時割り当て機能を使用して、破損に対する回復性を向上します。

イン Place での書き込みは、書き込みの破れやすい状態です。 電源障害または予期しないマウント解除によって書き込みだけが部分的に完了した場合に発生します。

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

関連情報