如何在GRUB中配置非性能模式的自定义CPU调速器并实现开机持久化固定频率
如何在GRUB中配置非性能模式的自定义CPU调速器并实现开机持久化固定频率
我完全懂你的需求——就是想把CPU钉在一个不是最高的固定频率上(比如你选的1900000,看你写的19GHz应该是笔误啦,实际是1.9GHz对吧?),而且不想每次开机都手动调整,要这个设置一开机就自动生效。下面我给你一步步说清楚怎么操作:
一、先确认你的系统已经支持userspace调速器
你之前用CPU Frequency Scaling Monitor设置后,已经看到所有核心的调速器都是userspace,这说明你的系统已经能正常使用这个调速器了。不过保险起见,你可以再跑两个命令确认下:
- 查看所有核心支持的调速器:
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_available_governors,输出里肯定有userspace - 再次确认你要的频率在可用列表里:
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_available_frequencies,你选的1900000应该在里面
二、通过GRUB配置确保userspace调速器能正常加载(Intel CPU专属,AMD用户跳过)
如果你的CPU是Intel的,默认可能用的是intel_pstate驱动,这个驱动本身不支持userspace调速器。你现在能用上userspace,说明要么已经禁用了这个驱动,要么你的系统用的是其他驱动。不过为了避免开机后出问题,我们可以在GRUB里加个参数锁死这个设置:
- 打开GRUB的配置文件:
sudo nano /etc/default/grub - 找到
GRUB_CMDLINE_LINUX_DEFAULT这一行,在引号里加上intel_pstate=disable- 举个例子,原来的行可能是:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" - 修改后就变成:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable"
- 举个例子,原来的行可能是:
- 更新GRUB让修改生效:
- 如果你用的是Ubuntu、Debian这类系统,跑:
sudo update-grub - 要是RHEL、CentOS这类,就跑:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- 如果你用的是Ubuntu、Debian这类系统,跑:
三、创建系统服务,让固定频率开机自动生效
GRUB本身没法直接设置userspace调速器的具体频率,所以我们要做一个systemd服务,让系统一启动就自动把所有核心的调速器设为userspace,再把频率固定到你要的值:
- 创建一个新的服务文件:
sudo nano /etc/systemd/system/cpu-fixed-frequency.service - 把下面的内容复制进去,注意把
1900000改成你实际想要的频率值(比如你选的那个1900000):
[Unit] Description=Set CPU to fixed frequency using userspace governor After=multi-user.target [Service] Type=oneshot ExecStart=/bin/bash -c ' for cpu in /sys/devices/system/cpu/cpufreq/policy*; do echo userspace > $cpu/scaling_governor echo 1900000 > $cpu/scaling_setspeed done ' RemainAfterExit=yes [Install] WantedBy=multi-user.target
- 保存并退出nano:按
Ctrl+O,回车确认保存,再按Ctrl+X退出 - 启用这个服务,让它开机自动运行:
sudo systemctl enable cpu-fixed-frequency.service - 现在可以先测试一下,不用重启,直接运行:
sudo systemctl start cpu-fixed-frequency.service- 然后检查调速器:
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_governor,应该全是userspace - 再检查频率:
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq,应该全是你设置的1900000
- 然后检查调速器:
四、验证持久化效果
现在重启你的电脑,开机后再跑上面的检查命令,要是所有核心的调速器还是userspace,频率也正好是你要的那个值,就说明这个设置已经完全持久化了,以后开机都不用管啦。
备注:内容来源于stack exchange,提问作者Eric Marceau
相关产品推荐
相关产品推荐

