17.3. CPUfreq の概要
システムの消費電力と熱出力を低減する最も効果的な方法の 1 つが CPUfreq です。これは、Red Hat Enterprise Linux 8 の x86 アーキテクチャーおよび ARM64 アーキテクチャーで対応しています。CPUfreq は CPU 速度スケーリングとも呼ばれ、Linux カーネルのインフラストラクチャーで、電力を節約するために CPU 周波数をスケーリングできます。
CPU スケーリングは、Advanced Configuration and Power Interface (ACPI) イベントに応じて、またはユーザー空間プログラムにより手動でシステムの負荷に応じて自動的に行われるため、プロセッサーのクロック速度を即座に調整できます。これにより、システムは減速したクロック速度で実行でき、電力を節約できます。周波数のシフトに関するルール (クロック速度の高速化または低速化、および周波数のシフト) は、CPUfreq ガバナーで定義されています。
root で cpupower frequency-info コマンドを使用すると、cpufreq の情報を表示できます。
17.3.1. CPUfreq ドライバー リンクのコピーリンクがクリップボードにコピーされました!
root で cpupower frequency-info --driver コマンドを使用すると、現在の CPUfreq ドライバーを表示できます。
使用可能な CPUfreq 用のドライバーは、以下の 2 つです。
ACPI CPUfreq- Advanced Configuration and Power Interface (ACPI) の CPUfreq ドライバーは、ACPI を介して特定の CPU の周波数を制御するカーネルドライバーです。これにより、カーネルとハードウェア間の通信が保証されます。
Intel P-stateRed Hat Enterprise Linux 8 では、Intel P-state ドライバーに対応しています。このドライバーは、Intel Xeon E シリーズアーキテクチャーまたは新しいアーキテクチャーに基づくプロセッサーで、P-state 選択を制御するインターフェイスを提供します。
現在、Intel P-state は、対応している CPU にデフォルトで使用されています。
intel_pstate=disableコマンドをカーネルコマンドラインに追加すると、ACPI CPUfreq の使用に切り替えることができます。Intel P-state は、
setpolicy()コールバックを実装します。ドライバーは、cpufreqコアから要求されたポリシーに基づいて、使用する P-state を決定します。プロセッサーが次の P-state を内部で選択できる場合、ドライバーはこの責任をプロセッサーにオフロードします。そうでない場合は、次の P-state を選択するアルゴリズムがドライバーに実装されます。Intel P-state は、P-state の選択を制御する独自の
sysfsファイルを提供します。これらのファイルは、/sys/devices/system/cpu/intel_pstate/ディレクトリーにあります。ファイルに加えた変更は、すべての CPU に適用されます。このディレクトリーには、P-state パラメーターの設定に使用される以下のファイルが含まれます。
-
max_perf_pctは、ドライバーによって要求される最大 P-state を制限します。これは、使用可能なパフォーマンスのパーセンテージで表されます。利用可能な P-state パフォーマンスは、no_turbo設定により削減できます。 -
min_perf_pctは、ドライバーによって要求される最小の P-state を制限します。これは、最大のno-turboパフォーマンスレベルのパーセンテージで表されます。 -
no_turboは、ドライバーを、ターボ周波数レンジの下にある P-state を選択するように制限します。 -
turbo_pctは、対応しているハードウェアのパフォーマンス合計のうち、ターボ領域にあるものの割合を表示します。この数字は、turboが無効になっているかどうかに関係ありません。 -
num_pstatesは、ハードウェアで対応している P-state の数を表示します。この数は、ターボが無効になっているかどうかに関係ありません。
-
17.3.2. コア CPUfreq ガバナー リンクのコピーリンクがクリップボードにコピーされました!
CPUfreq ガバナーは、システム CPU の電源特性を定義します。これは、CPU パフォーマンスに影響を及ぼします。各ガバナーには、ワークロードに関する固有の動作、目的、および適合性があります。cpupower frequency-info --governor コマンドを root で実行すると、利用可能な CPUfreq ガバナーを表示できます。
Red Hat Enterprise Linux 8 には、複数のコア CPUfreq ガバナーが同梱されています。
cpufreq_performance- CPU は、可能な限り最も高いクロック周波数を使用するように強制されています。この周波数は静的に設定され、変更されません。このため、この特定のガバナーでは省電力の利点はありません。これは、ワークロードが重い時間帯にのみ適しており、CPU がめったにアイドル状態にならないか、まったくアイドル状態にならない時間帯にのみ適しています。
cpufreq_powersave-
CPU は、可能な限り最低のクロック周波数を使用するように強制されています。この周波数は静的に設定され、変更されません。このガバナーを使用すると、最大限の電力を削減できますが、CPU パフォーマンスは低くなります。ただし、原則として、全負荷時の低速 CPU は、負荷がかかっていない高速 CPU よりも多くの電力を消費するため、"powersave" という用語は誤解を招く場合があります。したがって、予想される低アクティビティー時に
powersaveガバナーを使用するように CPU を設定することが推奨されますが、その間に予想外の高負荷が発生すると、システムが実際により多くの電力を消費する可能性があります。powersave ガバナーは、省電力というよりも CPU の速度リミッターです。これは、システムや、過熱が問題になる可能性がある環境で最も役立ちます。 cpufreq_ondemand-
これは動的ガバナーで、システムの負荷が高い場合には CPU を有効にして最大クロック周波数を実現し、システムがアイドル状態の場合には最小クロック周波数を実現できます。これにより、システムはシステム負荷に応じて消費電力を調整できますが、周波数切り替えの間の待ち時間はかかります。このため、システムがアイドル状態と高負荷のワークロードを頻繁に切り替える場合、レイテンシーは、
ondemandガバナーが提供するパフォーマンスや省電力の利点を相殺することができます。ほとんどのシステムでは、ondemandガバナーにより、放熱、電力消耗、性能、および管理可能性について最適な妥協点を見つけることができます。システムが 1 日の特定の時間にのみビジー状態の場合、ondemandガバナーは、それ以上の介入なしに、負荷に応じて最大周波数と最小周波数を自動的に切り替えます。 cpufreq_userspace-
これにより、ユーザー空間プログラムや root で実行しているプロセスが、周波数を設定できます。すべてのガバナーの中で、
userspaceは最もカスタマイズ可能で、設定方法に応じて、システムのパフォーマンスと消費の最適なバランスを実現できます。 cpufreq_conservative-
ondemandガバナーと同様に、conservativeガバナーも用途に合わせてクロック周波数を調整します。ただし、conservativeガバナーは、周波数を徐々に切り替えます。つまり、conservativeガバナーは、単に最大/最小を選択するのではなく、負荷に対して最善と思われるクロック周波数に調整されます。これにより、消費電力を大幅に節約できる可能性がありますが、ondemandガバナーよりもはるかに長い遅延が発生します。
cron ジョブを使用して、ガバナーを有効にできます。これにより、指定した時間帯に特定のガバナーを自動的に設定できます。このため、勤務時間後など、アイドル時間帯には低周波ガバナーを指定し、作業負荷が高い時間帯には高周波ガバナーに戻すことができます。
指定したガバナーを有効にする手順については、Setting up CPUfreq governor を参照してください。
17.3.3. Intel P-state の CPUfreq ガバナー リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、Intel P-state ドライバーは、CPU が HWP に対応しているかどうかに応じて、Hardware p-state (HWP) の有無にかかわらずアクティブモードで動作します。
cpupower frequency-info --governor コマンドを root で実行すると、利用可能な CPUfreq ガバナーを表示できます。
performance および powersave Intel P-state CPUfreq ガバナーの機能は、同じ名前のコア CPUfreq ガバナーと比較されます。
Intel P-state ドライバーは、以下の 3 つの異なるモードで動作できます。
Active mode with hardware-managed P-statesHWP でアクティブモードが使用されている場合、Intel P-state ドライバーは、P-state 選択を実行するように CPU に指示します。ドライバーは、周波数のヒントを提供できます。ただし、最終的な選択は CPU の内部ロジックによって異なります。HWP でアクティブモードにすると、Intel P-state ドライバーにより、2 つの P-state 選択アルゴリズムが提供されます。
-
performance:performanceガバナーを使用すると、ドライバーは内部 CPU ロジックにパフォーマンス指向になるように指示します。P-state の範囲は、ドライバーが使用できる範囲の上限に制限されます。 -
powersave:powersaveガバナーを使用すると、ドライバーは、内部 CPU ロジックに省電力指向になるように指示します。
-
Active mode without hardware-managed P-statesHWP を使用しないアクティブモードの場合、Intel P-state ドライバーは次の 2 つの P-state 選択アルゴリズムを提供します。
-
performance:performanceガバナーを使用すると、ドライバーは使用できる最大の P-state を選択します。 -
powersave:powersaveガバナーを使用すると、ドライバーは、現在の CPU 使用率に比例する P-state を選択します。この動作は、ondemandCPUfreq コアガバナーに似ています。
-
パッシブモード-
passiveモードを使用すると、Intel P-state ドライバーは、従来の CPUfreq スケーリングドライバーと同じように機能します。利用可能なすべての汎用 CPUFreq コアガバナーを使用できます。
17.3.4. CPUfreq ガバナーの設定 リンクのコピーリンクがクリップボードにコピーされました!
すべての CPUfreq ドライバーは kernel-tools パッケージに組み込まれ、自動的に選択されます。CPUfreq を設定するには、ガバナーを選択する必要があります。
前提条件
cpupowerを使用するには、kernel-toolsをインストールします。yum install kernel-tools
# yum install kernel-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
特定の CPU で使用できるガバナーを表示します。
cpupower frequency-info --governors
# cpupower frequency-info --governors analyzing CPU 0: available cpufreq governors: performance powersaveCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべての CPU で、ガバナーのいずれかを有効にします。
cpupower frequency-set --governor performance
# cpupower frequency-set --governor performanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、
performanceガバナーを、cpufreqガバナー名に置き換えます。特定のコアでガバナーのみを有効にするには、CPU 番号の範囲またはコンマ区切りのリストで
-cを使用します。たとえば、CPU 1-3 および 5 のuserspaceガバナーを有効にするには、次のコマンドを使用します。cpupower -c 1-3,5 frequency-set --governor cpufreq_userspace
# cpupower -c 1-3,5 frequency-set --governor cpufreq_userspaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
kernel-tools がインストールされていない場合は、/sys/devices/system/cpu/cpuid/cpufreq/ ディレクトリーに CPUfreq 設定が表示されます。設定および値は、この調整可能パラメーターに書き込むことで変更できます。たとえば、最小クロック速度の cpu0 から 360MHz を設定するには、次のコマンドを使用します。
echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
# echo 360000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
検証
ガバナーが有効になっていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現行ポリシーでは、直近で有効になった
cpufreqガバナーが表示されます。この場合、performanceになります。