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

简介: 高性能存储 3 月度 SIG 动态送达,请查收。

高性能存储技术 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@linux.alibaba.com

erofs-utils 支持从 tarball 生成索引直接挂载,最新补丁正在测试中:

https://lore.kernel.org/r/20230401072705.99060-1-hsiangkao@linux.alibaba.com

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,欢迎各位感兴趣的开发者加入共建。

高性能存储技术 SIG 主页:

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

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

16.png

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
30天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
93 8
|
1月前
|
定位技术 开发者
游戏开发者如何使用独享静态代理IP进行测试与优化
随着互联网技术的发展,使用代理IP的人数逐渐增加,特别是在业务需求中需要使用静态代理IP的情况越来越多。本文探讨了独享静态代理IP是否适用于游戏行业,分析了其优势如稳定性、不共享同一IP地址及地理位置选择等,同时也指出了需要注意的问题,包括可能的延迟、游戏兼容性和网络速度等。总体而言,选择合适的代理服务并正确配置,可以有效提升游戏体验。
30 2
|
2月前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
55 4
|
2月前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
2月前
|
人工智能 监控 测试技术
探索软件测试中的自动化框架选择与优化策略####
【10月更文挑战第21天】 本文深入剖析了软件测试领域面临的挑战,聚焦于自动化测试框架的选择与优化这一核心议题。不同于传统摘要的概述方式,本文将以一个虚拟案例“X项目”为线索,通过该项目从手动测试困境到自动化转型的成功历程,生动展现如何根据项目特性精准匹配自动化工具(如Selenium、Appium等),并结合CI/CD流程进行深度集成与持续优化,最终实现测试效率与质量的双重飞跃。读者将跟随“X项目”团队的视角,直观感受自动化框架选型的策略性思考及实践中的优化技巧,获得可借鉴的实战经验。 ####
42 0
|
3月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
163 5
|
3月前
|
缓存 监控 算法
软件测试中的性能瓶颈分析与优化策略
【10月更文挑战第6天】 性能测试是确保软件系统在高负载条件下稳定运行的重要手段。本文将深入探讨性能测试的常见瓶颈,包括硬件资源、网络延迟和代码效率等问题。通过具体案例分析,我们将展示如何识别并解决这些问题,从而提升软件的整体性能。最后,文章还将分享一些实用的性能优化技巧,帮助读者在日常开发和测试中更好地应对性能挑战。
137 3
|
4月前
|
监控 测试技术 持续交付
软件测试中的性能瓶颈分析与优化策略
性能瓶颈,如同潜伏于软件深处的隐形障碍,悄然阻碍着系统的流畅运行。本文旨在揭示这些瓶颈的形成机理,剖析其背后的复杂成因,并汇聚一系列针对性的优化策略,为软件开发者提供一套系统性的解决方案。
71 5
|
3月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
225 56
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
70 1

热门文章

最新文章

下一篇
开通oss服务