この記事では、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 は、インプレース書き込みファイル システムよりも多くのメタデータ I/O をボリュームの新しいリージョンに発行します。 さらに、ReFS はブロック キャッシュ ロジックを使用して、そのメタデータを RAM にキャッシュします。 ファイル キャッシュ ロジックほどリソース効率が高くありません。
ReFS ブロック キャッシュ ロジックと書き込み時の割り当てセマンティクスを組み合わせると、ReFS メタデータ ストリームが大きくなります。 ReFS はキャッシュ マネージャーを使用してメタデータ ストリームを作成し、キャッシュ マネージャーは非アクティブなビューのマップを遅延で解除します。 状況によっては、この遅延マッピング解除により、サーバー上のアクティブなワーキング セットが拡大します。 これにより、パフォーマンスが低下する可能性があるメモリ不足が発生します。
解決方法
この問題は、2017 年 3 月 14 日にリリースされた累積的な更新プログラムの4013429で解決されます。 この更新プログラムでは、3 つの調整可能なレジストリ パラメーターが導入されています。
累積的な更新プログラムの4013429は、Windows Update から入手できます。 Microsoft Update Catalog から直接ダウンロードすることもできます。
詳細については、「 2017 年 3 月 14 日— KB4013429 (OS ビルド 14393.953)」を参照してください。
調整可能なパラメーターを設定する方法
この更新プログラムは、大規模な ReFS メタデータ ストリームに対処するための 3 つの調整可能なレジストリ パラメーターを提供します。 次の省略可能なメソッドを使用して、パラメーターを設定できます。 これらのパラメーターは機能上重複しないため、任意の組み合わせで使用できます。
重要
- これらのパラメーターの変更を有効にするには、再起動が必要です。
- これらのパラメーターは、フェールオーバー クラスターのすべてのノードで一貫して設定する必要があります。
オプション 1
このオプションにより、ReFS は、すべてのチェックポイントですべてのメタデータ ストリームの MM アンマップを完了しようとします。 このオプションは、ボリュームがアイドル状態で、マップされたページがない場合にのみ、予期される結果を生成します。
次のサブキーで、指定された値を指定します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
値の名前: RefsEnableLargeWorkingSetTrim
Set 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
Set RefsEnableInlineTrim = 1
推奨事項:
アクティブなワーキング セットが大きいとパフォーマンスが低下する場合は、最初に RefsEnableLargeWorkingSetTrim = 1 を設定してみてください。
この設定で十分な結果が得られない場合は、8、16、32 など、 RefsNumberOfChunksToTrim のさまざまな値を試してください。
それでも必要な効果が得られない場合は、 RefsEnableInlineTrim = 1 に設定します。
ReFS では、メタデータを更新するために、書き込みの代わりに書き込み時の割り当てを使用して、破損に対する回復性を向上させます。
インプレース書き込みでは、書き込みが破損する可能性があります。 これは、電源障害または予期しないマウント解除によって書き込みが部分的にのみ完了した場合に発生します。
書き込み時の割り当てにより、電源障害または予期しないマウント解除後に、ReFS でメタデータの整合性を確実に維持できます。 これは、ReFS が以前の一貫性のあるメタデータ コピーを引き続き参照できるためです。
関連情報