web-dev-qa-db-ja.com

最新のPSTATEドライバーの下で*一定*の最低CPU周波数を設定することは可能ですか?

新しいpstate Intelドライバーは、古き良きpowersaveガバナーを削除して、利用可能な最低のCPU周波数を設定し、数値シミュレーションを数時間または数日実行できるようにして、私を完全に怒らせますサイレントで冷たいノートパソコン。さらに悪いことに、彼らが現在powersaveと呼んでいるのは、基本的には古いガバナーondemandです。つまり、CPU周波数が負荷に応じて上昇し、ファンのノイズが大きくなります。

これらのポリシーはドライバーに実装されているため、cpufreq sysfs(scaling_governors)で同じ名前であっても、cpufreqスケーリングガバナーの実装と同じではありません。たとえば、「パフォーマンス」ポリシーはcpufreq(TM)の「パフォーマンス」ガバナーに似ていますが、「パワーセーブ」はcpufreq「パワーセーブ」ガバナーとは完全に異なります。ここでの戦略はcpufreq "ondemand"に似ており、要求されたP-Stateはシステムの負荷に関連しています。

https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt から抽出)

さて、CPU周波数を最小限に抑える方法は他にありますか?それは私にとって本当に重要です。最終的に一定の最低CPU周波数を設定できない場合は、ラップトップをウィンドウからダンプすることを好みます。それが私が私のラップトップを使用する方法であり、それは私がラップトップが欲しいものであり、私はすでに数日間これを達成しようと努めてきました!

私はこれを試していますが、うまくいきません:

echo 42 | Sudo dd of=/sys/devices/system/cpu/intel_pstate/max_pref_pct

最大速度を42%に設定しても影響はありません。何かを実行すると、CPUは100%に進み続けます。何が悪いのですか? (いくつかのサービスまたは何かを再起動する必要がありますか?)

これを入手する方法はありますか?また、Intel以外のCPUでそれを実行できますか?問題を解決するラップトップをもう1つ購入してもかまいません。

11
Mephisto

まあ、まあ、新しいpstate Intelドライバーは素晴らしいことがわかりましたが、最初に、ドキュメントを読むという、古くて失われた芸術を少し練習する必要があります。

質問はそのままにしておきます。インターネット全体に散らばっている悲しみと不満から判断すると、私がこの問題を抱えているのは私が最初ではありません。

新しいCPUドライバーには多くのオプションがありますが、説明を単純なものに制限します。私にとっては、十分以上に満足のいくものです。まず第一に:

Sudo apt-get install linux-cpupower

(または非debianベースのディストリビューションの同等のもの)

現在、powersaveおよびperformanceという名前の2つの動作(ガバナー)がありますが、これらのガバナーは古い名前で同じ名前を持つものとは関係がないため、非常に残念な命名方式です。運転者:

  • powersaveは、現在負荷に依存する可変周波数を意味します。つまり、これは基本的に古いondemandガバナーです。最小周波数と最大周波数を設定できます。その最大周波数がCPUで可能な最大周波数に設定されている場合(これがデフォルトであると思います)、がらくたを保存しません。最小周波数を2番目に高い値に上げることもでき、その結果、CPUはほぼフルスロットル24/7になり、ガバナーには powersave という名前が付けられます。彼らは、このガバナーにVARIABLEまたは同様の名前を付けて、ユーザー間の多くの混乱を避け、開発者にカーネルバグの多くの誤った報告を行わせないようにすべきでした。

  • performanceは、ここでは一定の周波数を意味します。負荷に関係なく、これはユーザーが最大値として設定したものに依存します。このガバナーを設定すると、最小周波数は無視され、CPUは最大値として設定した周波数で実行されます。そのため、非常に低い周波数を設定した場合、特別なパフォーマンスなどは何も見られず、一定の周波数でCPUの速度が低下するだけです。したがって、彼らはこの知事にCONSTANTまたは類似の名前を付けた方がよく、古いスキームに慣れている私のような多くの人々にフラストレーションを与えません。

そこで、少なくともカーネル4.14では、魅力的な例がいくつかあります。 CPUの最小値と最大周波数として、0.4および3.1 GHzを使用します。 cpupower frequency-infoであなたの写真を見てください

一定、すべてのコアで最低の周波数

これはIS私が欲しかったものです!一定の周波数ガバナーを設定し、利用可能な最低の周波数を最大として設定することでそれが得られます:

Sudo cpupower frequency-set -g performance
Sudo cpupower frequency-set -u 400MHz

一定、すべてのコアで最も高い周波数

(あなたはこれが理にかなっているデスクトップコンピュータに非常に頻繁に尋ねられるのを見ますが、彼らのラップトップファンを破壊したい人々もいます)

Sudo cpupower frequency-set -g performance
Sudo cpupower frequency-set -u 3100MHz

すべてのコアの最小および最大可能周波数の間の可変周波数

(これは古いacpi-cpufreqドライバでは ondemand と呼ばれていました)

Sudo cpupower frequency-set -g powersave
Sudo cpupower frequency-set -d 400MHz
Sudo cpupower frequency-set -u 3100MHz

すべてのコアの最小周波数と中程度の周波数の間の可変周波数

(おそらく、必要なときにさらに速度を上げたいが、最大に到達してファンが狂ったように聞こえたくない場合)

Sudo cpupower frequency-set -g powersave
Sudo cpupower frequency-set -d 400MHz
Sudo cpupower frequency-set -u 1200MHz

等々。それはとても簡単で、本当にうまくいきます。大量の数値が実行されている1つのコアで一定の低周波数を設定し、より一般的なもの(電子メール、Webブラウジングなど)を起動する他のコアで可変周波数を残すことができます。詳細については、tasksetを参照してください。

9
Mephisto

それは私のために働きます:

echo "50" | Sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct

cPU負荷が100%の場合、パフォーマンス/速度は50%のみです。

2
Taufik