腾讯工程师出手!Linux多交换设备I/O调度大重构:彻底干掉全局锁

2026-07-14 11:06:29 0点赞 0收藏 0评论

快科技7月14日消息,腾讯工程师Kairui Song近日向Linux内核提交了一组RFC补丁,旨在彻底重构多个交换设备的I/O分配机制。

对于使用交换分层或分层交换处理的复杂服务器场景,这套方案有望显著改善系统性能与可扩展性。

腾讯工程师出手!Linux多交换设备I/O调度大重构:彻底干掉全局锁

这套补丁引入了一种全新的方法来公平分配多交换设备的I/O负载。其核心改动是完全移除可变的plist和全局锁,进而取消了全局集群缓存。这样一来,分配和轮换可以更加自由地进行。

作为依赖项,该系列还清理并重构了交换设备管理的锁定模式。

此前,每个交换设备都有自己的percpu集群缓存。后来一个提交将集群缓存移到了全局作用域,让所有设备共享同一个全局缓存,以减少对plist的频繁修改。

快速交换分配直接使用每个CPU的集群缓存,设备轮换仍由plist处理。这种设计虽然可行,却引发了多个长期存在的问题。

其中最关键的是,位于设备选择之上的全局CPU集群缓存,与交换分层和分层交换分配等概念存在根本冲突。

plist本身需要plist_requeue()函数来轮换设备以实现轮询,这需要持有swap_avail_lock锁,所有CPU都会争用这把锁。

此外,轮换被认为是慢速路径,为了不触碰plist而采用快慢路径设计,导致了诸多变通方案和设计局限。

新补丁将所有交换设备和新引入的percpu读取器优先级队列,统一由percpu rwsem保护,从而大幅提高了可扩展性。这一设计也为未来的交换分层等新想法做好了铺垫。

腾讯工程师出手!Linux多交换设备I/O调度大重构:彻底干掉全局锁

编辑:红茶

【本文结束】如需转载请务必注明出处:快科技

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松