page contents

索尼工程师再次帮助微软大幅度提升exFAT文件系统在Linux上的性能

微软在 2006 年推出 exFAT (扩展文件分配表) 文件系统用于优化闪存存储性能,到 2012 年微软推出 64 位版 exFAT 文件系统作为 FAT32 的后继者,7 年后的 2019 年微软宣布在 Linux 系统中支持 exFAT 格式。

attachments-2025-04-k6SzAB5868117c927a9e2.jpg微软在 2006 年推出 exFAT (扩展文件分配表) 文件系统用于优化闪存存储性能,到 2012 年微软推出 64 位版 exFAT 文件系统作为 FAT32 的后继者,7 年后的 2019 年微软宣布在 Linux 系统中支持 exFAT 格式。

到 2022 年索尼工程师 Yuezhang Mo 注意到减少目录条目的重复遍历可以让 exFAT 文件系统的性能提升高达 57%,改进后的版本在 Linux Kernel 6.2 版 (发布于 2023 年 2 月) 中得到实现。

现在这名工程师再次帮助微软提升 exFAT 文件系统的性能,最新的拉取请求包含大量与 exFAT 相关的改进,其中就包括关于继续提升 exFAT 在 Linux 中的性能的改进。

在拉取请求中索尼工程师提到:

  • 修复 exfat_get_block () 中的随机堆栈损坏和不正确的错误返回
  • 通过改进检查极端情况来优化 exfat_get_block ()
  • 修复 exfat_find_last_cluster 中自链接 (self-linked) 造成的无限循环
  • 删除无效的 EXFAT_CLUSTERS_UNTRACKED 代码
  • 添加缺失的关机检查
  • 使用丢弃挂载选项提高删除性能

丢弃挂载指的是通知底层存储设备不再使用的块的操作,因此当使用丢弃选项挂载文件系统时,该功能会启用实时丢弃操作,每次当块从已使用转换为空闲状态时,这些操作都会自动通知存储设备。

索尼工程师在补丁说明中写道:

如果启用丢弃挂载选项则在释放簇时就会丢弃文件的簇,逐个丢弃簇会显著降低性能,当释放大量簇时性能不佳还会造成软锁定,此提交通过批量丢连续簇来提高性能。

作为测试使用 80GB 的文件用来对比,删除该文件原本在 exFAT 中需要 4 分 46 秒,通过此次优化后只需要 2 秒就可以完成,相当于这个补丁给文件文件删除的性能提高了 172 倍,当然具体文件体积和数量可能会有些性能方面的差异。

下面是衡量指标:

# truncate -s 80G /mnt/file

# time rm /mnt/file

如果没有这个补丁:

实际花费时间为 4 分 46.183 秒

用户操作时间为 0 秒

系统操作时间为 12.863 秒

有了这个补丁后:

实际花费时间为 1.661 秒

用户操作时间为 0 秒

系统操作时间为 0.017 秒

最后虽然补丁是提交了但合并到 Linux Kernel 可能还需要很长时间,一方面这需要微软检查并测试,另一方面也需要内核团队后续的确认,所以短时间应该不会合并到 Linux Kernel 即将发布的新版本中。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-04-30 09:27
  • 阅读 ( 54 )
  • 分类:行业资讯

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2144 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2144 文章
  3. Pack 1307 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章