CPUの電力変更を継続的に維持

CPUの電力変更を継続的に維持

電源管理に触れましたが、必要な変更を継続的に適用する方法が見つかりませんでした。たとえば、次のコマンドを使用して最大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の最大周波数が記録された値に変わります。あなたの場合は20000002.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

関連情報