写点什么

龙蜥白皮书精选:利用 io_uring 提升数据库系统性能

  • 2023-05-23
    北京
  • 本文字数:1228 字

    阅读完需:约 4 分钟

龙蜥白皮书精选:利用 io_uring 提升数据库系统性能

文/高性能存储 SIG

01 背景介绍

传统的 IO 软件栈已经无法完全释放出高性能存储设备的性能,高性能 IO 栈是当前存储领域重点研究的课题之一,代表性的如用户态方案 SPDK,以及标准的内核态方案 io_uring。

02 关键技术

Linux 社区从零开始设计一种全新的异步 IO 框架 io_uring。io_uring 为了避免在提交和完成事件中的内存拷贝,设计了一对共享的 ring buffer 用于应用程序和内核之间的通信。该设计带来的好处有:


  • 提交、完成请求时无需应用和内核之间的内存拷贝。

  • 使用 SQPOLL 高级特性时,应用程序无需系统调用。

  • 无锁操作,用 Memory Ordering 实现同步等。


龙蜥社区自 2020 年上半年开始参与 io_uring 社区开发,贡献了多个特性和优化,并在图数据库场景探索容器化部署和针对性优化。


技术优势:应用程序通过统一的标准系统调用来使用 io_uring。相比传统的 Linux Native AIO,io_uring 消除了仅支持 Direct IO 的限制以及额外的内存拷贝开销;相比用户态框架 SPDK,io_uring 可复用 Linux 内核的标准驱动,无需额外的用户态驱动开发,应用场景更通用,编程接口更友好。


该技术特点包括:


  • 简单易用,方便应用集成。

  • 可扩展,不仅仅为存储 IO 使用,同样可以用于网络 IO。

  • 特性丰富,满足所有应用,如支持 Buffer IO。

  • 高效,尤其是针对大部分 512 字节或 4K IO 场景。

  • 可伸缩,满足峰值场景的性能需要等。


应用场景:io_uring 可适用于绝大多数对异步 IO 有诉求的业务和应用。目前,io_uring 已在多个主流开源应用中集成,如 RocksDB、Netty、QEMU、SPDK、PostgreSQL、MariaDB 等。

03 图数据库引擎 iGraph 优化实践

图计算服务 Graph Compute 是龙蜥社区理事长单位阿里云研发的高性能分布式图计算产品,支持复杂图关系数据的存储、查询和计算,高效对接图算法与模型,在搜索推荐广告、实时风控、知识图谱、社交网络等场景有着广泛的应用。其内核引擎 iGraph 在基于磁盘的查询访问场景下引入了 io_uring,支持高 IOPS 下稳定运行。



实践效果:图数据库引擎 iGraph 经过 io_uring 适配优化后,线上运行环境在 CPU 开销不高于原始使用 Linux Native AIO 版本的前提下,业务端到端时延优化达 20%。


更多龙蜥白皮书精选内容:


【1】面向 DPU 场景的软硬协同协议栈


【2】敏捷开发场景下的调度器热升级 SDK


【3】跨云-边-端的只读文件系统 EROFS


【4】龙蜥全面支持 Intel 第四代可扩展处理器 SPR 平台


【5】面向异构计算的加速器 SDK


【6】基于 SM4 算法的文件加密(fscrypt)实践


【7】CentOS 迁移场景的平滑迁移方案


相关链接:


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


更多龙蜥技术特性解析可移步《龙蜥特性百科》:https://anolis.gitee.io/anolis_features/


2022 龙蜥社区全景白皮书(或公众号【OpenAnolis 龙蜥】回复关键字“白皮书”获取)https://openanolis.cn/openanoliswhitepaper


—— 完 ——


为给大家提供更好的内容和服务,龙蜥社区诚挚地邀请大家参与问卷调研,请扫描下方二维码或点此链接填写,我们将筛选出优质反馈,送出龙蜥周边!



发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2021-07-20 加入

OpenAnolis龙蜥社区 由国内外头部企业联合建立的操作系统开源社区。加入我们,一起打造面向未来的开源操作系统。 社区官网:openanolis.cn|微信公众号:OpenAnolis龙蜥

评论

发布
暂无评论
龙蜥白皮书精选:利用 io_uring 提升数据库系统性能_开源_OpenAnolis小助手_InfoQ写作社区