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

番茄系统家园 · 2026-07-14 03:30:37

本站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调度大重构:彻底干掉全局锁

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/xtzx/4219068qf6h2.html
猜你喜欢
最新应用
热门应用