Linux 内核工作队列 (WQ) 用于处理异步进程执行。 在过去的许多年中,每个 CPU 的工作队列执行上下文数量上限一直是 512,但随着 Linux 6.13 的发布,这一上限将翻两番,达到 2048。
/<Zy-+3 7f~DD8 R 今天发布的是 Linux 6.13 的 workqueue 拉取请求。
[p_R?2uT WQ|d;[E "Maximum concurrency limit of 512 是很久以前设定的,现在太低了。 在压力测试条件下,system_wq 的合法使用(BPF cgroup 发布)可能会使其达到饱和,从而导致错误的依赖关系和死锁。 在将违规使用切换到专用工作队列的同时,利用这个机会将 WQ_MAX_ACTIVE 提升四倍,并记录系统工作队列不应饱和。 工作队列至少应为系统工作队列饱和的情况添加警告机制。"
i=#r JK= av&dGsFP 这个 512 限制是在十五年前设定的。
ZZ)bTLu *Iyv${ Linux6.13的另一个工作队列变化也值得注意。
TJ
;4QL HRC5z<k% "最近的工作队列更新支持更灵活的执行拓扑结构使得非绑定工作队列使用按 CPU 工作者池前端,这推高了工作队列刷新开销。 由于连续的 CPU 很可能指向同一个 Worker 池,因此只有在必要时才切换锁,以减少开销。"
j+88J ig7)VKr 这些 WQ 变更现在正等待 Linux 6.13 合并窗口的到来。
9L*gxI>