当前支持的cpu频率调节器通过cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors查看,输出如performance powersave等;不同cpu型号、内核版本及驱动(intel_pstate或acpi-cpufreq)导致列表差异显著。

scaling_governor 文件就能生效,但必须确认当前 CPU 支持该调频器,且没被硬件或驱动锁死。
怎么查当前支持哪些调频器
每个 CPU 核心的可用调频器列在 /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 里。注意:不同 CPU 型号、内核版本、驱动(如 intel_pstate 或 acpi-cpufreq)返回的列表可能完全不同。
- Intel 新 CPU(启用了
intel_pstate)通常只显示performance、powersave,ondemand等传统调频器根本不会出现 - AMD 或老 Intel 平台用
acpi-cpufreq驱动时,常见performance、powersave、ondemand、conservative、schedutil - 如果读出来是空或只有
userspace,大概率是驱动没加载或 BIOS 关了 C-states
怎么临时切换调频器
写入 scaling_governor 是最直接的方式,但得逐核操作(除非你用 shell 循环):
- 单核设置:
echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor - 所有在线核心批量设置:
for i in /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_governor; do echo powersave | sudo tee "$i"; done - 写错名字会报
Invalid argument错误,不是权限问题,是名字不在scaling_available_governors列表里
为什么改了不生效
常见失效原因不是命令错了,而是底层约束没解除:
-
intel_pstate启用后,ondemand和conservative默认不可用;想启用得加内核启动参数intel_idle.max_cstate=1 intel_pstate=disable(不推荐,会丢掉睿频和深度 C-state) - BIOS 中启用了 “Intel SpeedStep” 或 “AMD Cool’n’Quiet”,但同时又开了 “Turbo Boost” 锁定,会导致
performance模式下频率仍被限制在基频 - 某些服务器 BIOS 强制启用 “Energy Efficient Turbo”,即使设了
performance,高负载时也不会上到标称最大频率 - 容器环境(如 Docker)或云主机(AWS EC2、阿里云 ECS)中,宿主已接管频率控制,客户机写
scaling_governor会被忽略
怎么让配置重启后还有效
靠 systemd 服务比 /etc/rc.local 更可靠,尤其在使用 cpufrequtils 的发行版上:
- 确保包已安装:
sudo apt install cpufrequtils(Debian/Ubuntu)或sudo yum install cpupower(RHEL/CentOS) - 编辑
/etc/default/cpufrequtils,写入:GOVERNOR="performance"MAX_SPEED="3200000"MIN_SPEED="800000" - 启用服务:
sudo systemctl enable cpufrequtils(注意:部分新版系统用cpupower替代,此时应启用cpupower服务并配置/etc/default/cpupower) - 别漏掉多核策略一致性:有些平台(如 ARM big.LITTLE)多个 policy 实例对应不同 core cluster,需分别配置
cpu0、cpu4等路径下的scaling_governor











