对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

相关新闻

最新新闻

第22届智能汽车竞赛室外越野组赛题建议

第22届智能汽车竞赛室外越野组赛题建议

01 【室外越野组建议】卓晴老师,您好。 对于下一届越野的赛题 我们有以下建议:建议第二十二届全国大学生智能汽车竞赛极速越野组采用借鉴F1赛制的全自主多车竞速形式。 车辆允许自主设计制作, 只统一限定动力电机和动力电池型号&#xff…

2026/8/31 5:04:38
MVDR波束形成算法原理详解与MATLAB仿真实现

MVDR波束形成算法原理详解与MATLAB仿真实现

简介:本资源是一套面向阵列信号处理初学者与进阶学习者的MVDR波束形成算法MATLAB仿真代码包,聚焦抗干扰场景下的权值设计、方向图合成与多维性能评估。资源共9个文件,含8个功能清晰的.m脚本(如LF_Modulation信号生成、MVDR权值求解…

2026/8/31 5:04:38
基于YOLOv8的手术器械智能识别与清点系统实战

基于YOLOv8的手术器械智能识别与清点系统实战

简介:本资源是一套基于YOLOv8实现的医院手术室器械清点核对系统,面向计算机、人工智能、自动化等专业的本科生及研究生,解决手术器械人工清点易遗漏、效率低、缺乏可视化追溯等临床痛点,适用于毕业设计、课程设计、大作业及项目原…

2026/8/31 5:04:38
主力资金流向数据解析:算法原理、实战应用与市场观察

主力资金流向数据解析:算法原理、实战应用与市场观察

上周五收盘后,我习惯性地打开几个数据工具,想复盘一下当天的市场脉络。和往常一样,首页推送着各种“主力资金净流入XX亿”、“XX板块领涨”的标题。但当我点开几个不同平台的数据时,发现了一个挺有意思的现象:同样是“…

2026/8/31 5:04:38
Excel+Access+VBA:10分钟搭一个能增删改查的人事信息管理系统

Excel+Access+VBA:10分钟搭一个能增删改查的人事信息管理系统

Excel 处理人事数据,很多人用过;Access 存人事数据,很多人听说过;把两者用 VBA 连起来做一个小系统,才是这个需求里真正有价值的工程点。标题里的“10 分钟”,指的是 Access 表已经建好、Excel 表单已经画好…

2026/8/31 5:04:38
GitHub开源效率启动器:Electron实现首字母秒搜与剪贴板历史

GitHub开源效率启动器:Electron实现首字母秒搜与剪贴板历史

平时在电脑上最频繁的操作是什么?很多人都会脱口而出:切窗口、找应用。从开始菜单翻页,到桌面找图标,再到在任务栏里辨认一个个相似窗口,时间就这么一点点浪费掉了。直到我接触到 GitHub 上各种开源效率启动器&#xf…

2026/8/31 4:59:37