En asynkron implementering av DISCARD presenteras för Btrfs

För btrfs filsystem presenteras asynkron implementering av DISCARD-operationen (markerar frigjorda block som inte längre behöver lagras fysiskt), implementerad av Facebooks ingenjörer.

Kärnan i problemet: i den ursprungliga implementeringen exekveras DISCARD synkront med andra operationer, vilket i vissa fall leder till prestandaproblem, eftersom enheterna måste vänta på att motsvarande kommandon ska slutföras, vilket kräver ytterligare tid. Detta kan vara ett problem om enhetens DISCARD-implementering är långsam.

Med en asynkron implementering behöver du inte vänta på att enheten ska slutföra DISCARD under normal FS-drift, vilket eliminerar problemet genom att överföra denna operation till bakgrunden. Den presenterade implementeringen utför också vissa optimeringar. Till exempel väntar den en tid av oro för att blocket snart kan användas på ett sådant sätt att det inte är någon mening med att köra DISCARD-proceduren alls, och den försöker också slå samman regioner innan den faktiskt kör DISCARD för att minska det totala antalet operationer.

Källa: opennet.ru

Lägg en kommentar