最新のPSTATEドライバで*一定*最小CPU周波数を設定できますか?

最新のPSTATEドライバで*一定*最小CPU周波数を設定できますか?

新しいIntelドライバは、使用可能な最低CPU周波数を設定し、数時間または数日間静かで冷たいラップトップで数値シミュレーションを実行できるようにするpstate既存のガバナーを削除したため、私を永遠に怒らせます。powersaveさらに悪いことに、彼らが今言うのはpowersave本質的に古いガバナー、負荷に応じてondemandCPU周波数が上昇するモード、そしてそれに伴う台無しなファンノイズです。

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

(から抜粋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

まあ、新しいIntelドライバは素晴らしいことがわかりましたが、pstateまず少し古くて失われた技術を練習する必要があります。マニュアルを読んでください。

インターネットで見たすべての悲しみと欲求不満で判断すると、私はこの問題を経験した最初の人ではないので、質問を開いたままにします。

新しいCPUドライバには多くのオプションがありますが、私には十分で満足のいくいくつかの簡単なオプションに説明を制限します。最初:

sudo apt-get install linux-cpupower

(またはDebianベースではないディストリビューションではこれに相当します)

これで、名前付きの2つのアクション(ガバナー)がありますが、これらのガバナーは以前のドライバーと同じ名前のアクションとは関係がpowersaveないperformanceため、これは非常に不幸な命名スキームです。

  • powersave今を意味する負荷に応じて可変周波数つまり、これは本質的に以前のondemand知事です。最小周波数と最大周波数を設定できます。最大周波数がCPUが実行できる最大周波数(デフォルトと見なされます)に設定されている場合、コストは節約されません。最小周波数を2番目に高い値に増やすこともでき、その結果、CPUは年中無休のほぼ最高速度で実行され、ガバナーの名前はそのまま残ります。省エネ。ユーザー間の混乱を避け、開発者が誤って報告した多くのカーネルのバグを防ぐために、このガバナーの名前をVARIABLEまたは同様の名前で指定する必要があります。

  • performanceここで意味負荷に関係なく周波数が一定、これはユーザーが設定した最大値によって異なります。このレギュレータを設定すると、最も低い周波数は無視され、CPUはユーザーが設定した最高​​の周波数で実行されます。これにより、非常に低い周波数を設定すると、特別なパフォーマンスや何も見えなくなり、一定の周波数でCPUが遅くなります。したがって、彼らは以前の方法に慣れていた私のような多くの人々をイライラさせないように、この知事の名前をCONSTANTまたは同様の名前で指定することをお勧めします。

少なくともカーネル4.14では、非常に便利ないくつかの例があります。 CPUの最小および最大周波数値である0.4GHzと3.1GHzを使用します。見るcpupower frequency-info

すべてのコアは一定の最小周波数を維持します。

これが私が欲しいです!これは、定周波レギュレータを設定し、使用可能な最低周波数を最大値に設定することによって達成できます。

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ドライバーと一緒に)

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

など。非常にシンプルで本当にうまく動作します。また、重いデジタルコンテンツを実行しているコアでは一定の低周波を維持し、より一般的なコンテンツ(電子メール、Webブラウジング...)が実行される他のコアでは可変周波数を維持することもできます。詳細についてはを参照してくださいtaskset

答え2

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

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

CPU負荷が100%の場合、50%のパフォーマンス/速度でのみ実行されます。

答え3

(科学実験のために)一定の周波数を設定する方法を見つけるためにいくつかの日を無駄にした後、最後にあきらめました。私はperformance知事です(メフィストが提案したように)、intel_pstateドライバのactiveモードを変更しpassive、PPC保護を無効にし、intel_pstateからacpi-cpufreqに切り替えるなどの操作を実行します。

これらのオプションのどれも一定の周波数設定に影響を与えません。それから私はそうだったカーネル文書:

現世代のIntelプロセッサでは、周波数はプロセッサ自体によって制御され、ソフトウェアによって公開されるP状態はパフォーマンスレベルに関連付けられています。 Intel Coreプロセッサの場合、周波数を単一周波数に設定できるというアイデアはフィクションです。スケーリングドライバが単一のP状態を選択しても、プロセッサが実行される実際の周波数はプロセッサ自体から選択される。

だから、これを行う信頼できる方法はありません。、P状態は推奨事項に過ぎず、ハードウェアは引き続き自分自身で決定を下します。私のプロセッサ(Intel J4105)では、ハードウェアはソフトウェアの設定を完全に無視しているようです。

関連情報