批量迁移任务数
sched_nr_migrate 限制单次负载均衡操作中最多尝试迁移的任务数,默认 32。均衡触发时调度器会从繁忙的核上搬一部分可运行任务到空闲核,这个参数决定一次能搬多少。取值较大时均衡推进更快,但一次搬运大量任务会拉长停止调度的时间(迁移时需要短暂停住源核的运行队列),在实时或延迟敏感场景可能造成毛刺;取值较小则均衡更平缓,但收敛更慢。
基本信息
| 参数名 | kernel.sched_nr_migrate |
|---|---|
| 默认值 | 32 |
| 作用 | 单次负载均衡尝试迁移的任务数上限 |
| 影响面 | 均衡速度与单次暂停时长 |
| 观测 | /proc/sched_debug 与 pidstat -w |
典型使用场景
- 大量短命任务或线程池密集唤醒造成核间不均
- 与实时任务混跑时出现延迟毛刺
- 单核饱和而其他核空闲、恢复速度慢
- 短任务风暴场景下评估均衡效率
- 与迁移代价参数配合做调度微调
查看与对比
查看与对比
sysctl kernel.sched_nr_migrate
sysctl -w kernel.sched_nr_migrate=8 # 单次搬运更少,毛刺更小但收敛更慢
cat /proc/sched_debug | grep -i -m5 migrat
mpstat -P ALL 1 3 # 核间占用分布
pidstat -w 1 3 | head -20 # 迁移与上下文切换
vmstat 1 5 | tail -5方向与代价
| 方向 | 效果 | 代价 |
|---|---|---|
| 调大 | 均衡推进快,核间更均衡 | 单次暂停时间变长,延迟毛刺风险上升 |
| 调小 | 单次影响更小 | 均衡收敛变慢,可能长时间不均 |
| 保持默认 | 内核整定的折中值 | 极端负载下需要按实测调整 |
与实时任务混跑时,单次迁移过多会引入延迟毛刺,实时场景应选择更保守的取值。
这属于微调参数:先确认存在单核饱和、其他核空闲的实证,再考虑调整,否则很难看到可度量的收益。
与相邻参数的配合
- 迁移代价参数决定调度器有多不愿意搬动刚运行过的任务
- 批量迁移数决定一次能搬多少,两者共同影响均衡的推进节奏
- 中断亲和决定网络负载落在哪些核上,间接影响各核的均衡压力