CPU 调度从可运行任务中选择下一个执行者。目标常相互冲突:批处理关注吞吐和周转时间,交互任务关注响应,实时任务关注截止期,同时还要兼顾公平、优先级与多核局部性。

先来先服务简单但长任务会阻塞短任务;短作业优先能降低平均等待,却可能使长任务饥饿;时间片轮转给每个任务轮流运行,时间片太大会接近先来先服务,太小则上下文切换频繁。优先级调度需用老化等机制缓解饥饿。现代通用系统通常综合虚拟运行时间、优先级和负载均衡,而非只套一种教材算法。

上下文切换要保存寄存器、切换地址空间和恢复现场,还会影响缓存与 TLB,因此并非免费。CPU 密集任务适合接近核心数的并行度;大量 I/O 等待任务可有更多线程,但过多会增加调度与内存成本。

系统负载通常反映一段时间内可运行及某些不可中断等待任务数量,不等同 CPU 使用率。四核机器 load 为 4 可能刚好满载,单核则明显排队;高 load 配合低 CPU,可能是磁盘或不可中断 I/O 等待。判断时应结合运行队列、iowait、上下文切换和各核利用率。

误区是把负载值直接当百分比、认为线程越多吞吐越高、忽略任务亲和性和 NUMA,以及只看一分钟均值。小结:调度是在响应、吞吐与公平间取舍;性能诊断要区分正在计算、排队等 CPU 和阻塞等资源。