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

01 SIG 整体进展

本次月报综合了 SIG 在 3、4 两个月的工作进展。

  • 完成存储领域 5.10 内核上的特性移植到 6.6 内核,包含 cgroup v1 writeback 限流、jbd2 增强、IO hang 检测、block throttle 增强、fuse 增强、tcmu 增强等。
  • 5.10 内核支持 dax reflink 特性,并针对 redis 场景做了相应的优化。
  • erofs page cache 共享特性完成 POC,使用两个镜像测试节省内存约 20%,实际效果取决于镜像中文件共享的情况,理论上限能达到 100%。

02 项目具体进展

1)CVE

CVE-2024-23307:修复 raid5_cache_count() 整型溢出问题。(PR2882)

CVE-2022-38096:修复使用 vmw_context_cotable() 可能导致无效解引用问题。(PR3040)

CVE-2023-6546:修复 gsm_cleanup_mux() 竞争场景可能导致的 UAF。(PR3047)

2)erofs

[Feature] fscache 按需加载模式支持 failover。(PR2791)

[Feature] 同步社区主线 6.8 相关补丁至 6.6 内核。(PR2880)

[Feature] 4.19 内核支持压缩,lzma/deflate 压缩算法,ztailpacking,multi-reference pclusters,压缩去重,fsdax 等。(PR2896/PR2903/PR2907/PR2920/PR2941)

[BugFix] 修复 THP vma alignment 问题。(PR2971)

[BugFix] 修复 pmem fsdax 特性问题。(PR2988)

page cache 共享方案完成 POC,使用两个镜像测试节省内存约 20%,实际效果取决于镜像中文件共享的情况,理论上限能达到 100%。目前正在整理 patchset,计划下个窗口发到社区。

3)xfs

[Feature] 支持 dax reflink 特性,并针对 redis 场景优化源文件的连续性,以及脏页回写的效率。(PR2794)

[Feature] dax reflink 去除对 reverse map btree 的依赖,优化 page fault 时延。(PR3087)

4)ext4

[Feature] 移植 ext4 & jbd2 增强至 6.6 内核。(PR2795)

[BugFix] 回合 stable 分支的补丁。(PR2042)

5)io_uring

[Feature] 移植 io_uring percpu sqthread polling 等特性至 6.6 内核。(PR2822)

io_uring percpu sqthread polling 特性在 rebase 过后,由于当前 sqthread 不再是内核线程而是用户进程创建,业务测试发现仍然存在问题,待进一步解决。

6)fuse

[BugFix] 修复 cache=none 模式 mmap 问题。(PR3007)

[Feature] 支持显示禁用 export。(PR3008)

[Feature] 支持 flush 及 resend 请求。(PR3009)

[BugFix] 修复 VM_MAYSHARE 和 direct_io_allow_mmap 问题。(PR3051)

7)block

[Feature] 移植 io hang 检测至 6.6 内核。(PR2806)

[BugFix] 修复 cgroup v1 在没有配置规则时 IO 统计问题。(PR2835)

[Feature] 移植 block throttle 增强补丁至 6.6 内核。(PR2823)

[BugFix] 修复 cgroup v1 打开 CONFIG_CGROUPS 但不打开 CONFIG_CGROUP_WRITEBACK 的编译错误。(PR2875)

8)tcmu

[Feature] 移植 bypass tcmu data area 和 zero copy 特性至 6.6 内核。(PR2876)

[Feature] 移植 tcm_loop 支持 sg_tablesize 可配置补丁至 6.6 内核。(PR2879)

9)其他

[Performance] 调整 address_space 结构体布局,优化 unixbench/execl 性能。(PR2888)

[Feature] bcache 更新 writeback 速率时支持 fragmentation。该问题为社区伙伴 360 同学反馈,在特定场景会发生回写 hang 住。(PR3022)

[BugFix] nfs 修复容器内写大文件触发 oom 问题。(PR3015)

[BugFix] fat 修复 nostale filehandles 存在未初始化域问题。(PR3089)

[BugFix] nbd 修复 nla_nest_start() 空指针问题。(PR3094)

[BugFix] nfs 修复 root_nfs_cat() 差 1 问题。(PR3093)

10)dsms

继续调研 cache tiering 机制,并针对性进行性能测试。

针对遇到的磁盘故障导致业务异常,计划在 dsms 中增加磁盘健康检测功能。

更多详细进展,请参见项目主页:https://gitee.com/anolis/dsms

相关链接:

高性能存储 SIG 主页:https://openanolis.cn/sig/high-perf-storage

—— 完 ——


龙蜥社区
40 声望12 粉丝

OpenAnolis龙蜥社区由国内外头部企业联合建立的操作系统开源社区。