電源管理に触れましたが、必要な変更を継続的に適用する方法が見つかりませんでした。たとえば、次のコマンドを使用して最大CPU周波数を設定しました。
sudo cpupower frequency-set --max 2GHz
ただし、値は再起動するたびに元の値に戻ります。この変更を継続的に維持する標準的な方法はありますか?カーネルモジュールについて読みましたが、どのように機能するのかわかりません...誰でも助けることができますか?
メモ。私のコンピュータでUbuntu 20.04を実行しています。
答え1
これCPU周波数スケーリングのArch Wikiページcpupower
変更を維持するには、いくつかのアプローチが推奨されます。
- 前述したように、その1つはカーネルモジュールを追加することです。しかし、簡単にする必要がある他のより簡単なオプションがあります。より簡単な方法は、Arch Wikiが提案したようにサービスを
cpufreq
有効にすることです。systemd
早く走る
sudo systemctl enable cpupower
このサービスは、コンピュータが起動するたびに開始されます。現在コンピュータで実行されていないため、systemd
テストを実行できません。
- 2番目のオプションは
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.0GHzです。マシンのすべての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