linux下配置cpufreq动态调频的核心是设置调频策略(governor)和频率上下限(scaling_min_freq/scaling_max_freq),通过sysfs接口或cpufrequtils工具实现,无需额外内核模块,支持服务器、嵌入式及桌面系统。

Linux 下配置 cpufreq 动态调节 CPU 频率,核心是控制 调频策略(governor) 和 频率上下限(scaling_min_freq / scaling_max_freq)。不需要安装额外内核模块,所有操作基于 sysfs 接口或标准工具,适用于服务器、嵌入式设备及桌面系统。
确认 cpufreq 是否启用并查看当前状态
先检查系统是否已加载 cpufreq 子系统:
- 运行
ls /sys/devices/system/cpu/cpu0/cpufreq/,若目录存在且含scaling_governor、scaling_cur_freq等文件,说明已启用 - 执行
cpufreq-info(需安装cpufrequtils)可汇总所有 CPU 的当前策略、频率范围和支持的 governor - 若目录为空,可能未加载驱动:尝试
modprobe acpi-cpufreq(Intel)或modprobe cpufreq-dt(ARM 设备),再检查
设置调频策略(governor)
governor 决定频率如何响应负载变化。常用策略有:
- performance:锁频到最高可用频率(适合低延迟场景)
- powersave:锁频到最低可用频率(适合省电优先)
- ondemand:负载升高时快速升频,空闲时降频(传统动态策略)
- conservative:渐进式升降频,减少抖动(适合实时性敏感场景)
- interactive(Android 常用):对负载变化更敏感,响应更快
设置方法(以 cpu0 为例):
- 临时生效:
echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor - 批量设置所有在线 CPU:
for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo powersave | sudo tee $i; done
限制频率范围(scaling_min_freq / scaling_max_freq)
即使选了 ondemand 或 performance,也可人为限定实际运行区间,避免超频风险或强制节能:
- 先查支持的频率列表:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies - 设最低为 800 MHz:
echo 800000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq - 设最高为 1.6 GHz:
echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq - 注意顺序:必须先设
scaling_max_freq,再设scaling_min_freq,否则可能被内核拒绝
让配置重启后仍然有效
sysfs 设置默认不持久。推荐两种可靠方式:
-
使用 systemd service:新建
/etc/systemd/system/cpufreq-init.service,在[Service]中写入ExecStart=/bin/sh -c 'echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor',然后systemctl enable cpufreq-init -
修改 /etc/default/grub:在
GRUB_CMDLINE_LINUX_DEFAULT中添加intel_idle.max_cstate=1 intel_idle.max_cstate=0(仅 Intel)或cpufreq.default_governor=performance(部分内核支持),再运行sudo update-grub && sudo reboot











