腾讯工程师出手!Linux多交换设备I/O调度大重构:彻底干掉全局锁-麦享科技
麦享科技
前沿资讯网站

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

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

麦享科技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调度大重构:彻底干掉全局锁

💡 网购省钱小技巧
下单前先查历史价格,再领隐藏优惠券,还能享受购物返利,让每一次购物都更划算。


麦享生活

网购先比价 · 查优惠券 · 查返利 · 查历史价格,就用麦享生活 APP。


麦享生活下载

麦享生活已上架各大应用商店,免费下载,安装即可使用。

未经允许不得转载:麦享科技 » 腾讯工程师出手!Linux多交换设备I/O调度大重构:彻底干掉全局锁

相关推荐

  • 暂无文章