10.6. PolicyGenTemplates CR を使用して電源状態を設定する
低レイテンシーで高パフォーマンスのエッジデプロイメントでは、C ステートと P ステートを無効にするか制限する必要があります。この設定では、CPU は一定の周波数 (通常は最大ターボ周波数) で実行されます。これにより、CPU が常に最大速度で実行され、高いパフォーマンスと低レイテンシーが実現されます。これにより、ワークロードのレイテンシーが最適化されます。ただし、これは最大の電力消費にもつながり、すべてのワークロードに必要ではない可能性があります。
ワークロードはクリティカルまたは非クリティカルとして分類できます。クリティカルなワークロードでは、高パフォーマンスと低レイテンシーのために C ステートと P ステートの設定を無効にする必要があります。クリティカルでないワークロードでは、C ステートと P ステートの設定を使用して、いくらかのレイテンシーとパフォーマンスを犠牲にします。GitOps Zero Touch Provisioning (ZTP) を使用して、次の 3 つの電源状態を設定できます。
- 高性能モードは、最大の消費電力で超低遅延を提供します。
- パフォーマンスモードは、比較的高い電力消費で低遅延を提供します。
- 省電力は、消費電力の削減と遅延の増加のバランスをとります。
デフォルトの設定は、低遅延のパフォーマンスモードです。
PolicyGenTemplate
カスタムリソース (CR) を使用すると、ztp-site-generate
コンテナーの GitOps プラグインで提供されるベースソース CR に追加の設定の詳細をオーバーレイできます。
group-du-sno-ranGen.yaml
の PolicyGenTemplate
CR に基づいて、参照設定用に生成された PerformanceProfile
CR の workloadHints
フィールドを更新して、電源状態を設定します。
次の共通の前提条件は、3 つの電源状態すべての設定に適用されます。
前提条件
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD のソースリポジトリーとして定義されている必要があります。
- 「GitOps ZTP サイト設定リポジトリーの準備」で説明されている手順に従っている。
10.6.1. PolicyGenTemplate CR を使用してパフォーマンスモードを設定する
この例に従って group-du-sno-ranGen.yaml
の PolicyGenTemplate
CR に基づいて、参照設定用に生成された PerformanceProfile
CR の workloadHints
フィールドを更新してパフォーマンスモードを設定します。
パフォーマンスモードは、比較的高い電力消費で低遅延を提供します。
前提条件
- 「低遅延および高パフォーマンスのためのホストファームウェアの設定」のガイダンスに従って、パフォーマンス関連の設定で BIOS を設定している。
手順
out/argocd/example/policygentemplates
にあるgroup-du-sno-ranGen.yaml
参照ファイルのPerformanceProfile
のPolicyGenTemplate
エントリーを次のように更新して、パフォーマンスモードを設定します。- fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: [...] spec: [...] workloadHints: realTime: true highPowerConsumption: false perPodPowerManagement: false
-
Git で
PolicyGenTemplate
変更をコミットし、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
10.6.2. PolicyGenTemplate CR を使用した高パフォーマンスモードの設定
この例に従って group-du-sno-ranGen.yaml
の PolicyGenTemplate
CR に基づいて、参照設定用に生成された PerformanceProfile
CR の workloadHints
フィールドを更新して高パフォーマンスモードを設定します。
高パフォーマンスモードは、最大の消費電力で超低遅延を提供します。
前提条件
- 「低遅延および高パフォーマンスのためのホストファームウェアの設定」のガイダンスに従って、パフォーマンス関連の設定で BIOS を設定している。
手順
out/argocd/example/policygentemplates
にあるgroup-du-sno-ranGen.yaml
参照ファイルのPerformanceProfile
のPolicyGenTemplate
エントリーを次のように更新して、高パフォーマンスモードを設定します。- fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: [...] spec: [...] workloadHints: realTime: true highPowerConsumption: true perPodPowerManagement: false
-
Git で
PolicyGenTemplate
変更をコミットし、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
10.6.3. PolicyGenTemplate CR を使用した省電力モードの設定
この例に従って group-du-sno-ranGen.yaml
の PolicyGenTemplate
CR に基づいて、参照設定用に生成された PerformanceProfile
CR の workloadHints
フィールドを更新して、省電力モードを設定します。
省電力モードは、消費電力の削減と遅延の増加のバランスをとります。
前提条件
- BIOS で C ステートと OS 制御の P ステートを有効化している。
手順
out/argocd/example/policygentemplates
にあるgroup-du-sno-ranGen.yaml
参照ファイルのPerformanceProfile
のPolicyGenTemplate
エントリーを次のように更新して、省電力モードを設定します。追加のカーネル引数オブジェクトを使用して、省電力モード用に CPU ガバナーを設定することを推奨します。- fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: [...] spec: [...] workloadHints: realTime: true highPowerConsumption: false perPodPowerManagement: true [...] additionalKernelArgs: - [...] - "cpufreq.default_governor=schedutil" 1
- 1
schedutil
ガバナーが推奨されますが、使用できる他のガバナーにはondemand
とpowersave
が含まれます。
-
Git で
PolicyGenTemplate
変更をコミットし、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
検証
次のコマンドを使用して、識別されたノードのリストから、デプロイされたクラスター内のワーカーノードを選択します。
$ oc get nodes
次のコマンドを使用して、ノードにログインします。
$ oc debug node/<node-name>
<node-name>
を、電源状態を確認するノードの名前に置き換えます。/host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストの root ファイルシステムをマウントします。次の例に示すように、ルートディレクトリーを/host
に変更すると、ホストの実行可能パスに含まれるバイナリーを実行できます。# chroot /host
次のコマンドを実行して、適用された電源状態を確認します。
# cat /proc/cmdline
予想される出力
-
省電力モードの
intel_pstate=passive
。
10.6.4. 省電力の最大化
最大の CPU 周波数を制限して、最大の電力節約を実現することを推奨します。最大 CPU 周波数を制限せずに重要でないワークロード CPU で C ステートを有効にすると、重要な CPU の周波数が高くなるため、消費電力の節約の多くが無効になります。
sysfs
プラグインフィールドを更新し、リファレンス設定の TunedPerformancePatch
CR で max_perf_pct
に適切な値を設定することで、電力の節約を最大化します。group-du-sno-ranGen.yaml
に基づくこの例では、最大 CPU 周波数を制限するために従う手順を説明します。
前提条件
- 「PolicyGenTemplate CR を使用した省電力モードの設定」の説明に従って、省電力モードを設定している。
手順
out/argocd/example/policygentemplates
のgroup-du-sno-ranGen.yaml
参照ファイルで、TunedPerformancePatch
のPolicyGenTemplate
エントリーを更新します。電力を最大限に節約するには、次の例に示すようにmax_perf_pct
を追加します。- fileName: TunedPerformancePatch.yaml policyName: "config-policy" spec: profile: - name: performance-patch data: | [...] [sysfs] /sys/devices/system/cpu/intel_pstate/max_perf_pct=<x> 1
- 1
max_perf_pct
は、cpufreq
ドライバーが設定できる最大周波数を、サポートされている最大 CPU 周波数のパーセンテージとして制御します。この値はすべての CPU に適用されます。サポートされている最大周波数は/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
で確認できます。開始点として、All Cores Turbo
周波数ですべての CPU を制限する割合を使用できます。All Cores Turbo
周波数は、すべてのコアがすべて使用されているときに全コアが実行される周波数です。
注記省電力を最大化するには、より低い値を設定します。
max_perf_pct
の値を低く設定すると、最大 CPU 周波数が制限されるため、消費電力が削減されますが、パフォーマンスに影響を与える可能性もあります。さまざまな値を試し、システムのパフォーマンスと消費電力を監視して、ユースケースに最適な設定を見つけてください。-
Git で
PolicyGenTemplate
変更をコミットし、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。