腾讯工程师Kairui Song于2026年7月14日向Linux内核提交了一组RFC补丁,目标是全面重构多个交换设备的I/O分配机制。
该方案针对采用交换分层或分层交换处理的复杂服务器环境,有望显著提升系统整体性能与横向扩展能力。
补丁引入一种全新的I/O负载均衡策略,使多交换设备之间的任务分配更为公平。其核心调整在于彻底移除原有的可变优先级链表(plist)及全局互斥锁,并随之取消全局集群缓存。由此,I/O分配与设备轮换得以在更灵活、更轻量的机制下执行。
此前,每个交换设备各自维护一个每CPU集群缓存;后续一次内核变更将该缓存迁移至全局空间,由所有交换设备共享,以降低对plist的频繁更新操作。
在现有实现中,快速路径直接利用每CPU集群缓存完成分配,而设备轮换则继续依赖plist实现轮询。这种分离设计虽能运行,却长期存在结构性矛盾。
最突出的问题在于:位于设备选择逻辑之上的全局CPU集群缓存,与交换分层及分层分配等现代调度理念存在本质不兼容。
此外,plist依赖plist_requeue函数执行轮换操作,该过程必须持有swap_avail_lock全局锁,导致所有CPU核心在高并发场景下激烈争抢;而轮换本身被划归为慢速路径,为规避对plist的访问,系统不得不引入大量折中设计,进而制约了架构的简洁性与可演进性。
新方案将全部交换设备与新增的每CPU读取器优先级队列,统一纳入每CPU读写信号量(percpu rwsem)保护之下,大幅缓解锁竞争,显著增强并发处理能力。这一调整不仅解决了当前瓶颈,也为后续支持交换分层等更先进的资源调度模型奠定了坚实基础。

评论
更多评论