In 2012, Microsoft released its 64-bit exFAT (Extended File Allocation Table) file system as a successor to the 32-bit FAT32. Seven years later in 2019, Redmond Dev made a big reveal when it announced support for the exFAT format in Linux. Fast forward to three years from now and it looks like exFAT is going to get a huge performance boost in the upcoming Linux 6.2 thanks to Sony’s latest efforts. Yuezhang Mo, an engineer at a Japanese tech company, noticed that this shortcoming happened again and again. Traversal of directory entries Greatly improves the performance of exFAT. And this is especially noticeable in the case of lower-end CPUs.
Mo explains it. Patch:
After traversing all directory entries, prompt for an empty directory entry regardless of whether there are enough directory entries.
After this commit, point to empty directory entries like this:
1. Indicate the deleted directory entries if sufficient.
2. Indicate deleted and unused directory entries that may or may not be sufficient at the end of the cluster chain (add via this commit);
3. If there are no empty directory entries, point the empty directory entries to the new cluster (add via this commit).
This avoids frequent traversal of directory entries, reduces CPU usage, and improves the performance of creating files and directories (especially on low-performance CPUs).
To reach this conclusion, tests were run using 5000 files. What was interesting to note was that the improvement scaled with the number of file sizes. The biggest gain seen was around 58%. The test was performed on a SABER i.MX6 Lite development board using a Class 4 SD card.
Before after the improvement
25.360s 22.168 14.40%
38.242s 28.72 seconds [sic] 33.15%
49.134s 35.037 seconds 40.23%
62.042s 41.624s 49.05%
73.629 46.772s 57.42%
Interestingly, this isn’t the first time that Sony has pushed out a patch for exFAT that has drastically increased performance. Back in April, Yuezhang Mo said that with DirSync is enabled.in some cases there was an improvement of up to 85.4%.