腾讯工程师提交Linux内核RFC补丁:重构交换设备I/O分配机制


2026年7月14日,腾讯腾讯工程师Kairui Song向Linux内核社区提交了一组RFC(Request for Comments)补丁,工程构交旨在对多交换设备的师提I/O分配机制进行彻底重构。
该方案专为应对采用交换分层(Switching Hierarchy)或分层交换处理的内核复杂服务器环境而设计,预期将显著提升系统的补备整体性能表现及横向扩展能力。
核心变革:移除全局锁与plist
新补丁引入了一种全新的丁重I/O负载均衡策略,旨在实现多交换设备间任务分配的换设公平性。其核心改动包括:
- 移除可变优先级链表(plist):彻底弃用原有的配机plist数据结构。
- 取消全局互斥锁:解除对全局集群缓存的腾讯依赖。
- 轻量化机制:使I/O分配与设备轮换操作在更灵活、工程构交更轻量的师提架构下执行。
历史背景与架构痛点
在过往的内核内核实现中,I/O分配机制经历了以下演变:
- 初始阶段:每个交换设备独立维护一个每CPU(per-CPU)集群缓存。补备
- 后续优化:为减少plist的丁重频繁更新操作,内核变更将该缓存迁移至全局空间,换设由所有交换设备共享。
尽管现有实现通过“快速路径利用每CPU集群缓存”与“慢速路径依赖plist轮询”的分离设计得以运行,但这种架构长期存在结构性矛盾:
- 理念冲突:位于设备选择逻辑之上的全局CPU集群缓存,与现代调度理念中的“交换分层”及“分层分配”存在本质不兼容。
- 锁竞争瓶颈:plist依赖
plist_requeue函数执行轮换,该过程必须持有swap_avail_lock全局锁。在高并发场景下,这导致所有CPU核心激烈争抢资源。 - 架构僵化:由于轮换被划归为慢速路径,为规避对plist的访问,系统不得不引入大量折中设计,严重制约了架构的简洁性与后续演进能力。
新方案优势
新方案通过以下技术手段解决了上述瓶颈:
- 引入每CPU读写信号量(percpu rwsem):将全部交换设备与新增的每CPU读取器优先级队列统一纳入保护之下。
- 缓解锁竞争:大幅降低并发场景下的锁冲突概率。
- 增强并发能力:显著提升系统的并发处理吞吐量。
这一调整不仅解决了当前的性能瓶颈,也为后续支持交换分层等更先进的资源调度模型奠定了坚实基础。
未经允许不得转载:>凯明格资讯网 » 腾讯工程师提交Linux内核RFC补丁:重构交换设备I/O分配机制
凯明格资讯网

