皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 7.1 sched_ext 为任务在 CPU 上运行时添加 “SCX_ENQ_IMMED” 以实现更严格的控制

Linux 7.1 sched_ext 为任务在 CPU 上运行时添加 "SCX_ENQ_IMMED" 以实现更严格的控制

Linux 内核的可扩展调度器类“sched_ext”持续启用新功能,允许通过 BPF 程序实现自定义 CPU 调度策略。在下个月即将发布的 Linux 7.1 版本周期之前,sched_ext 的开发代码中已排队引入一项名为 ‌SCX_ENQ_IMMED‌ 的新功能,用于更精确地控制任务何时被投放到 CPU 上执行。

SCX_ENQ_IMMED‌ 是 sched_ext 中的一个新标志(flag),用于控制任务入队行为:当一个任务可以立即开始运行时,该标志确保其被直接加入本地分发队列(Dispatch Queue, DSQ)。换句话说,如果任务具备立即执行的条件,它就会被优先处理。

长期从事 Linux 内核开发的 Tejun Heo 负责实现了这一 SCX_ENQ_IMMED 标志,并在补丁说明中解释道:

“为本地 DSQ 插入操作添加 SCX_ENQ_IMMED 入队标志。一旦任务以 IMMED 方式被调度,它要么立即获得 CPU 并持续运行,要么在无法执行时被重新送回 BPF 调度器。它绝不会滞留在本地 DSQ 中其他任务之后,也不会被更高优先级调度类抢占的 CPU 所阻塞。

……
该机制通过防止任务在本地 DSQ 中堆积,实现了对调度延迟更精细的控制。同时,它还支持子调度器之间进行机会性的 CPU 共享——如果没有此功能,某个子调度器可能会填满共享 CPU 的本地 DSQ,导致其他调度器难以获得使用机会。”

目前该补丁已合入 sched_ext 的 “for-7.1” Git 分支,预计将在下个月的 Linux 7.1 合并窗口期间正式提交。

转自 Linux 7.1 sched_ext To Add “SCX_ENQ_IMMED” For Tighter Control When Tasks Land On A CPU – Phoronix

已有 0 条评论
已有 0 条评论
-->