Microsoftov exFAT ponovo dobija apsolutno ogromno povećanje performansi na Linux-u zahvaljujući Sony-ju
Pre više od jedne decenije, tačnije 2012. godine, Microsoft je objavio svoj 64-bitni exFAT (Extended File Allocation Table) sistem datoteka kao naslednik 32-bitnog FAT32. Sedam godina kasnije, 2019., gigant iz Redmonda napravio je veliko otkriće kada je najavio podršku za exFAT format u Linuxu.
Premotaj deceniju unapred, 2022. godine, inženjer kompanije Sony, Yuezhang Mo je otkrio da je smanjenje ponovljenih obilaženja unosa u direktorijumu poboljšalo performanse exFAT-a do 57%. Ovo je gurnuto u Linux kernel verziju 6.2.
Mo se vratio da ponovo pomaže exFAT-u, i ovog puta, najnoviji pull request sadrži gomilu poboljšanja u vezi sa exFAT-om, a povećanje performansi je jedno od njih. on piše:
Opis ovog pull requesta:
- Popravite nasumično oštećenje stack-a i netačne greške u exfat_get_block().
- Optimizujte exfat_get_block() poboljšanjem provere uglova.
- Popravite beskrajnu petlju samopovezanim lancem u exfat_find_last_cluster.
- Uklonite mrtve EXFAT_CLUSTERS_UNTRACKED kodove.
- Dodajte proveru isključenja koja nedostaje.
- Poboljšajte performanse brisanja pomoću opcije odbacivanja montiranja.
Za one koji se pitaju, opcija „odbaci mount“ se odnosi na operaciju informisanja osnovnog uređaja za skladištenje o blokovima koji više nisu u upotrebi. Dakle, kada se sistem datoteka montira sa opcijom odbacivanja, on omogućava operacije odbacivanja u realnom vremenu. Ove operacije automatski obaveštavaju uređaj za skladištenje svaki put kada blokira prelazak sa „korišćenog“ na „slobodno“.
Zakrpa objašnjava:
- Ako je omogućena opcija odbacivanja montiranja, klasteri datoteke se odbacuju kada se klasteri oslobode. Odbacivanje klastera jedan po jedan će značajno smanjiti performanse. Loše performanse mogu uzrokovati meko zaključavanje kada se oslobodi veliki broj klastera.
- Ovo urezivanje poboljšava performanse odbacivanjem susednih klastera u serijama.
Poboljšanje performansi je mereno korišćenjem datoteke od 80 GB, a za brisanje je bilo potrebno 4 minuta i 46 sekundi ili blizu 287 sekundi. Sa novom optimizacijom, zadatak je završen za manje od 2 sekunde, što je jednako poboljšanju od 172 puta:

Povećanje performansi exFat u Linuxu je ogromno!
Merenje učinka prema:
truncate -s 80G /mnt/file
time rm /mnt/file
Bez:
real 4m46.183s
user 0m0.000s
sys 0m12.863s
Sa:
real 0m1.661s
user 0m0.000s
sys 0m0.017s
Pull request možete pogledati ovde na web lokaciji Linux Kernel Mailing List (LKML).