乐趣区

关于高性能:高性能存储SIG月度动态ANCK-ublk完成POC测试EROFS优化xattr元数据开销

高性能存储技术 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,欢送各位感兴趣的开发者退出共建。

—— 完 ——

退出移动版