第 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
设置为较大的值时,这可能会导致实时任务具有严重的延迟。