高性能存储SIG月度动态:ANCK 5.10正式支持ublk、erofs容器镜像按需读时延优化60%

news/2024/7/10 22:22:32 标签: linux, 运维, 开源

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

01  本月 SIG 整体进展

本月合入 Anolis 主线 PR 18 个,涉及多个重要组件的更新(特性支持、性能优化、以及 bugfix 等)。

ANCK 5.10 正式支持高性能用户态块设备 ublk,将随下一个 ANCK 版本 5.10-14 发布。

tcmu zero copy 和 bypass data area 优化特性合入 ANCK 5.10,相比原生 tcmu 性能提升 1 倍以上。

erofs over fscache 优化 on-demand buffered 读,按需读取数据时延优化 ~60%。

dsms-storage 开始适配 Anolis 23,管理平台相关开发工作按计划进行中。

浪潮信息同学贡献多个 cve 修复和 bugfix。

02  项目具体进展

1、Anolis OS

CVE:CVE-2022-4696(PR1097),CVE-2022-1184(PR1140),CVE-2022-4139(PR1141),CVE-2022-47946 (PR1173) erofs:optimize on-demand IO path with buffered IO(PR1252)

ext4:fix fstests generic/626(PR1066),various bugfixes(PR1280/PR1292)

xfs:fix fstests xfs/546(PR1069/PR1144),stable fixes(PR1095)

reiserfs:remove useless new_opts in reiserfs_remount(PR1256/PR1302)

io_uring:fix uring-cmd task_work(PR1129)

ublk: [feature] support high performance ublk(PR1133),fix queue_size overflow(PR1230)

tcmu:[feature] improve tcmu performance(PR1255)

miscs: stable fixes for dm/md/nfs(PR1094)

2、容器镜像加速

ANCK 5.10 erofs fscache 进一步优化 on-demand buffered 读,在触发按需读数据时,用户态 daemon 通过 buffered 写方式将用户申请访问的数据写入缓存文件,再使用 buffered 读时命中缓存,时延优化 ~60%。

erofs 支持非 4k 页特性已合入上游主线,可支持非 4k 页架构(如 aarch64)的运行。

erofs-utils 支持 subpage(即小于 PAGE_SIZE 的块大小)特性,支持同一镜像多压缩算法;另外,多线程解压优化效果测试中。

3、用户态存储

ANCK 5.10 正式支持高性能用户态块设备 ublk,将随 5.10-14 版本发布。接下来将基于该版本刷新下分布式存储项目的 POC 数据。配套的用户态库改造中,目前已经向上游社区提出改造需求。

ebpf + io_uring 零拷贝方案已经发送到社区,目前已经迭代到 v2 版本,需要继续根据社区建议修改迭代。我们的想法是做成一个通用的解决方案,在通用块层支持 ebpf 做数据过滤、重定向等,当前从零拷贝这个共性需求切入。

tcmu zero copy 和 bypass data area 优化特性合入 ANCK 5.10,相比原生 tcmu 性能有显著提升,大块 IO 如 512k 读最大提升 1 倍,写提升 3 倍。

4、io_uring

目前正在对 c++ 库 asio 的 io_uring 代码进行优化,asio 当前默认使用 io_uring 的 fast poll 特性去进行网络请求处理,初步测试性能相比 epoll 还要差 ~10%。

我们正在将其进行 io_uring 的 multi-shot 特性改造,目前适配工作还在进行中。

io_uring multi-shot 的资料可参考:
https://github.com/axboe/liburing/wiki/io_uring-and-networking-in-2023

5、DSMS

dsms-storage 正在 Anolis 23 上进行适配,由于 Anolis 23 目前缺失一些相关依赖包,适配工作暂停。目前已经向社区提交了 issue,等待社区处理。dsms-engine 的开发工作按期进行中:https://gitee.com/anolis/dsms/issues/I62HO3

03  SIG 下一步计划

mkfs.erofs 支持用户设定的 block size(目前默认 4k),erofs 支持设置单独的目录 block size。

完成基于 5.10-014 内核版本的分布式存储项目 POC 数据更新。

推动社区关于 ebpf + io_uring 零拷贝方案的 review 并继续迭代。

完成 asio io_uring multi-shot 适配改造。

继续推进 dsms 适配 Anolis23 相关工作。

附录:SIG 项目一览

  • io_uring

  • virtiofs

  • 容器镜像加速

  • 数据库优化

  • 用户态存储

  • DSMS 

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

高性能存储技术 SIG 主页:

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

—— 完 ——


http://www.niftyadmin.cn/n/117293.html

相关文章

精选博客系列|公用事业中的VMware:在边缘重新定义价值

VMware 已经成为公用事业行业的核心。您可以在那里找到例如 VMware vSphere(包括基础 Hypervisor ESXi 和 VMware vCenter 建立的整体控制平面)的核心产品。来自软件定义的基础架构带来的诸多好处使 IT 团队将其先前基于硬件的系统转变为 VMware Cloud F…

数据结构和算法学习

文章目录精通一个领域切题四件套算法算法的五个条件流程图数据结构数据与信息数据信息数据结构和算法数据结构算法时间复杂度空间复杂度数组 Array优点缺点数组和链表的区别时间复杂度链表 Linked List优点缺点时间复杂度单向链表双向链表循环链表双向循环链表堆栈 Stack队列 Q…

【java】将LAC改造成Elasticsearch分词插件

目录 为什么要将LAC改造成ES插件? 怎么将LAC改造成ES插件? 确认LAC java接口能work 搭建ES插件开发调试环境 编写插件 生成插件 安装、运行插件 linux版本的动态链接库生成 总结 参考文档 为什么要将LAC改造成ES插件? ES是著名的非…

QML属性

基本属性: 如:宽高 颜色 位置 等; 可在帮助文档中搜 QML Basic Types Rectangle{id:rect1;//标识x:500 //x坐标位置y:500 //y坐标位置width: 100 //宽height: 100//高} 属性更改: 需要创建一个信号处理器来处理信号: …

[jetson]jetpack5.0.2的ubuntu20.04更换为清华源

测试环境: Software part of jetson-stats 4.1.5 - (c) 2023, Raffaello Bonghi Model: NVIDIA Jetson Xavier NX Developer Kit - Jetpack 5.0.2 GA [L4T 35.1.0] NV Power Mode: MODE_20W_6CORE - Type: 8 jtop: - Version: 4.1.5 - Service: Active Libraries…

ViT(Vision Transformer) TNT(Transformer in Transformer)

ViT(Vision Transformer) ViT的结构 ViT将输入图片分为多个patch(16x16),再将每个patch投影为固定长度的向量送入Transformer,后续encoder的操作和原始Transformer中完全相同。但是因为对图片分类,因此在输入序列中加…

学习笔记--目标检测基础知识大全

来源:投稿 作者:LSC 编辑:学姐 目录 1.特点 2.数据集 2.1 VOCS数据集 2.2 COCO数据集 3.评价指标 3.1 GroundTruth 3.2 IOU(交并比,Intersection over Union) 3.3 基本指标 3.4 AP与mAp 3.5 案例演示 4. 脑图&#xff…

学习ROS时针对gazebo相关的问题(重装与卸载是永远的神)

ResourceNotFound:gazebo_ros 错误解决 参考:https://blog.csdn.net/weixin_42591529/article/details/123869969 当将机器人加载到gazebo时,运行launch文件出现如下错误 这是由于缺少gazebo包所导致的。 解决办法: