web-dev-qa-db-ja.com

CPUガバナーを「パフォーマンス」に設定するとどのような影響がありますか?

最近、ガバナーを「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の消費電力、熱、寿命に影響しますか?

7
Sparhawk

レコードについては、(最新) cpufreqドキュメントはこちら です。

「静的に」とはどういう意味ですか?私にとって、これは「動的」と対照的であり、周波数が決して変わらないことを意味します。つまり、powersaveを使用すると、CPU周波数は常に単一の値であり、scaling_min_freq

あなたが正しい。昔のcpufreqドライバー時代には、動的なものと静的なものの2種類のガバナーがありました。違いは、動的ガバナー(ondemandconservative)はCPU使用率に基づいてCPU周波数を切り替えられるのに対し、静的ガバナー(performancepowersave)は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での最大パフォーマンス)
10
don_crissti

読んでいるページはわかりませんが、wiki.archlinuxの CPU周波数スケーリング のページでは、次のように述べています。

カーネル3.4以降では、必要なモジュールが自動的に読み込まれ、推奨されるオンデマンドガバナーがデフォルトで有効になっています。

ondemandガバナーは、システムに十分な負荷がかかって速度を上げるメリットがある場合、つまりCPUでフルタイムスロットが実行されている場合にCPU速度を上げます。

実行しているガバナーをチェックして、本当にondemand、(/sys/devices/system/cpu/cpufreq/policyN/scaling_governor)おそらくデフォルトから変更する必要はありません。

performancepowersaveは確かに周波数を直接(それぞれ)最大値と最小値に設定しているようで、負荷に応じて周波数を変更しません。


Wikiページでは、Sandy Bridgeシステム以降ではperformanceondemandの役割を担うことについても言及されていることを除いて、これらのマシンのデフォルトでもあります。考えてみてください。システムが十分に新しい場合は、実際に動作しているのを目にしている可能性があります。 wikiの これについて論じている記事 へのリンクを確認してください。

1
ilkkachu