En asynkron implementering av DISCARD presenteres for Btrfs

For btrfs filsystem representert av asynkron implementering av DISCARD-operasjonen (merker frigitte blokker som ikke lenger trenger å lagres fysisk), implementert av Facebook-ingeniører.

Essensen av problemet: i den opprinnelige implementeringen utføres DISCARD synkront med andre operasjoner, noe som i noen tilfeller fører til ytelsesproblemer, siden stasjonene må vente på at de tilsvarende kommandoene skal fullføres, noe som krever ekstra tid. Dette kan være et problem hvis stasjonens DISCARD-implementering er treg.

Med en asynkron implementering er det ikke nødvendig å vente på at stasjonen skal fullføre DISCARD under normal FS-drift, noe som eliminerer problemet ved å overføre denne operasjonen til bakgrunnen. Den presenterte implementeringen utfører også noen optimaliseringer. For eksempel venter den en stund av bekymring for at blokken snart kan bli brukt på en slik måte at det ikke er noen vits i å utføre DISCARD-prosedyren i det hele tatt, og den prøver også å slå sammen regioner før den faktisk utfører DISCARD for å redusere det totale antallet operasjoner.

Kilde: opennet.ru

Legg til en kommentar