io_uring

io_uring 深度剖析:Linux 异步 I/O 革命与高并发架构

io_uring 是 Linux 5.1 引入的异步 I/O 革新框架,通过共享环形缓冲区(SQ/CQ)实现零拷贝零系统调用批量 I/O。本文深入剖析其核心架构(提交队列/完成队列/io_uring_params)、6 种工作模式(中断驱动/SQPOLL/IOPOLL/注册缓冲区等)、核心操作原语(READ/WRITE/SEND/ACCEPT/CONNECT/TIMEOUT等)、高级特性(任务链接/缓冲区选择/多发射/FUSE 加速),并通过 liburing 代码示例展示 SQPOLL 和 Registered Buffers 的实战用法。文章还分析了 io_uring vs libaio 的性能对比数据,在 NVMe 上吞吐量提升 15-20%、P99 延迟降低约 50%,并探讨了 io_uring 在网络安全、数据库、SPDK 和云原生场景的应用前景。此外涵盖了 sqpoll 安全漏洞、seccomp 策略等安全考量,以及 io_uring 与 epoll 的未来互补关系。

Linux 系统调用深度实战:从 int 0x80 到 VDSO 与 io_uring 的 Syscall Entry/Exit 内核实现与 eBPF 追踪

从硬件指令层拆解 Linux 系统调用的完整生命周期:syscall 历史演进(int 0x80→sysenter→syscall)、entry_SYSCALL_64 汇编级的 swapgs/per-cpu/pt_regs 构建安全分析、VDSO 如何让 gettimeofday 绕过 syscall、vDSY vs ASLR 兼容、syscall 分发表、Spectre/Meltdown 对 syscall 延迟的量化影响、sysret 与 iret 返回路径选择、io_uring 用共享环形队列绕过 syscall 的架构、eBPF tracepoint/kprobe/fentry 三种观测方式对比、strace 的 ptrace 代价与替代方案、生产环境减少 syscall 频率的 7 种工程策略、跨架构对比(x86_64/ARM64/RISC-V)。

Linux 块设备层 blk-mq 架构深度实战:从 BIO 请求到 NVMe 命令队列

深度解析Linux块设备层blk-mq架构:从VFS系统调用、bio请求封装、blk-mq三级队列映射(软件上下文→硬件上下文→NVMe提交队列)、到NVMe驱动命令提交与中断处理全链路。涵盖plug机制、I/O调度器对比(none/mq-deadline/kyber)、io_uring固定缓冲直通块I/O、SPDK内核旁路方案,以及fio实测性能分析。