龙蜥SIG月度动态:ublk完成POC dsms-storage在Anolis OS成功适配 原创

龙蜥社区OpenAnolis
发布于 2023-2-6 14:05
浏览
0收藏

高性能存储技术 SIG(Special Interest Group)目标:高性能存储技术兴趣组致力于存储栈性能挖掘,当前主要聚焦内核 io_uring 技术优化异步 IO 性能,使用持久化内存提升业务单成本性能,容器场景存储技术优化等课题。期望通过社区平台,打造标准的高性能存储技术软件栈,推动软硬件协同发展。 

01 本月 SIG 整体进展

尽管 SIG 成员在 1 月都经历了新冠感染,但在本月仍然合入 anolis 主线 PR 23 个,包含多个主要组件的特性增强,性能优化,以及 bugfix 等。感谢所有 SIG 成员的辛勤付出,祝大家新年快乐!


ANCK 5.10 支持 ublk 代码已基本完成适配,同步测试中;另外在分布式存储项目中完成 POC,从 POC 数据来看,效果很不错,比之前的 tcmu 方案有很大程度的优化。该特性支持预计将在 ANCK 5.10-14 版本正式发布。


erofs 容器镜像 page cache 共享特性代码已发送到社区,需要进一步跟进并根据社区的 review 意见修改,并最终合入社区主线。


ANCK 4.19/5.10 fuse 回合 killpriv_v2 特性,极大地提升了 small write 性能(70% ~ 120%)。


DSMS 第一阶段适配工作已基本完成,dsms-storage 已可以在 Anolis OS 上正常运行。

浪潮信息 cuishiwei 同学在测试多个 nvme 盘并发创建和删除分区时发现可能导致宕机,报告到社区并在社区主线修复后,积极提交 PR 在 ANCK 4.19/5.10 两个版本完成修复。感谢 cuishiwei 同学的贡献。

02 项目具体进展

1、Anolis OS

erofs:fix potential NULL in error path(PR1022)

ext4:fix bug_on ext4_mb_use_inode_pa(PR1055),fix check to prevent false positive report of incorrect used inodes(PR1056),fix bug for rename with RENAME_WHITEOUT(PR1064),stable fixes(PR1091)

xfs:Speed up file fsyncs by reducing iolock cycling(PR1024),validate inode fork size against fork format(PR1067)

block:unhash blkdev part inode when the part is deleted(PR1081/PR1082)

fuse:support FUSE_HANDLE_KILLPRIV_V2(PR1084/PR1085),simply use flags instead for fuse passthrough(PR1088)

dax:fsdax COW bug fixes(PR1033),mark the iomap argument to dax_iomap_sector as const(PR1086)

io_uring:Improve IOCB_NOWAIT O_DIRECT reads(PR1034),fix referencing uninitialized io_uring_ctx(PR1040),fix CQ waiting timeout handling(PR1070),add IO_WQ_WORK_MM for uring_cmd(PR1077)

liburing:add IORING_SETUP_SQE128 and uring-cmd support(PR3),Add missing fields for uring_cmd in struct io_uring_sqe(PR4)

miscs:fix documentation for unprivileged_userns_clone sysctl(PR1073/PR1074),stable fixes (dm/md/nfs)(PR1089)

2、容器镜像加速

容器镜像 page cache sharing 特性在社区持续迭代,增加对 readahead 的支持。以 tensorflow 镜像为例,在创建同一镜像的多个实例时,该特性能节省 ~97% 的(容器镜像)内存占用;tensorflow 小版本之间能节省 ~20% 的(容器镜像)内存占用。


ANCK fscache daemonless 特性已实现 RFC 版本,支持 fscache daemon 的退出和重新拉起,持续迭代中。

3、用户态存储

ANCK 5.10 支持 ublk 代码已基本完成适配,40+ 补丁,待提交 PR review。


分布式存储项目的 POC 进展顺利,POC 基于 6.1 内核 ublk 适配,单个 IO 时延明显低于 tcmu 版本,IOPS 也有大幅度提升。


ebpf + io_uring 零拷贝特性原计划春节前发出 RFC,但因存在一些未解决的问题有些延迟;预计 2 月上旬发出 RFC 系列补丁到社区。

4、io_uring

优化 nowait O_DIRECT 读性能。


回合 uring-cmd 特性后结合 ublk 进行测试,过程中发现一些 io hang 等问题,确认为 uring-cmd 回合引入的问题,目前已经修复。


开始分析 asio 中 io_uring 的代码流程,目前已讨论出一些优化点,预计 2 月底会有一个阶段性的进展。

5、DSMS

在解决包缺失问题后,适配工作进展比较顺利,目前第一阶段的适配已基本完成,dsms-storage 已经可以在 Anolis OS 上正常跑起来;下一步将进行可视化相关开发工作。


当前选定 ceph 版本为 15.2.15。


相关工作计划:
​​​https://gitee.com/anolis/dsms/issues/I62HO3​

03 SIG 下一步计划

1、推动容器镜像 page cache 共享特性合入上游主线并回合到 ANCK。

2、erofs-utils 支持多线程解压,优化 ISO 镜像安装性能。

3、ANCK 5.10 支持 ublk 测试和分布式存储场景适配。

4、ebpf + io_uring 零拷贝方案社区 RFC 和讨论推进。

5、io_uring + async_simple 协程优化。

6、dsms 可视化管理平台开发。

附录:SIG 项目一览

  • io_uring
  • virtiofs
  • 容器镜像加速
  • 数据库优化
  • 用户态存储
  • DSMS

详情内容见高性能存储技术 SIG,欢迎各位感兴趣的开发者加入共建。

高性能存储技术 SIG 主页链接地址:

​https://openanolis.cn/sig/high-perf-storage​

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群(龙蜥交流群:13600003427或高性能存储SIG群:34264214)。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐