En asynkron implementering af DISCARD præsenteres for Btrfs

Til btrfs filsystem fremlagde asynkron implementering af DISCARD-operationen (markering af frigivne blokke, der ikke længere skal lagres fysisk), implementeret af Facebook-ingeniører.

Essensen af ​​problemet: I den oprindelige implementering udføres DISCARD synkront med andre operationer, hvilket i nogle tilfælde fører til ydeevneproblemer, da drevene skal vente på, at de tilsvarende kommandoer er fuldført, hvilket kræver ekstra tid. Dette kan være et problem, hvis drevets DISCARD-implementering er langsom.

Med en asynkron implementering er der ingen grund til at vente på, at drevet fuldfører DISCARD under normal FS-drift, hvilket eliminerer problemet ved at overføre denne operation til baggrunden. Den præsenterede implementering udfører også nogle optimeringer. For eksempel venter den et stykke tid af bekymring for, at blokken snart kan blive brugt på en sådan måde, at det overhovedet ikke nytter at udføre DISCARD-proceduren, og den forsøger også at flette regioner, før den rent faktisk udfører DISCARD for at reducere det samlede antal operationer.

Kilde: opennet.ru

Tilføj en kommentar