高性能存储技术 SIG(Special Interest Group)指标:高性能存储技术趣味组致力于存储栈性能开掘,以后次要聚焦内核 io_uring 技术优化异步 IO 性能,应用长久化内存晋升业务单老本性能,容器场景存储技术优化等课题。冀望通过社区平台,打造规范的高性能存储技术软件栈,推动软硬件协同倒退。
01 本月 SIG 整体停顿
本月合入 Anolis 主线 PR 26 个,蕴含多个重要组件的更新。erofs 反对精简的 long xattr name prefixes,优化 overlayfs 场景 xattr 元数据开销。ANCK 5.10 ublk 已实现 POC 测试,相比 tcmu 时延优化 1 倍。io_uring asio 协程优化计划曾经确定,预计性能优化 10%。DSMS 治理平台的开发根本实现,dsms-storage 适配 Anolis 23 进行中。感激中兴的同学提交了多个 bugfix。
02 我的项目具体停顿
1、Anolis OS
ext4:修复 ext4_xattr_delete_inode hang(PR1362)
xfs:xfs_qm 清理(PR1326),修复 xfs_sysfs_init 内存泄露(PR1332/PR1334),移除 xfs_rename 中不正确的 ASSERT(PR1351),修复 force shutdown UAF(PR1376)
fuse:修复 fuse flush/resend 接口 bug(PR1302)nfs:修复 RECLAIM_COMPLETE EACCES 问题(PR1324/PR1325),修复 slot 调配失败的内存泄露(PR1346/PR1347),修复遍历 grace_list 短少锁爱护问题(PR1350),修复参数解析空指针(PR1370),解决 CREATE_SESSION NFS4ERR_NOSPC(PR1368/PR1360)misc:修复 hugetlbfs_parse_param 空指针(PR1352),修复 configfs_create_dir 内存泄露(PR1357),修复 nbd_start_device_ioctl hang(PR1356),修复 rbd_sysfs_init() 内存泄露(PR1372/PR1373),修复 md_cluster unlock_all_bitmaps 野指针(PR1367),修复 nvme_alloc_admin_tags 空指针(PR1405)vfio:Clear the caps->buf to NULL after free(PR1422/1427),修复 drbd_create_device UAF(PR1251)VFS:修复 ltp/openat04(PR1489)
2、容器镜像减速
erofs 文件系统反对精简的 long xattr name prefixes,用于解决存储 overlayfs xattr 元数据(例如 composefs 模式)反复 name 的额定开销, 更多背景可参考:https://lore.kernel.org/r/20230407141710.113882-1-jefflexu@li…
erofs-utils 反对从 tarball 生成索引间接挂载,最新补丁正在测试中:https://lore.kernel.org/r/20230401072705.99060-1-hsiangkao@li…
3、用户态存储
截止目前,上游社区一共提出了三种 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 版本公布。
4、io_uring
对 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% 左右。
5、DSMS
dsms-engine 开发进行中,次要是部署局部性能,B 版本测试同步进行中。因为 Anolis 23 上的 ceph 版本为 17.x,dsms-storage 仓库目前以来 15.x。通过 SIG 例会探讨,决定放到 dsms 子仓库中来保护。
03 SIG 下一步打算
erofs Linux v6.4 合入窗口筹备,erofs-utils 反对 tarball 模式合入主线,deflate 压缩算法反对等。
ublk 分布式存储我的项目业务适配。
io_uring asio 优化计划实现和 POC 测试。
DSMS 持续适配 Anolis 23。
附录:SIG 我的项目一览
- io_uring
- virtiofs
- 容器镜像减速
- 数据库优化
- 用户态存储
- DSMS
详情内容见高性能存储技术 SIG,欢送各位感兴趣的开发者退出共建。
—— 完 ——