高性能存储 SIG 月度动态:多项内核特性移植到 6.6,erofs 完成共享特性 POC 原创
高性能存储 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
注:更多龙蜥 SIG 月度动态可点击这里查看。
—— 完 ——