Alles rund um Windows

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.