调频调速器
cpufreq 的调速器(governor)决定 CPU 频率如何随负载变化。常见取值有 performance(恒定最高频)、powersave(尽量最低频)、ondemand(按负载快速升频)、conservative(渐进升降)与 schedutil(由调度器的利用率数据驱动,现代内核常用默认)。低延迟场景常固定 performance,避免频率爬升过程带来的响应抖动;省电与散热优先的场景则相反。设置方式是按 CPU 逐个写入 scaling_governor。
基本信息
| 查询 | cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
|---|---|
| 常见取值 | performance、powersave、ondemand、conservative、schedutil |
| 设置方式 | 逐个写入各 CPU 的 scaling_governor |
| 工具 | cpupower frequency-info 与 frequency-set |
| 影响因素 | 驱动不同(intel_pstate、acpi-cpufreq)可选调速器也不同 |
典型使用场景
- 低延迟服务固定频率,减少频率变化带来的抖动
- 服务器在省电与性能之间做取舍
- 虚拟机或云主机确认是否具备调频能力
- 排查性能突然下滑是否由降频引起
- 批量统一多台机器的频率策略
查看与固定
查看与固定
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
cpupower frequency-info --governors
cpupower frequency-info | head -20
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
cpupower frequency-set -g performance # 用工具一次性设置,需要 root
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq # 实测当前频率调速器对照
| 取值 | 行为 | 适用场景 |
|---|---|---|
| performance | 尽量固定在最高频 | 延迟敏感、追求确定性 |
| powersave | 尽量用最低频 | 省电优先、性能其次 |
| ondemand | 按负载快速升频 | 通用服务器,响应较激进 |
| conservative | 按负载渐进升降频 | 对频率波动较敏感的业务 |
| schedutil | 由调度器利用率驱动 | 现代内核常见默认值 |
虚拟机通常不暴露宿主的调频能力,相关目录可能不存在,写入会报 No such file or directory,属于正常现象。
固件与 BIOS 的电源策略可能覆盖内核设置,改完要用 scaling_cur_freq 实测验证,而不是只看配置文件是否写入成功。
让设置持久化的方式
- 使用 cpupower 服务在启动时统一设置频率策略
- 在开机脚本中遍历各 CPU 写入 scaling_governor
- 通过内核参数指定默认调速器,使设置在内核启动阶段即生效
同一台机器上混用不同策略会让核间频率不一致,性能表现难以复现;建议整机统一设置后再做基准测试。