Linux内核工作队列(WQ)用于处理异步进程执行。在过去的许多年中,每个CPU的工作队列执行上下文数量上限一直是512,但随着Linux6.13的发布,这一上限将翻两番,达到2048。

今天发布的是Linux6.13的workqueue拉取请求。

"Maximumconcurrencylimitof512是很久以前设定的,现在太低了。在压力测试条件下,system_wq的合法使用(BPFcgroup发布)可能会使其达到饱和,从而导致错误的依赖关系和死锁。在将违规使用切换到专用工作队列的同时,利用这个机会将WQ_MAX_ACTIVE提升四倍,并记录系统工作队列不应饱和。工作队列至少应为系统工作队列饱和的情况添加警告机制。"

这个512限制是在十五年前设定的。

Linux6.13的另一个工作队列变化也值得注意。

"最近的工作队列更新支持更灵活的执行拓扑结构使得非绑定工作队列使用按CPU工作者池前端,这推高了工作队列刷新开销。由于连续的CPU很可能指向同一个Worker池,因此只有在必要时才切换锁,以减少开销。"

这些WQ变更现在正等待Linux6.13合并窗口的到来。