小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI

本文讨论了在高并发网络服务中使用io_uring的多线程架构,推荐采用“每个工作线程一个ring”的Thread-per-Ring模式,并结合SO_REUSEPORT进行连接分流,以提升性能和简化代码。文章分析了多线程的线程安全问题,介绍了四种多线程架构模式及其优缺点,强调了内存管理和CPU亲和性的重要性,并提供了多线程Echo Server的实现示例,展示了如何有效利用io_uring进行高效的网络编程。

io_uring 多线程编程模式:从线程安全到架构选型

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-03-14T00:00:00Z
io_uring 核心原理:Linux 异步 I/O 的新纪元

io_uring 是 Linux 5.1 引入的新异步 I/O 接口,旨在解决 epoll 的性能瓶颈。它通过双环形缓冲区减少系统调用和内存拷贝,支持网络和磁盘 I/O,提升高频 I/O 性能,简化编程模型,推动 Linux I/O 的未来发展。

io_uring 核心原理:Linux 异步 I/O 的新纪元

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

在 Linux 网络编程中,epoll 已使用近 20 年,而 io_uring 的出现改变了这一局面。两者在架构、性能和适用场景上存在显著差异:epoll 依赖频繁的系统调用,适合遗留系统和低活跃连接;io_uring 通过批处理和零拷贝提升性能,更适合高性能需求和新项目。

巅峰对决:io_uring vs epoll 性能与架构对比

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

liburing 提供了更友好的 API 来使用 io_uring,简化了内存管理和请求处理。使用 liburing 的流程包括初始化、获取请求、提交、等待完成和处理结果。示例代码展示了一个简单的 cat 命令,适合高并发场景。

【io_uring】liburing 基础 API 详解:从 Hello World 到文件 I/O

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

本文介绍了如何使用 io_uring 实现 TCP Echo Server。与传统同步模型不同,io_uring 通过状态机管理连接状态,并通过回调链式处理异步操作。代码示例展示了连接、数据读取和写入的处理,并强调了内存管理的重要性。

实战:基于 io_uring 的 TCP Echo Server

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

io_uring通过SQPOLL、固定文件和提供缓冲区等特性,显著提升I/O性能,减少系统调用开销,优化内核资源管理。

io_uring 高级特性:榨干性能极限

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

Libevent 2.2(Alpha)版本引入了实验性的 io_uring 后端,结合了 Reactor 和 Proactor 模式。虽然目前主要使用 io_uring 的 POLL_ADD 操作,尚未完全发挥其异步能力,但已能减少系统调用。该后端仍处于实验阶段,未来有望支持真正的 Proactor 模式,以提升性能。

Libevent 对 io_uring 的支持现状

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

Linux 5.1 引入的 io_uring 技术彻底改变了高性能 I/O 的方式。文章探讨了 io_uring 的核心概念、异步 I/O 的优势,以及与 AIO 和 epoll 的比较,并介绍了如何使用 liburing API 进行文件 I/O 和网络编程。

io_uring 系列文章

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

本文讨论了io_uring的缺点与局限性,指出在某些场景下epoll更为优越。io_uring在低延迟和内存占用方面表现不佳,尤其在高并发和海量连接时。此外,编程复杂度和调试难度较高,生态和安全性问题也需考虑。选择技术时应根据具体需求,避免盲目追新。

反思与打破神话:为何特定场景 epoll 比 io_uring 更高效

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z

在高性能系统编程中,Linux的io_uring模型通过将I/O操作从“询问就绪”转变为“提交后通知”,降低了内核与用户态的交互成本。Go语言在集成io_uring时面临调度、内存安全和接口兼容性等挑战,建议使用liburing与CGO进行初步集成以验证性能收益。资源管理和请求生命周期控制是主要难点,尤其在高并发场景下。

Go 如何集成 io_uring:从 CGO 封装到纯 Go 实现

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2025-11-30T00:00:00Z
Postgres 17与18的基准测试

PlanetScale Postgres 18引入了io_method配置选项,显著提升了磁盘I/O控制。基准测试显示,Postgres 18在不同I/O设置下的性能优于17版本,尤其在本地NVMe驱动上。io_uring在高并发场景下表现良好,但在低并发时效果不佳。整体而言,Postgres 18带来了显著的I/O改进和灵活性。

Postgres 17与18的基准测试

PlanetScale - Blog
PlanetScale - Blog · 2025-10-14T00:00:00Z
汉斯-尤尔根·肖宁:PostgreSQL 18:通过AIO提升I/O性能

PostgreSQL 18引入异步I/O(AIO),允许数据库在等待数据时进行计算,从而提升性能。AIO支持三种I/O模式,推荐使用io_uring。测试表明,AIO在大规模操作中显著降低延迟,尤其在顺序扫描时效果明显。

汉斯-尤尔根·肖宁:PostgreSQL 18:通过AIO提升I/O性能

Planet PostgreSQL
Planet PostgreSQL · 2025-09-19T05:00:05Z

研究人员发现了一种名为RingReaper的新型Linux恶意软件,能够规避传统EDR系统。它利用Linux内核的io_uring接口进行隐蔽操作,具备进程发现、网络枚举和权限提升的能力,并通过异步操作降低被监控的风险。这一恶意软件的出现对企业安全构成了重大挑战。

新型RingReaper恶意软件利用io_uring技术规避EDR检测攻击Linux服务器

FreeBuf网络安全行业门户
FreeBuf网络安全行业门户 · 2025-08-20T02:53:09Z

io_uring在Linux I/O中被视为“终极接口”,但Go语言对其集成持谨慎态度,主要因运行时模型的哲学冲突、安全问题及io_uring的快速演变。尽管社区曾寄予厚望,但实际应用中的挑战使Go未能采纳这一技术。

为何Go语言迟迟未能拥抱 io_uring?揭秘集成的三大核心困境

Tony Bai
Tony Bai · 2025-08-11T00:06:40Z
GSoC 2025:基于io_uring的GPU驱动I/O

GSoC 2025项目由Rodrigo Ceccato主导,旨在开发基于io_uring的GPU驱动I/O原型。该项目实现了GPU直接访问io_uring提交队列,提升了打印功能的效率,避免了通过共享邮箱的延迟。测试表明,GPU能够直接发起I/O请求,数据在设备间保持一致。未来计划将此功能整合进LLVM的gpu-libc,并扩展支持文件读写。

GSoC 2025:基于io_uring的GPU驱动I/O

The LLVM Project Blog
The LLVM Project Blog · 2025-08-04T00:00:00Z
分布式存储漫游指南 3: 单机磁盘 IO 的二三事 (异步 I/O 篇)

本文探讨了Linux平台的异步I/O,重点分析了io_uring和libaio的使用。异步I/O适用于高负载、低延迟的系统,但并不总能提升性能。文章还讨论了Go和Rust对磁盘I/O的处理,强调了异步I/O的复杂性和调试难度。

分布式存储漫游指南 3: 单机磁盘 IO 的二三事 (异步 I/O 篇)

Steins;Lab
Steins;Lab · 2025-07-12T09:59:15Z

网络安全研究人员发现新型Linux规避工具RingReaper,该工具利用io_uring内核特性绕过EDR系统,实施隐蔽攻击,减少可审计事件,完全隐身于现有安全监测中,提醒安全团队加强对io_uring的监控。

RingReaper:利用io_uring内核特性规避EDR检测的新型Linux工具

FreeBuf网络安全行业门户
FreeBuf网络安全行业门户 · 2025-07-07T04:29:46Z

测试结果显示,在不同模式下的吞吐量和资源使用情况。使用io-uring时,某些情况下的性能反而低于同步读取,需进一步分析原因。

Performance Testing Analysis

Rust.cc
Rust.cc · 2025-06-19T03:52:21Z
【Rust日报】2025-05-31 Oryx - 使用 eBPF 捕获和分析网络流量的 TUI

Oryx 是一个基于 Linux 的 TUI 工具,利用 eBPF 技术捕获和分析网络流量。Microsandbox 提供安全的执行环境以运行不可信代码。rou2exOS 是用 Rust 编写的 64 位类 DOS 操作系统。axboe-liburing 是 Rust 实现的 liburing 库,支持 io_uring。SimpleRsBLE 是跨平台的蓝牙库 Rust 绑定。Anvil 是 2D/3D CAD 建模库,rs-matrix 模拟数字雨效果。文章讨论了如何使用 Rust 后端构建单页应用程序。

【Rust日报】2025-05-31 Oryx - 使用 eBPF 捕获和分析网络流量的 TUI

Rust.cc
Rust.cc · 2025-05-31T12:34:40Z

本文探讨了异步IO的实现,特别是io_uring与IOCP的比较。作者指出程序员对异步的误解,强调多路复用与重叠IO的区别。通过分析reactor和proactor模型,认为应采用proactor模型以避免回调地狱和内存问题,并指出协程的使用也需底层库支持proactor,以实现高效的异步编程。

深入异步IO 第二篇: 正确使用 IOCP,正确设计 proactor

菜菜博士
菜菜博士 · 2024-12-14T00:00:00Z
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
友情链接: MOGE.AI 九胧科技 模力方舟 Gitee AI 菜鸟教程 Remio.AI DeekSeek连连 53AI 神龙海外代理IP IPIPGO全球代理IP 东波哥的博客 匡优考试在线考试系统 开源服务指南 蓝莺IM Solo 独立开发者社区 AI酷站导航 极客Fun 我爱水煮鱼 周报生成器 He3.app 简单简历 白鲸出海 T沙龙 职友集 TechParty 蟒周刊 Best AI Music Generator

小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码