CPU周波数スケーリングガバナーは、コアごとに個別に行うのではなく、すべてのコアに対して一度に設定したいと思います。これを行う方法はありますか?
(ガバナーを/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
にエコーすることは簡単ですが、カスタムソリューションを探しているわけではありません。)
私は何度もグーグルで検索したが、それは不可能だと思うので、次のワンライナーを.bashrc
に追加した。
function setgov ()
{
echo "$1" | Sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
}
これで、setgov ondemand
のようなものを実行でき、すべてのコアがondemandガバナーに切り替わります。
私はまだLinux初心者ですが、cpufrequtilsを使用してそれを行うことができるとは思いませんか(Ubuntu OSにはバンドルされていませんが、リポジトリにあります)
Sudo apt-get install cpufrequtils
Sudo cpufreq-set -r -g performance
-r
フラグは、すべての(「すべてのハードウェア関連」)コアの変更を設定するために使用されますすべてのコアのガバナーを変更する最も短いコマンドは次のとおりです。
Sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
前述のhtorqueのように.bashrcに追加できます。ルートSudo setgov performance
として実行する必要があります。
function setgov ()
{
for i in {0..7};
do
cpufreq-set -c $i -g $1;
done
}
Ubuntu 16.04以降では、約30秒後にガバナーがデフォルトでpowersaveに戻るため、これを固執するように設定します(Ubuntu Mateを使用しています)。
この(1行の)コードを入力してください(前の回答のswitch87のおかげで)
sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
ディレクトリ内のファイルに
/etc/rc.local
私のものは、「exit 0」の上の行であり、コメント化されたものの下にコメントがありません。
知らない人のための「rc.local」は、コマンドをSudoとして実行します。ガバナーを変更するためのコマンドはすべて、Sudoとして実行する必要があります。
ガバナーはpowersaveにリセットし、60秒後にコードをSudoとして実行してパフォーマンスに戻します。
「コピーするコード内の」「60」を、コマンドを遅らせる必要がある時間(秒単位。60= 60秒= 1分)に変更し、「コマンド」部分の「パフォーマンス」を必要なガバナーに変更します。への変更。
私が何時間も探し続けたうちに、これに対するこれ以上の恒久的な修正は見つかりませんでした。これが私が見つけた最良の修正である場合、節電状態になるのは数分ですよね?右。
最善の修正方法ではありませんが、省電力機能への小さな切り替えを行った後、ある程度永続的になります。すぐに起動してゲームや何かにジャンプしたい場合は、単にコードを入れてから省電力から切り替えるか、タイミングを下げる必要があります(所要時間によって異なります)すべてを起動して、正しくパフォーマンスに切り替えます)。
そして、いつものように、デフォルトに戻すには(最初の場所でデフォルトで節電するようにデフォルト設定していたかもしれない理由で、人々のPCの過熱に関するいくつかの問題を見ました)、rc.localからコードを削除して再起動するか、元に戻しますCPUアイコンインジケータスイッチャーを使用して手動で実行するか、実行します。
Sudo /etc/init.d/cpufrequtils restart
端末で再起動します。
実行中にbashコード補完を追加することもできます。
function setgovernor () {
echo "$1" | Sudo tee
/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor
Switch87の答えに基づいて、すべてのCPUで他のcpufreq-set-all
処理を実行できる単純なスクリプトcpufreq-set
を作成しました。
#!/bin/bash
MAX_CPU=$((`nproc --all` - 1))
for i in $(seq 0 $MAX_CPU); do
echo "Changing CPU " $i " with parameter "$@;
cpufreq-set -c $i $@ ;
done
これで、次のように(もちろんchmod +x
の後)呼び出すことができます:
cpufreq-set-all -g powersave
または
cpufreq-set-all -f 800Mhz
これを実行すると、すべてのコアに対して一度に実行できます
Sudo cpupower frequency-set --governor performance