CPU周波数をスケーリングするためのすべてのソリューションをほぼ試しましたが、成功しませんでした。 Intel Core i5-3210m 2.5Ghz-3.1Ghzを使用しています。バッテリータイミングを改善するために、ターボブーストなしで恒久的に1.6Ghzに設定したいと思います。 intel_pstateドライバーに従って教えてください。
Intel_pstateドライバーでCPUの上限周波数を52%に制限するには:
echo "52" | Sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
注1:52%の計算では、最大pstateが31のターボが有効になっていると想定しています。したがって、1.6/3.1 = 52%です。ターボを無効にした場合、数は64%になります。ターボを特に無効にする必要はありません。この制限により、とにかくターボ範囲に入ることはありません。
注2:アプリケーションとプロセッサによっては、CPU周波数を制限してもバッテリー寿命が最大にならない場合があります。場合によっては、より高いCPU周波数を使用してタスクをより速く完了し、したがって一部のCPUをより早く、より長くディープスリープ(最高C状態)にできるようにすることで、全体的な消費電力を削減できます。
注3:ソリューションは永続的なものではなく、再起動すると設定が失われます。しばらく試してみて、報告してください。それをどのようにして永続化するかを考えることができます。このための他の高レベルのツールがありますが、私はそれらを使用することはありません。他の誰かが、より高いレベルのツールを含む別の答えを提供するかもしれません。
例(異なるプロセッサ、異なる番号)。 CPU 7の負荷は100%です:
周波数の上限を設定する前:
$ grep MHz /proc/cpuinfo
cpu MHz : 3697.234
cpu MHz : 3655.796
cpu MHz : 3699.890
cpu MHz : 3742.257
cpu MHz : 3613.562
cpu MHz : 3670.273
cpu MHz : 3628.968
cpu MHz : 3799.898
次に、上限周波数を制限し、確認します。
$ echo "50" | Sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
50
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
50
$ grep MHz /proc/cpuinfo
cpu MHz : 1899.882
cpu MHz : 1900.015
cpu MHz : 1899.882
cpu MHz : 1893.906
cpu MHz : 1899.351
cpu MHz : 1900.015
cpu MHz : 1899.750
cpu MHz : 1899.882
編集:ストックカーネルが何であれ、intel_pstateドライバの変更のバックポートに注意してください。バックポートが行われていることは知っていますが、リリースのスケジュールはわかりません。
ブート中に常に変更を行うには、最初に次のようにスクリプトにします。
$ cat set_cpu_max_perf_pct
#! /bin/bash
echo 52 >/sys/devices/system/cpu/intel_pstate/max_perf_pct
echo -n "intel_pstate maximum performance request is (percent): "
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
スクリプトをテストし、Sudoとして実行します。次に、ブート中に実行できるようにする他の多くの質問と回答のいずれかを参照してください。言う、 これ 。
または、 TLP のようなツールをインストールできます。これらのツールは、バッテリーまたはACおよび自動スイッチのパラメーターを含む構成ファイルにこれらの設定があります。