Linux 默认调度类,基于虚拟运行时间 (vruntime):
# 查看调度器
cat /sys/kernel/debug/sched_features
# 查看进程调度信息
cat /proc/<PID>/sched
cat /proc/<PID>/schedstat
chrt -p <PID> # 查看调度策略
chrt -f -p 50 <PID> # 设置为 SCHED_FIFO, 优先级 50
chrt -r -p 50 <PID> # 设置为 SCHED_RR
| 策略 | 说明 | 风险 |
|---|---|---|
| SCHED_OTHER (CFS) | 默认分时 | 安全 |
| SCHED_BATCH | 批处理,不抢占 | 适合后台 |
| SCHED_IDLE | 极低优先级 | 仅在空闲时运行 |
| SCHED_FIFO | 实时 FIFO, 无时间片 | 可能饿死其他进程 |
| SCHED_RR | 实时轮转, 有时间片 | 比 FIFO 温和 |
nice -n 10 command # 低优先级启动
nice -n -20 command # 最高优先级 (需 root)
renice -n 5 -p <PID> # 调整运行中进程
taskset -pc <PID> # 查看进程 CPU 亲和性
taskset -c 0,2 command # 绑定到 CPU 0 和 2
taskset -p 0x3 <PID> # 位掩码: 0b0011 = CPU 0,1
# systemd 中配置
# CPUAffinity=0 2
用途:减少缓存失效 (cache miss),避免进程在核心间迁移。
需要低延迟的实时任务? → SCHED_FIFO + 高优先级
关键服务 (数据库)? → 负 nice 值 + CPU 亲和性
批处理/后台任务? → SCHED_BATCH
不重要的任务? → 正 nice 值 / SCHED_IDLE