Dla Btrfs przedstawiono asynchroniczną implementację DISCARD

Dla systemu plików btrfs reprezentowany przez asynchroniczna implementacja operacji DISCARD (oznaczanie zwolnionych bloków, których nie trzeba już fizycznie przechowywać), zaimplementowana przez inżynierów Facebooka.

Istota problemu: w oryginalnej implementacji DISCARD jest wykonywana synchronicznie z innymi operacjami, co w niektórych przypadkach prowadzi do problemów z wydajnością, ponieważ dyski muszą czekać na wykonanie odpowiednich poleceń, co wymaga dodatkowego czasu. Może to stanowić problem, jeśli implementacja DISCARD dysku jest powolna.

Przy implementacji asynchronicznej nie ma potrzeby czekania, aż dysk zakończy DISCARD podczas normalnej pracy FS, co eliminuje problem poprzez przeniesienie tej operacji do tła. Prezentowana implementacja przeprowadza także pewne optymalizacje. Przykładowo czeka jakiś czas w obawie, że blok może wkrótce zostać wykorzystany w taki sposób, że nie będzie w ogóle sensu wykonywać procedury DISCARD, a także próbuje scalić regiony przed faktycznym wykonaniem DISCARD, aby zmniejszyć całkowitą liczbę operacji.

Źródło: opennet.ru

Dodaj komentarz