第 29 章 限制 SCHED_OTHER 任务迁移

您可以使用 sched_nr_migrate 变量限制 SCHED_OTHER 迁移到其他 CPU 的任务。

先决条件

  • 管理员特权。

29.1. 任务迁移

如果 SCHED_OTHER 任务生成大量其他任务,则它们将在同一 CPU 上运行。迁移 任务或 softirq 将尝试平衡这些任务,以便它们可在空闲 CPU 上运行。

可以调整 sched_nr_migrate 选项,以指定每次将移动的任务数量。因为实时任务具有不同的迁移方法,所以它们不会直接受到此问题的影响。但是,当 softirq 移动任务时,它会锁定 run 队列 spinlock,从而禁用中断。

如果需要移动大量任务,它会在中断禁用时发生,因此不允许同时进行计时器事件或唤醒。当将 sched_nr_migrate 设置为较大的值时,这可能会导致实时任务具有严重的延迟。