CPU周波数を値で制限するにはどうすればよいですか?
cpufreq
は、周波数を範囲内で変化させるのではなく、一定の値に固定することを提供します。
また、保守的、オンデマンド、省電力、およびパフォーマンスも提供します。それらの意味がわかりません。しかし、それらは頻度も制限しません。 4つの設定は実際にはどういう意味ですか?言い換えれば、彼らのポリシーは何ですか?
質問2:acpi cpufreqドライバーの場合:
保守モードでは、負荷とCPU周波数の応答曲線が遅くなります。つまり、CPU周波数が上昇する前に、CPUの負荷が少し増えます。
オンデマンドモードでは、CPU周波数に対する負荷の応答曲線が高速であるため、CPU周波数が上昇する前にCPUの負荷が少し少なくなります。
ドライバはヒステリシスを使用するため、CPU周波数に対する負荷の増減曲線は同じではありません。
省電力モードは、要求されたp-stateをプロセッサの最低値でロックします。その結果、CPUは常に最低のクロック周波数になります。
パフォーマンスモードは、プロセッサの最大値でターゲットpstateをロックします。ただし、一部のプロセッサは無負荷で単独でバックオフできることに注意してください。簡単にするために、CPUが常に最高周波数にあると考えてください。
質問1:はい、上限周波数を制限できます。
最初に利用可能な周波数のリストを取得します(私のコンピューターからの例):
doug@s15:~/temp$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
3401000 3400000 3300000 3100000 3000000 2900000 2800000 2600000 2500000 2400000 2200000 2100000 2000000 1900000 1700000 1600000
次に、最大頻度をリストから選択する必要があることに注意して、最大頻度を決定します。次に設定します:
echo 2600000 | Sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
そして、すべてのCPUについて繰り返します。
スクリプトバージョンが推奨される場合があります。Sudoとして実行します。
#! /bin/bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq; do echo "2900000" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq