本月 SIG 整体进展
项目具体进展
ext4:修复 ext4_xattr_delete_inode hang(PR1362)
xfs:xfs_qm 清理(PR1326),修复 xfs_sysfs_init 内存泄露(PR1332/PR1334),移除 xfs_rename 中不正确的 ASSERT(PR1351),修复 force shutdown UAF(PR1376)
erofs 文件系统支持精简的 long xattr name prefixes,用于解决存储 overlayfs xattr 元数据(例如 composefs 模式)重复 name 的额外开销, 更多背景可参考:
https://lore.kernel.org/r/20230407141710.113882-1-jefflexu@linux.alibaba.com
erofs-utils 支持从 tarball 生成索引直接挂载,最新补丁正在测试中:
https://lore.kernel.org/r/20230401072705.99060-1-hsiangkao@linux.alibaba.com
截止目前,上游社区一共提出了三种 ublk 零拷贝方案:
https://lwn.net/Articles/926118/
我们也在调研一种基于 io_uring register 模式的零拷贝的方案,预计后续将发出 RFC 补丁到上游社区。
ublk 在 ANCK 5.10 上已经完成回合,并在分布式存储项目进行了 POC 测试,结果显示 ublk 的单 I/O 时延能优化到 tcmu 的一半,有很大的优势。
ACNK 5.10 和之前基于 6.1 主线上测试 ublk 的性能数据很接近,表明 ANCK 5.10 的 ublk 已经基本可用,后续将随 5.10.134-014 版本发布。
对 io_uring echo server 测试框架进行优化,对每个 IO 请求引入工作负载从而模拟真实的业务环境,io_uring 的性能开始稳定的比 epoll 提高 10% 左右,原因是 io_uring 的提交 batch 有一定程度的提高。在进行 IO 请求的工作负载处理时,网络可能继续有请求到来,从而可以在一次 io_uring_enter 中提交多个请求,提高 batch。
我们调整了 io_uring asio 协程的实现方案,通过基于 io_uring 的 mulit-shot recv 和 provid-buffer 机制,采用 completion models 模式来实现异步编程。
此方案的好处是在网络中断中直接触发 io_uring recv 操作,缩短的整个 IO 链路。而传统 Readiness 编程模型需要先等待 IO 事件,然后再发起 IO 操作。目前 POC 代码完成 60% 左右。
03
erofs Linux v6.4 合入窗口准备,erofs-utils 支持 tarball 模式合入主线,deflate 压缩算法支持等。
ublk 分布式存储项目业务适配。
io_uring asio 优化方案实现和 POC 测试。
附录:SIG 项目一览
-
io_uring -
virtiofs -
容器镜像加速 -
数据库优化 -
用户态存储 -
DSMS
高性能存储技术 SIG 主页:
https://openanolis.cn/sig/high-perf-storage
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

本文分享自微信公众号 - OpenAnolis龙蜥(OpenAnolis)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。