最近、ガバナーを「powersave」ではなく「performance」に設定することで、CPUのパフォーマンスを向上させることができると読みました。 Arch wiki によると、これは「最小周波数」の代わりに「最大周波数でCPUを実行する」ことになります。
この表現がわかりにくいので、 カーネルのドキュメント も読みました。
2.1パフォーマンス
CPUfreqガバナーの「パフォーマンス」は、CPUをstatic_min_freqとscaling_max_freqの境界内で最も高い周波数に静的に設定します。
2.2省電力
CPUfreqガバナー「powersave」は、CPUをstatic_min_freqとscaling_max_freqの境界内で最も低い周波数に静的に設定します。
「静的に」とはどういう意味ですか?私にとって、これは「動的」と対照的であり、周波数が決して変わらないことを意味します。つまり、省電力を使用すると、CPU周波数は常に単一の値になり、 scaling_min_freq
。しかし、これは明らかにそうではありません。現在、デフォルトで「省電力」を実行しています。でCPU周波数を監視できます
$ watch grep \"cpu MHz\" /proc/cpuinfo
それらが動的に変化するのを見てください。
カーネルのドキュメントは「静的に」どういう意味ですか?どのような要素がCPU周波数に影響を及ぼしますか。これらは「省電力」と「パフォーマンス」でどのように変化しますか?したがって、前者から後者に変更することの意味は何ですか?より高い周波数が使用されますか?どのような状況で?具体的には、これはCPUの消費電力、熱、寿命に影響しますか?
レコードについては、(最新) cpufreq
ドキュメントはこちら です。
「静的に」とはどういう意味ですか?私にとって、これは「動的」と対照的であり、周波数が決して変わらないことを意味します。つまり、
powersave
を使用すると、CPU周波数は常に単一の値であり、scaling_min_freq
あなたが正しい。昔のcpufreq
ドライバー時代には、動的なものと静的なものの2種類のガバナーがありました。違いは、動的ガバナー(ondemand
とconservative
)はCPU使用率に基づいてCPU周波数を切り替えられるのに対し、静的ガバナー(performance
とpowersave
)はCPU周波数を変更します。
しかし、お気づきのとおり、新しいドライバーでは
これは明らかにそうではありません。
これは、 intel_pstate
、動作が異なります。 p-states
別名操作のパフォーマンスポイントには、アクティブな電力管理とアイドル状態への競合が含まれます。詳細については、公式ドキュメントを参照してください。
実際の質問については、
CPUガバナーを「パフォーマンス」に設定するとどのような影響がありますか?
同じドキュメントでも回答されています。すべてのSkylake +プロセッサと同様に、CPUの動作モードは-デフォルトで- "HWPを使用するアクティブモード"です。 したがって、performance
ガバナーを使用することの影響は次のとおりです(鉱山を強調):
HWP +パフォーマンス
この構成では
intel_pstate will
書く0
プロセッサのエネルギーパフォーマンス設定(EPP
)ノブ(サポートされている場合)またはそのエネルギーパフォーマンスバイアス(EPB
)ノブ(それ以外の場合)に、 つまり、プロセッサの内部P状態選択ロジックは、完全にパフォーマンスに重点を置くことが期待されます。。これにより、
EPP
インターフェースからのEPB
/sysfs
設定が上書きされます(以下のエネルギーとパフォーマンスのヒントを参照)。
また、この構成では、プロセッサの内部P状態選択ロジックで使用できるP状態の範囲は、常に上限(つまり、ドライバーが使用できる最大P状態)に制限されます。 。
一言で言えば:intel_pstate
は実際にはガバナーとハードウェアドライバーが1つになったものです。次の2つのポリシーをサポートしています。
performance
ポリシーは常に最も高いp-stateを選択します:パフォーマンスを最大化してから、仮想のゼロエネルギー描画状態に戻ります。 「Race to Idle」とも呼ばれますpowersave
ポリシーは、パフォーマンスとエネルギー節約のバランスをとろうとします。CPU使用率に基づいて適切なp-stateを選択します(この特定のp-stateでの負荷、より高いp-stateに移動するとおそらく低下します)。容量(最高のp-stateでの最大パフォーマンス)読んでいるページはわかりませんが、wiki.archlinuxの CPU周波数スケーリング のページでは、次のように述べています。
カーネル3.4以降では、必要なモジュールが自動的に読み込まれ、推奨されるオンデマンドガバナーがデフォルトで有効になっています。
ondemand
ガバナーは、システムに十分な負荷がかかって速度を上げるメリットがある場合、つまりCPUでフルタイムスロットが実行されている場合にCPU速度を上げます。
実行しているガバナーをチェックして、本当にondemand
、(/sys/devices/system/cpu/cpufreq/policyN/scaling_governor
)おそらくデフォルトから変更する必要はありません。
performance
とpowersave
は確かに周波数を直接(それぞれ)最大値と最小値に設定しているようで、負荷に応じて周波数を変更しません。
Wikiページでは、Sandy Bridgeシステム以降ではperformance
がondemand
の役割を担うことについても言及されていることを除いて、これらのマシンのデフォルトでもあります。考えてみてください。システムが十分に新しい場合は、実際に動作しているのを目にしている可能性があります。 wikiの これについて論じている記事 へのリンクを確認してください。