RK3588 平台关联与使用场景详解
源码路径:rk3588/kernel-6.1/io_uring/(通用实现,无 Rockchip 补丁)
文档目录:linuxDoc/io_uring/
目录
一、平台结论
| 项 |
说明 |
| 源码差异 |
grep rockchip io_uring/ 无匹配 |
| 架构 |
ARM64,与 x86 io_uring 同源,性能特征受 内存带宽、存储控制器、网卡驱动 影响 |
| 默认配置 |
CONFIG_IO_URING=y(init/Kconfig) |
RK3588 上使用 io_uring = 标准 Linux 6.1 行为 + BSP 存储/网络栈质量。
二、硬件与内核配置
| 组件 |
与 io_uring 关系 |
| eMMC/UFS |
READV/WRITEV + 可选 IORING_SETUP_IOPOLL(设备需支持 non-blocking 完成路径) |
| NVMe |
URING_CMD、高队列深度受益明显 |
| 千兆/2.5G 网卡 |
net.c 中 SEND/RECV/ZC;驱动需支持 MSG_ZEROCOPY 等 |
| big.LITTLE |
IORING_SETUP_SQ_AFF、IORING_REGISTER_IOWQ_AFF 建议绑大核 |
| 内存 |
固定 buffer 注册消耗 locked_vm |
三、SeagullYpcEncode 相关场景
| 场景 |
建议用法 |
| 码流写盘 |
WRITE/WRITE_FIXED + 注册文件表;批量 IOSQE_IO_LINK 写元数据 |
| 高帧率网络拉流 |
RECV/RECVMSG + POLL_ADD multishot 减 syscall |
| 与 VPU/RGA 协同 |
io_uring 不直接操作媒体 IP;DMA buffer 若经 dmabuf,注意与 registered buffer 的 pin 范围 |
| 用户态框架 |
liburing、tokio-uring 等,均基于本目录 syscall |
不宜期望:io_uring 替代 内核驱动 ioctl 配置 VPU;媒体管线仍走 V4L2/MPP,存储/网络可用 io_uring 加速。
四、性能与调优
| 手段 |
说明 |
IORING_SETUP_SQPOLL |
省提交 syscall,占用 1 核 |
IORING_SETUP_SINGLE_ISSUER |
无锁提交优化前提 |
增大 entries |
减少背压;注意内存 |
REGISTER_FILES / REGISTER_BUFFERS2 |
热路径免 fdget/pin |
| 避免 memlock 过小 |
ulimit -l / systemd LimitMEMLOCK |
| IOPOLL |
仅低延迟块场景;CPU 占用高 |
五、观测与工具
1 2 3 4 5
| grep CONFIG_IO_URING /boot/config-$(uname -r) perf trace -e 'syscalls:sys_enter_io_uring_*'
./io_uring-bench strace -e io_uring_setup,io_uring_enter -c <app>
|
| 接口 |
信息 |
/proc/<pid>/fdinfo/<fd> |
环参数(fdinfo.c) |
IORING_REGISTER_PROBE |
当前内核支持的 op |
关联文档
正在加载留言…