Microsofts exFAT erhält unter Linux dank Sony einen deutlichen Leistungsschub
Vor mehr als einem Jahrzehnt, im Jahr 2012, veröffentlichte Microsoft sein 64-Bit exFAT (Extended File Allocation Table) Dateisystem als Nachfolger des 32-Bit FAT32. Sieben Jahre später, im Jahr 2019, machte der Konzern aus Redmond eine große Enthüllung, als er Unterstützung für das exFAT-Format in Linux ankündigte.
Ein Jahrzehnt später, im Jahr 2022, fand der Sony-Ingenieur Yuezhang Mo heraus, dass die Reduzierung der wiederholten Durchläufe von Verzeichniseinträgen die Leistung von exFAT um bis zu 57 % verbesserte. Dies wurde in die Linux-Kernelversion 6.2 aufgenommen.
Mo ist zurück, um exFAT wieder zu überarbeiten, und dieses Mal enthält der neueste Pull-Request eine Reihe von exFAT-bezogenen Verbesserungen, und eine Leistungssteigerung ist eine davon.
Beschreibung für diesen Pull Request:
- Behebung der willkürlichen Stack-Fehler und falscher Fehlerrückgaben in exfat_get_block().
- Optimierung von exfat_get_block() durch Verbesserung der Überprüfung von Eckfällen.
- Behebung einer Endlosschleife durch eine selbstverknüpfte Kette in exfat_find_last_cluster.
- Entfernen von toten EXFAT_CLUSTERS_UNTRACKED Codes.
- Hinzufügen einer Prüfung auf fehlerhaftes Herunterfahren.
- Verbessern der Löschleistung mit der Option „discard mount“.
Die Leistungsverbesserung wurde anhand einer 80 GB großen Datei gemessen, für deren Löschung 4 Minuten und 46 Sekunden oder fast 287 Sekunden benötigt wurden. Mit der neuen Optimierung wurde die Aufgabe in weniger als 2 Sekunden erledigt, was einer Verbesserung um den Faktor 172 entspricht:
Die Leistung wird wie folgt gemessen:
# truncate -s 80G /mnt/file
# time rm /mnt/file
Ohne diesen Commit:
real 4m46.183s
user 0m0.000s
sys 0m12.863s
Mit diesem Commit:
real 0m1.661s
benutzer 0m0.000s
sys 0m0.017s
Sie können den Pull Request hier auf der Linux Kernel Mailing List (LKML) Webseite einsehen.