使 cpupower 更改持久化

使 cpupower 更改持久化

我一直在摆弄电源管理,但找不到一种方法来使我想要的更改持久化。例如,我使用以下命令设置了最大 cpu 频率:

sudo cpupower frequency-set --max 2GHz

但每次重新启动时该值都会恢复为原始值。是否有一种标准方法可以使这种更改持久存在?我已经阅读过有关内核模块的内容,但我不知道它们是如何工作的......任何人都可以帮助我吗?

笔记。我的机器运行的是 Ubuntu 20.04。

答案1

有关 CPU 频率缩放的 Arch Wiki 页面建议采用几种不同的方法来cpupower持久执行更改。

  • 正如您提到的,其中之一是添加内核模块。但还有其他更简单的选项应该更容易。更简单的方法是启用cpufreqsystemd服务,如 Arch Wiki 中建议的那样。赶紧跑

sudo systemctl enable cpupower

每次启动机器时都会启动该服务。我现在没有在机器上运行systemd,所以我无法执行任何测试。

  • 第二个选项是添加udev规则。我现在已经测试过这个,效果非常好。只需编辑名为或类似的文件/etc/udev/rules.d/50-scaling-governor.rules(如果不存在则创建它)并向其中添加以下内容:

SUBSYSTEM=="module", ACTION=="add", KERNEL=="acpi_cpufreq", RUN+="/bin/sh -c 'echo 2000000 | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'"

这会将 CPU0 的最大频率更改为写入的值。在您的情况下,2000000或 2.0 GHz。要对计算机中的每个 CPU 执行相同的操作,只需将前面的命令更改为

SUBSYSTEM=="module", ACTION=="add", KERNEL=="acpi_cpufreq", RUN+="/bin/sh -c 'echo 2000000 | tee /sys/devices/system/cpu/cpu*[0-9]/cpufreq/scaling_max_freq'"

这将改变系统中每个 CPU 的最大频率。

答案2

# cat<<EOF > /etc/systemd/system/cpupower.service 
[Unit]
Description=CPU powersave
[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower -c all frequency-set --governor powersave  -d 400MHz -u 1000MHz
[Install]
WantedBy=multi-user.target


# systemctl daemon-reload
# systemcl enable cpupower

相关内容