高性能存储 SIG 月度动态:优化 xfs dax reflink 时延,独立选型并维护 mdadm 和 ledmon

本次高性能存储月度动态综合了 SIG 在 5、6 两个月的工作进展,包含多项特性支持,性能优化,以及 Bugfix 等。

01 SIG 整体进展

  • 引入 xfs deferred inode inactivation,进一步优化 xfs dax reflink 过程中的抖动时延。

  • Intel 将在 SIG 中独立选型 mdadm & ledmon 并维护。

  • fuse 支持 resend pending 请求和读写分离优化,virtio-fs 支持多队列。

  • erofs 支持 zstd 压缩算法,并重构 utils 支持 lib 库集成以及增量构建。

  • dsms 解决断电场景数据丢失问题,并通过优化 ceph 内存分配解决碎片化场景 IO 延迟升高问题。

02 项目具体进展

2.1 Cloud Kernel

2.1.1 erofs

[Bugfix] 修复 erofs_statfs() 中 UUID 问题,并优化 DEFLATE stream 分配逻辑。(PR3281/PR3285/PR3287)

[Feature] 支持 zstd 压缩算法,已合入社区 6.10 主线。

[Feature] 重构 erofs utils,可提供 lib 库供其他项目集成,如 DADI。

[Feature] 支持 centos oot。

[Feature] erofs utils 支持增量构建。

2.1.2 xfs

[Feature] quota functions 重构,该系列补丁为 deferred inode inactivation 的准备工作。(PR3154)

[Feature] 空间不足时 reclaim 策略优化,该系列补丁同样为 deferred inode inactivation 的准备工作。(PR3156)

[Feature] posteof 和 cowblocks 重构,该系列补丁同样为 deferred inode inactivation 的准备工作。(PR3158)

[Feature] incore inode walk 重构,该系列补丁同样为 deferred inode inactivation 的准备工作。(PR3159)

[Feature] deferred inode inactivation。(PR3160)

[Bugfix] 修复 CONFIG_FS_DAX 关闭时编译错误。(PR3164)

[Improment] 增加 XFS_IOC_SET_REFLINK_FLAGS 的检查条件,并导出 xfs_wait_reflink_secondary()。(PR3205)

[Performance] 优化 xfs_log_force() 可能存在的数十 ms 阻塞导致的 reflink 抖动。(PR3273i/PR3306)

2.1.3 ext4

[Bugfix] 回合社区 stable 分支补丁。(PR3141)

2.1.4 io_uring

[Bugfix] 修复 io_uring percpu sqthread 特性,限制仅在同一个进程下多线程之间共享。(PR3127/PR3138)

2.1.5 fuse/virtio-fs

[Bugfix] 修复 statx 系统调用 ENOSYS 错误。(PR3118)

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

[Feature] 支持 resend pending 请求。(PR3264/PR3271)

[Feature] 支持多队列。(PR3277/PR3278)

[Performance] bg_queue 读写分离优化。(PR3352)

2.1.6 misc

[Bugfix] overlayfs:修复 ovl_parse_param() 内存泄露。(PR3115)

[Bugfix] hugetlbfs:修复 hugetlbs_fill_super() 空指针解引用。(PR3126)

[Improvement] block:rq_hang 使用 %px 打印请求。(PR3129/PR3135)

[Improvement] cgroup writeback:限制仅在 cgwb_v1 场景使能 memcg_blkcg_tree 相关操作。(PR3142/PR3144/PR3147)

[Performance] kernfs 全局锁竞争。(PR3132)

[Bugfix] ceph:修复 encode_cap_msg() use-after-free 问题。(PR3152

[Bugfix] md:修复 rdev->serial 内存泄露。(PR3318)

[Bugfix] ring_buffer:修复 ring_buffer_free_read_page() 中潜在的空指针解引用。(PR3308)

2.2 dsms

[Bugfix] 解决断电场景数据丢失问题。

[Improvement] 优化 ceph 内存分配器,解决内存碎片化后导致 IO 延迟升高的问题。

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

2.3 mdadm & ledmon

Intel VROC 为基于 NVMe 的企业级 RAID 解决方案,同时也支持对 SATA 类 RAID 的监控。该方案依赖 mdadm 和 ledmon 两个软件包,因此决策在龙蜥 OS 中独立选型并维护。

目前基线版本经确定,并在 SIG 中创建仓库:
mdadm: Manager of Linux Software RAID implemented through Multiple Devices driver.

ledmon: Enclosure LED Utilities

后续由 Intel 的两位 Maintainer 负责将补丁合入 dev 分支,经过测试后合并到 main 分支,作为龙蜥 OS 的发布包来源。

03 开源会议

SIG 成员 gaoxiang 分享了 Container Plumber Days 和 OSSNA 的参会纪要:

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

相关链接:

高性能存储SIG主页:

High Performance Storage SIG - OpenAnolis龙蜥操作系统开源社区

注:更多龙蜥 SIG 月度动态可点击这里查看。

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

更多龙蜥SIG主页点击查看:SIG - OpenAnolis龙蜥操作系统开源社区

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能,我们在游戏中经常会见到,例如前方漂浮于空中的若干碎石,当玩家走进时碎石自动吸附合并变成一条路,或者一些装饰性的物件做随机运动等等,在引擎没有集成运动图形时,这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点: 动态类型: JavaScript是一种动态类型语言,变量可以存储任意类型的数据,无需事先声明变量的类型。事件驱动:JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

group by 与 distinct去重性能

GROUP BY和DISTINCT在数据库查询中都可以用于去重,但它们的性能差异取决于多个因素,包括数据集的大小、数据库的结构和索引、以及查询的具体内容。 处理方式: DISTINCT:它会扫描整个数据集,然后删除重复的记录&#xf…

机体坐标系和导航坐标系

目录 机体坐标系(Body Frame)例子:无人机的机体坐标系 导航坐标系(Navigation Frame)例子:地球固定的导航坐标系 具体例子说明机体坐标系描述导航坐标系描述 总结 机体坐标系(Body Frame&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中,风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史,但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先,大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

Vue 接口用FormData() 提交数据

例子: let data { id: 12, name: 测试, list: [{ id: 22, name: "za", age: 12 }] };// 创建 FormData 实例 要使用 FormData 将数据提交给接口,首先需要了解 FormData 是如何工作的。FormData 是一种用于异步上传数据的表单数据结构&#xf…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展:for循环的初始化,判断,…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站: Font Awesome,一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意,要用框架启动,但用html启动的话是用不了的(图标启动不了) 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行,为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1)利益相关方: 应识别利益相关…

YOLO--置信度(超详细解读)

YOLO(You Only Look Once)算法中的置信度(Confidence)是一个关键概念,用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围:置信度是一个介于0和…

ES6 对象的扩展(十五)

1. 属性的简洁表示(Property Shorthand) 特性:在对象字面量中,如果属性名和变量名相同,可以省略属性名,直接使用变量值。 用法:简化对象字面量的书写。 const x 1, y 2; const obj { x, y …

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图: 解决:

网络滤波器、EMI滤波器与EMC滤波器在电子元器件中的分类关系

在电子工程领域,滤波器作为关键的电子元器件,广泛应用于信号处理、电磁兼容性和电磁干扰抑制等方面。本文将详细介绍网络滤波器、EMI滤波器和EMC滤波器的基本概念、工作原理及其在电子元器件中的分类关系。 一、网络滤波器 网络滤波器是一种通过处理信号…

Laravel与现代前端:Vue.js与React的无缝集成

Laravel与现代前端:Vue.js与React的无缝集成 在现代Web开发中,Laravel作为后端框架的佼佼者,与前端技术如Vue.js和React的结合,能够创造出功能强大且用户友好的应用。本文将详细介绍如何在Laravel项目中集成Vue.js和React&#x…

脸书登录指南:如何在同一台设备登录多个Facebook账号?

海外社媒营销人员和跨境卖家现在越来越依赖社交媒体平台来拓展业务和接触潜在客户,尤其是Facebook。然而,在进行脸书登录时,你可能会问:如何在同一台设备上登录多个Facebook账号,而不违反Facebook的使用条款&#xff1…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

vivado 2019.2/modelsim SE-64 2019.2联合仿真

参考链接 需要修改的地方: 编译时几个VHDL的库会报错,将language改为verilogfamily只选择当前板子(artix-7),速度会更快,错误率更低compile library path最好选择vivado安装路径下的位置,很久之…

怎么创一个新的vue3项目

创建一个新的Vue 3项目可以通过多种方式,以下是基于Vue CLI(命令行界面)和Vue官方新的脚手架工具create-vue的详细步骤。 使用Vue CLI创建Vue 3项目 安装Vue CLI: 确保你已经安装了Node.js(建议使用LTS版本&#xff…

Python 基础——元组

1.元组:元组元素不能修改 tuple1 (1, 2, 3, 4, 5, 6) tuple1[2] 3 #该代码会显示运行错误 2.元组的一些操作 #1. tuple1 (1, 2, 3, 4, 5, 6) tuple2 tuple1[:]#将tuple1复制到tuple2#2. tuple1 (1, 2, 3, 4, 5, 6) tuple1[:4] #输出结果为(1&am…