
exFAT 性能的增强:十年创新
2012 年,微软推出了 64 位版本的扩展文件分配表 (exFAT),作为旧版 32 位 FAT32 文件系统的现代替代品。2019 年,该公司又迈出了重要一步,宣布在 Linux 平台上原生支持 exFAT 格式,标志着文件系统互操作性发展的关键时刻。
最近出现了一些进展,这尤其要归功于索尼工程师莫岳章的贡献。2022 年,莫岳章发现优化目录条目遍历可以将 exFAT 的性能提高 57%。这一关键改进被集成到 Linux 内核版本 6.2 中,展示了文件系统技术的持续发展。
exFAT 优化的最新进展
Mo 在最近的一次拉取请求中再次进行了改进,旨在完善 exFAT 文件系统。提议的更改包括几项关键改进,这些改进不仅可以提高性能,还可以解决现有问题。以下是最新提交内容中包含的增强功能的摘要:
此拉取请求的描述:
- 解决随机堆栈损坏并纠正错误
exfat_get_block()
。exfat_get_block()
通过优化边缘情况来增强。- 修复与自链接链相关的无限循环问题
exfat_find_last_cluster
。- 消除过时的
EXFAT_CLUSTERS_UNTRACKED
代码。- 添加关机期间必要的检查。
- 使用丢弃挂载选项时提高删除性能。
“放弃挂载”选项在性能改进中起着至关重要的作用。它使文件系统能够与存储设备通信,以指示哪些块不再需要。这种实时通知可以高效管理可用空间,有助于简化操作并提高整体文件系统效率。
该补丁澄清道:
如果启用了丢弃挂载选项,则释放的集群将被立即丢弃。逐个处理集群可能会降低性能,在释放大量集群时可能会导致软锁定。此更新通过批量处理相邻集群的丢弃操作来提高性能。
绩效指标:显著改善
这些增强功能带来的性能提升非常显著。测试涉及一个 80 GB 的大文件,之前需要大约 4 分 46 秒才能删除。实施新的优化后,删除时间骤降至 2 秒以内,实现了惊人的 172 倍性能提升。
性能测量显示:
#
truncate -s 80G /mnt/file
#
time rm /mnt/file
如果没有这个提交:
- 实际 4m46.183s
- 用户 0分0.000秒
- 系统 0分12.863秒
通过此提交:
- 实际 0分1.661秒
- 用户 0分0.000秒
- 系统 0分0.017秒
有关此拉取请求的更多详细信息,您可以在Linux 内核邮件列表 (LKML)上查看。
要了解有关这些性能增强的更多见解,您可以访问源文章。
发表回复