尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
对io_uring的理解(1)
一、先搞懂背景传统 Linux 文件 IO 有多慢Linux 传统读写文件/磁盘有两种模式都有巨大开销阻塞IOread/write 调用 read() 时线程直接卡住内核和用户态来回切换系统调用频繁切换CPU成本极高。异步IO aiolibaio 早期Linux异步IO限制多只能支持裸磁盘不支持普通文件、管道、socketAPI难用坑很多。核心痛点每次IO操作都要用户态 ↔ 内核态来回切换切换很贵。二、io_uring 核心思路减少切换批量干活io_uring 是 Linux 5.1 正式引入的新一代高性能异步IO框架核心设计一句话用户程序和内核共用两块环形队列内存共享不用频繁拷贝数据、不用频繁系统调用一次提交一批IO请求一次拿回一批结果。两块环形缓冲区ring 环形队列名字由来SQ 提交队列Submission Queue 用户程序把要做的IO任务读文件、写文件、读写网络、缓存刷新等塞进去。CQ 完成队列Completion Queue 内核处理完IO后把完成结果塞回来用户程序从这里拿返回状态。两块队列是内核、用户态共享同一片内存不需要每次操作都拷贝数据。三、完整工作流程超通俗程序初始化创建 io_uring内核分配共享内存生成 SQ/CQ 环形队列用户程序批量往 SQ 填入一堆IO任务读10个文件、发10条网络数据只调用一次系统调用通知内核“队列里有活快去处理”内核在后台并发处理所有IO请求完成后把结果写入CQ用户程序一次系统调用从CQ取出所有IO完成结果循环复用队列不用反复创建销毁任务。对比传统 read/write 每一次读写 一次系统调用1000次IO就要1000次切换 io_uring1000次IO只需要2次系统调用提交一次、取结果一次性能差距巨大。四、io_uring 能干哪些事覆盖极广碾压老aio不只是磁盘文件读写几乎所有IO操作都支持普通文件读写、随机读写、大文件批量读写socket 网络收发TCP/UDP管道、字符设备文件操作open、stat、unlink、fsync 刷新缓存轮询模式、零拷贝IO五、关键优势系统调用极少CPU开销暴跌 批量提交、批量回收大量减少用户/内核切换高并发场景CPU占用大幅下降全能无老式aio的限制 libaio 只能裸盘io_uring 普通文件、网络、目录操作全都支持纯异步线程不阻塞 发起IO时线程不会卡住可以同时提交上万IO并发拉满内存拷贝少 SQ/CQ 共享内存不需要内核、用户态来回复制任务描述支持高级特性轮询IOpolling完全不中断CPU极致低延迟固定缓冲区减少页表映射开销链式IO、批量文件打开、取消IO任务六、适用场景只要追求高IO并发、低延迟的软件现在基本都在用 io_uring数据库RocksDB、MySQL、PostgreSQL 新版本开启 io_uring 提升吞吐高性能存储、对象存储服务高性能网络代理、游戏服务器高性能日志、消息队列Rust/Go/C 高性能IO框架底层如 tokio、uring-rs。七、举个生活化类比把内核当成仓库管理员你的程序是老板传统read/write老板每要一件货单独跑一趟仓库喊管理员拿来回跑累死libaio仓库只放硬盘货物快递、文件不给拿限制大io_uring老板拿一张共享清单环形队列一次性写下100件要拿/存放的货只喊管理员一次管理员全部处理完把结果写回同一张清单老板再看一次清单就行不用来回跑。八、总结io_uring Linux 官方新一代、全能、高性能异步IO接口通过共享环形队列大幅减少内核切换开销解决了老式同步IO慢、旧异步aio功能残缺的问题是现在高并发IO程序的底层标配。0voice · GitHub
RELATED

相关推荐

UE4 4.19内存壁垒突破:基于反射实现Live View与动态数据访问

UE4 4.19内存壁垒突破:基于反射实现Live View与动态数据访问

1. 项目概述:UE4 4.19内存壁垒与Live View的碰撞 如果你在UE4 4.19版本里折腾过一些需要实时与外部设备通信的功能,比如用Kinect驱动角色、用Arduino控制场景灯光,或者自己写了个工具想实时窥探游戏运行时的内存状态,那你大概率遇…

📅 2026/8/22 20:15:46
音乐艺考培训机构怎么选?2025年排名与避坑指南

音乐艺考培训机构怎么选?2025年排名与避坑指南

音乐艺考培训机构怎么选?2025年排名与避坑指南 每年艺考季,总有一大批怀揣音乐梦想的考生和家长在纠结同一个问题:音乐艺考培训哪家好? 面对市面上琳琅满目的机构,宣传话术一个比一个漂亮,但真正能帮孩子冲…

📅 2026/8/22 20:15:47
RAG上线白踩一周坑:10项零代码检查清单,提前查零bug少踩90%生产问题

RAG上线白踩一周坑:10项零代码检查清单,提前查零bug少踩90%生产问题

作者:张钧泽(曌选科技GEO优化主理人)之前RAG上线,漏查了max_tokens的小配置,上线当天回答全是半截的,用户一提问就答一半,紧急回滚改到凌晨两点,前前后后踩了一周的坑,不…

📅 2026/8/22 20:15:47
MORE NEWS

更多资讯

📰

Python学生管理系统课程设计:从CRUD到exe打包全解析

简介:面向Python课程设计任务的学生管理系统完整方案,适合初学Python编程或需要完成信息管理类课程设计的本科、专科学生使用。资源压缩包约5.96MB,主要包含Python源码、可直接运行的exe程序以及详细使用说明文档三类文件,无需手动…

📰

Debian 12安装Docker实战:部署MySQL、Redis与GitLab全流程

做后端和运维的人,几乎都绕不过 Debian 和 Docker 这一对组合。Debian 适合当服务器底座,Docker 适合把运行环境标准化,两者配在一起,基本是生产环境的默认起手式。这篇东西是我从零开始在一台 Debian 12 机器上安装 Docker、配置…

📰

节点电压灵敏度系数解析计算:从雅可比矩阵到MATLAB实现

简介:面向电力系统、电子信息和计算机等专业的学生及研究人员,此MATLAB代码包聚焦节点电压灵敏度系数的解析计算,可服务于课程设计、期末大作业与毕业设计中的系统稳定性评估和参数影响分析。包内共11个文件,包含5个.m脚本、3个.m…

📰

嵌入式竞赛作品zip包全解析:拆包、交叉编译与代码复用指南

简介:2022芯原杯全国嵌入式软件开发决赛作品,是一份针对嵌入式软硬件协同设计的竞赛级项目合集。资源面向嵌入式系统开发者、高校电子类学生及准备参加技能竞赛的团队,透过完整工程源码与设计文档,可了解参赛者如何将传感器驱动、…

📰

演讲媒体资料库从0到1:内容资产管理实战复盘

你有没有经历过这种场面:一场演讲活动办得热火朝天,嘉宾在台上金句频出,台下的掌声和笑声一浪接一浪,摄影师扛着机器满场跑,恨不得把每个高光时刻都装进镜头里。结果呢?活动一结束,几百个G的素材…

📰

Kafka消费者架构实践:数据湖与AI管道中的调优与踩坑

这两年聊起大数据架构,Kafka几乎成了所有实时链路的默认起点。数据从业务系统进到Kafka,再由消费者分发到数据湖、数仓、检索集群或者AI推理服务。很多团队最初的Kafka消费者只是“从topic里拉数据打日志”,但随着数据湖和AI管道逐步落地&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬