KORRIGERING: Tung minnesanvändning i ReFS i Windows

Den här artikeln innehåller en lösning på problem med minnesbelastning och prestanda som uppstår i ReFS (Resilient File System) i Windows.

Gäller för: Windows 10 – alla utgåvor, Windows Server 2016, Windows Server 2019
Ursprungligt KB-nummer: 4016173

Symptom

Du ser hög minnesanvändning på en dator som kör Windows 10, Windows Server 2016, Windows Server 2019, Windows Server, 1903 eller Windows Server, version 1909.

Orsak

För att ge större återhämtning för dess metadata använder ReFS (Resilient File System) i Windows Server 2016 allokera-vid-skriv-semantik för alla metadatauppdateringar. Det innebär att ReFS aldrig gör uppdateringar på plats av metadata. I stället görs alla skrivningar till nyligen allokerade regioner.

Allokering vid skrivning gör dock att ReFS utfärdar fler metadata-I/O till nya regioner på volymen än vad filsystem med skrivning på plats gör. Dessutom använder ReFS logik för blockcachelagring för att cachelagra dess metadata i RAM. Det är inte lika resurseffektivt som cachelagringslogik för filer.

Tillsammans blockerar ReFS cachelagringslogik och allokerar-vid-skrivning-semantik att ReFS-metadataströmmar blir stora. ReFS använder cachehanteraren för att skapa metadataströmmarna och cachehanteraren lättar upp inaktiva vyer. I vissa situationer gör den här lata avmappningen att den aktiva arbetsuppsättningen på servern växer. Detta skapar minnestryck som kan orsaka dåliga prestanda.

Åtgärd

Det här problemet åtgärdas i kumulativ uppdatering 4013429 som släpptes den 14 mars 2017. Uppdateringen introducerar tre justerbara registerparametrar.

Kumulativ uppdatering 4013429 är tillgänglig via Windows Update. Du kan också ladda ned den direkt via Microsoft Update Catalog.

Mer information finns i 14 mars 2017 – KB4013429 (OS Build 14393.953)

Så här ställer du in justerbara parametrar

Den här uppdateringen innehåller tre justerbara registerparametrar för att hantera stora ReFS-metadataströmmar. Du kan använda följande valfria metoder för att ange parametrarna. Dessa parametrar kan användas i valfri kombination eftersom de inte överlappar funktionellt.

Viktigt

  • En omstart krävs för att parameterändringarna ska börja gälla.
  • Dessa parametrar måste anges konsekvent på varje nod i ett redundanskluster.

Alternativ 1

Det här alternativet gör att ReFS försöker slutföra en MM-avkarta över alla metadataströmmar vid varje kontrollpunkt. Det här alternativet ger bara det förväntade resultatet om volymen är inaktiv och inte har några mappade sidor.

Ange de angivna värdena i följande undernyckel:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Värdenamn: RefsEnableLargeWorkingSetTrim
Ange RefsEnableLargeWorkingSetTrim = 1
Värdetyp: REG_DWORD

Alternativ 2

ReFS har en lat MM-avkartad logik. Så när ReFS växlar hela namnområdet för att slutföra en MM-avkarta, kommer den att mappas med en viss kornighet. Mängden virtuellt adressutrymme som är avmappat bestäms av följande formel:

RefsNumberOfChunksToTrim 128 MB (för volymen med storleken > 10 TB) RefsNumberOfChunksToTrim 64 MB (för volymen < 10 TB)

Det här alternativet fungerar om VA-intervallet som avmappas inte har några aktiva referenser (d.v.s. mappade metadatasidor).

Ange de angivna värdena i följande undernyckel:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Värdenamn: RefsNumberOfChunksToTrim
Värdetyp: REG_DWORD
STANDARD (om det inte är inställt eller 0): 4

Obs!

Om du anger RefsNumberOfChunksToTrim till högre värden kan ReFS trimmas mer aggressivt. Det minskar mängden minne som används. Ange trimvärdet till ett lämpligt tal: 8, 16, 32 och så vidare.

Alternativ 3

I det här alternativet skickar ReFS en infogad MM-trimning medan dess metadatasida avmappas. Det här är det mest aggressiva alternativet eftersom det kan orsaka prestandaregression om ReFS används på media med höga prestanda, till exempel en SSD eller NVMe.

Ange de angivna värdena i följande undernyckel:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Värdenamn: RefsEnableInlineTrim
Värdetyp: REG_DWORD
Ange RefsEnableInlineTrim = 1

Rekommendation:

Om en stor aktiv arbetsuppsättning orsakar dåliga prestanda försöker du först ange RefsEnableLargeWorkingSetTrim = 1.

Om den här inställningen inte ger ett tillfredsställande resultat kan du prova olika värden för RefsNumberOfChunksToTrim, till exempel 8, 16, 32 och så vidare.

Om detta fortfarande inte ger önskad effekt anger du RefsEnableInlineTrim = 1.

Mer information

För att uppdatera sina metadata använder ReFS allokera-på-skrivning i stället för att skriva på plats för att förbättra dess återhämtning till skada.

Att skriva på plats är mottagligt för sönderrivna skrivningar. Det inträffar om ett strömavbrott eller en oväntad demontering gör att en skrivning bara delvis slutförs.

Genom att allokera vid skrivning kan ReFS på ett tillförlitligt sätt upprätthålla metadatakonsekvens efter ett strömavbrott eller en oväntad demontering. Det beror på att ReFS fortfarande kan referera till den tidigare konsekventa metadatakopian.

Referenser