标准答案
- 普通任务的 nice 值越低通常越优先获得 CPU,但实际调度还受调度类、CPU 亲和性和 cgroup 权重影响。
- SCHED_FIFO、SCHED_RR 等实时策略可能抢占普通任务,错误使用会让系统关键线程得不到运行机会。
- 实时优先级、权限和时间片需要结合任务的最坏执行时间、阻塞行为和故障恢复设计。
- 服务治理优先处理工作量、队列、锁和 I/O 问题,不把调高优先级作为默认性能优化。
题目解析
nice 会影响普通调度类任务之间的相对 CPU 权重,优先级只在任务竞争同一 CPU 时体现;任务如果阻塞在磁盘、网络、锁或下游,它不会因为 nice 变小而减少等待。cgroup CPU 权重和 quota 也可能限制最终可用 CPU。
实时调度策略如 SCHED_FIFO/RR 有更强的调度语义,但使用不当可能长期占住 CPU,阻塞系统服务和其他请求。生产配置前要明确任务是否真有实时约束、是否有 watchdog 和优先级反转处理,并在隔离环境验证。
常见误区
- 误区:把 nice 当成绝对优先级。改正:说明它只是普通调度任务的相对权重,还会受 cgroup 和 CPU 亲和性影响。
- 误区:为了降低延迟随意使用实时调度。改正:只在有明确实时需求、隔离和兜底机制时使用,并验证系统整体可用性。