Linux 7.4 otrzymał optymalizację systemu plików FAT32, która w testach pozwoliła uzyskać nawet 265-krotne przyspieszenie wybranych operacji. Zmiana dotyczy sposobu przydzielania miejsca na dane. Choć wydawało się, że nie ma już tutaj czrgo poprawiać, to nawet w dojrzałych rozwiązaniach kilka linijek kodu może przynieść ogromną poprawę wydajności.
Za optymalizację odpowiada Matheus Alves de Almeida, programista związany z rozwojem otwartego oprogramowania. Jego poprawka modyfikuje sposób działania sterownika FAT podczas wstępnego przydzielania miejsca na pliki.
Mała poprawka, ogromna różnica
Kluczowe znaczenie ma flaga FALLOC_FL_KEEP_SIZE. Pozwala ona zarezerwować przestrzeń na dysku bez zmiany rozmiaru pliku widocznego dla systemu. Pozwala to aplikacjom przygotować miejsce na dane, zanim faktycznie zaczną je zapisywać.
Problem tkwił w sposobie wykonywania alokacji. Dotychczasowa ścieżka kodu mogła realizować wiele operacji przydzielania przestrzeni w obrębie pojedynczego klastra. Nowa wersja pozwala obsłużyć większą liczbę klastrów podczas jednego wywołania.
Zmiana jest niewielka pod względem ilości kodu, ale potrafi znacząco ograniczyć narzut związany z wykonywaniem kolejnych operacji, a różnica w niekótrych scenariuszach jest wyjątkowo duża.
Nawet 265 razy szybciej w testach
Wyniki testów opublikowanych przez autora poprawki wskazują na wyraźne przyspieszenie operacji związanych z FAT32. W najlepszym przypadku wydajność wzrosła nawet 265-krotnie.
Trzeba jednak zachować odpowiednie proporcje. Nie oznacza to, że cały system Linux będzie działał 265 razy szybciej ani że kopiowanie każdego pliku nagle przyspieszy o podobną wartość. Wynik dotyczy konkretnych operacji i warunków testowych związanych z alokacją przestrzeni.
FAT32 to starszy system plików, który nadal pozostaje popularny ze względu na szeroką zgodność z różnymi urządzeniami. Można go spotkać między innymi na nośnikach USB, kartach pamięci i sprzęcie elektronicznym. Każda optymalizacja jego obsługi może więc mieć praktyczne znaczenie, choć skala korzyści będzie zależeć od zastosowania.
Poprawka trafiła do Linuksa 7.4
Optymalizacja została zaakceptowana i włączona do rozwoju jądra Linux 7.4 w ramach zmian niezwiązanych z zarządzaniem pamięcią. Poprawka trafiła do odpowiedniej gałęzi po przesłaniu żądania przez Andrew Mortona.

Pokaż / Dodaj komentarze do:
Linux 7.4 przyspiesza FAT32 nawet 265 razy. Wystarczyło kilka linijek kodu