Linux CPU调度调优需结合应用类型、负载特征和硬件拓扑:CFS默认适用交互任务,数据库宜保持默认sched_latency_ns(24ms),高并发Web可设为10ms,实时音视频应使用chrt -f配合绑核;须通过sysctl配置参数并压测验证。
直接调 CPU 调度器参数不是“改个数字就变快”,而是要结合应用类型、负载特征和硬件拓扑做针对性调整。重点不在“调什么”,而在“为什么这么调”——比如数据库、实时音视频、高并发 Web 服务,各自需要的调度行为完全不同。
Linux 默认用 CFS(完全公平调度器),对普通交互任务友好,但对吞吐敏感型任务可能不够激进。关键操作有三类:
renice -n -15 -p 12345
chrt -f 98 ./encoder(98 是实时优先级,0–99,越高越优先)多核环境下,频繁在核心间迁移线程会导致缓存失效、增加延迟。把关键进程“钉”在固定核心上,能显著提升局部性与吞吐:
taskset -c 1,3 ./worker;运行中查看绑定:taskset -cp 12345
mpstat -P ALL 1 查看各核软中断分布,再将对应 IRQ 绑定到专用核:echo 2 > /proc/irq/42/smp_affinity_list(表示绑定到 CPU 2)多数场景无需动底层参数,但若遇到大量短任务导致调度开销上升,可小幅优化:
/proc/sys/kernel/sched_min_granularity_ns(默认 1ms),让小任务更快轮转,适合高并发短请求场景echo 0 > /sys/kernel/debug/sched_autogroup_enabled
vmstat 1 看 cs 列,持续 >8 万/秒需警惕;再用 perf top -e sched:sched_switch 定位高频切换进程调参前必须采集基线,调完必须压测验证。不能只看 CPU 使用率,要看实际吞吐、P99 延迟、上下文切换数:
top -H(看线程级 CPU)、pidstat -t 1(线程调度统计)、sar -u 1 10(CPU 各态占比)sy(系统态)占比高,说明内核开销大(如锁竞争、频繁 syscalls);若 wa 高,说明 CPU 在等 I/O,调度调优无效