第15章 パフォーマンスプロファイルを使用した低レイテンシーを実現するためのノードのチューニング
ノードをチューニングして低レイテンシーを実現するには、クラスターパフォーマンスプロファイルを使用します。インフラストラクチャーおよびアプリケーションコンテナーの CPU を制限したり、huge page やハイパースレッディングを設定したり、レイテンシーの影響を受けやすいプロセスの CPU パーティションを設定したりすることができます。
15.1. パフォーマンスプロファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
Performance Profile Creator (PPC) ツールを使用して、クラスターパフォーマンスプロファイルを作成できます。PPC は Node Tuning Operator の機能です。
PPC は、クラスターに関する情報とユーザー指定の設定を組み合わせて、ハードウェア、トポロジー、ユースケースに適したパフォーマンスプロファイルを生成します。
パフォーマンスプロファイルは、クラスターが基盤となるハードウェアリソースに直接アクセスできるベアメタル環境にのみ適用されます。シングルノード OpenShift とマルチノードクラスターの両方に対してパフォーマンスプロファイルを設定できます。
以下は、クラスターでパフォーマンスプロファイルを作成して適用するための大まかなワークフローです。
-
パフォーマンス設定の対象となるノードのマシン設定プール (MCP) を作成します。シングルノード OpenShift クラスターでは、クラスター内にノードが 1 つしかないため、
masterMCP を使用する必要があります。 -
must-gatherコマンドを使用してクラスターに関する情報を収集します。 次のいずれかの方法で PPC ツールを使用してパフォーマンスプロファイルを作成します。
- Podman を使用して PPC ツールを実行します。
- ラッパースクリプトを使用して PPC ツールを実行します。
- ユースケースに合わせてパフォーマンスプロファイルを設定し、そのパフォーマンスプロファイルをクラスターに適用します。
15.1.1. Performance Profile Creator の概要 リンクのコピーリンクがクリップボードにコピーされました!
Performance Profile Creator (PPC) は、Node Tuning Operator とともに提供されるコマンドラインツールで、クラスターのパフォーマンスプロファイルを作成するのに役立ちます。
最初に、PPC ツールを使用して must-gather データを処理し、次の情報を含むクラスターの主要なパフォーマンス設定を表示できます。
- 割り当てられた CPU ID でパーティショニングされた NUMA セル
- ハイパースレッディングノード設定
この情報を使用して、パフォーマンスプロファイルを設定することができます。
PPC の実行
PPC ツールにパフォーマンス設定引数を指定して、ハードウェア、トポロジー、およびユースケースに適した提案されたパフォーマンスプロファイルを生成します。
次のいずれかの方法で PPC を実行できます。
- Podman を使用して PPC を実行する
- ラッパースクリプトを使用して PPC を実行する
ラッパースクリプトを使用すると、より細かい Podman タスクの一部が実行可能なスクリプトに抽象化されます。たとえば、ラッパースクリプトは、必要なコンテナーイメージをプルして実行したり、コンテナーにディレクトリーをマウントしたり、Podman を介してコンテナーに直接パラメーターを提供したりといったタスクを処理します。どちらの方法でも同じ結果が得られます。
15.1.2. パフォーマンスチューニングの対象となるノードにマシン設定プールを作成する リンクのコピーリンクがクリップボードにコピーされました!
マルチノードクラスターの場合、マシン設定プール (MCP) を定義して、パフォーマンスプロファイルで設定するターゲットノードを識別できます。
シングルノード OpenShift クラスターでは、クラスター内にノードが 1 つしかないため、master MCP を使用する必要があります。シングルノード OpenShift クラスター用に個別の MCP を作成する必要はありません。
前提条件
-
cluster-adminロールへのアクセス権がある。 -
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、設定用のターゲットノードにラベルを付けます。
oc label node <node_name> node-role.kubernetes.io/worker-cnf=""
$ oc label node <node_name> node-role.kubernetes.io/worker-cnf=""1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<node_name>をノードの名前に置き換えます。この例では、worker-cnfラベルを適用します。
ターゲットノードを含む
MachineConfigPoolリソースを作成します。MachineConfigPoolリソースを定義する YAML ファイルを作成します。mcp-worker-cnf.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
MachineConfigPoolリソースを適用します。oc apply -f mcp-worker-cnf.yaml
$ oc apply -f mcp-worker-cnf.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
machineconfigpool.machineconfiguration.openshift.io/worker-cnf created
machineconfigpool.machineconfiguration.openshift.io/worker-cnf createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、クラスター内のマシン設定プールを確認します。
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c7c3c1b4ed5ffef95234d451490 True False False 3 3 3 0 6h46m worker rendered-worker-168f52b168f151e4f853259729b6azc4 True False False 2 2 2 0 6h46m worker-cnf rendered-worker-cnf-168f52b168f151e4f853259729b6azc4 True False False 1 1 1 0 73s
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c7c3c1b4ed5ffef95234d451490 True False False 3 3 3 0 6h46m worker rendered-worker-168f52b168f151e4f853259729b6azc4 True False False 2 2 2 0 6h46m worker-cnf rendered-worker-cnf-168f52b168f151e4f853259729b6azc4 True False False 1 1 1 0 73sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
15.1.3. PPC 用のクラスターに関するデータを収集する リンクのコピーリンクがクリップボードにコピーされました!
Performance Profile Creator (PPC) ツールには must-gather データが必要です。クラスター管理者は、must-gather コマンドを実行し、クラスターに関する情報を取得します。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。 - パフォーマンスプロファイルを使用して設定するターゲット MCP を特定している。
手順
-
must-gatherデータを保存するディレクトリーに移動します。 次のコマンドを実行してクラスター情報を収集します。
oc adm must-gather
$ oc adm must-gatherCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
must-gather.local.1971646453781853027のような命名形式で、ローカルディレクトリーにmust-gatherデータを含むフォルダーを作成します。オプション:
must-gatherディレクトリーから圧縮ファイルを作成します。tar cvaf must-gather.tar.gz <must_gather_folder>
$ tar cvaf must-gather.tar.gz <must_gather_folder>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
must-gatherデータフォルダーの名前に置き換えます。
注記Performance Profile Creator ラッパースクリプトを実行している場合は、出力を圧縮する必要があります。
15.1.4. Podman を使用した Performance Profile Creator の実行 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、Podman と Performance Profile Creator (PPC) を使用してパフォーマンスプロファイルを作成できます。
PPC 引数の詳細は、Performance Profile Creator の引数 のセクションを参照してください。
PPC は、クラスターからの must-gather データを使用して、パフォーマンスプロファイルを作成します。パフォーマンス設定の対象となるノードのラベルを変更するなど、クラスターに変更を加えた場合は、PPC を再度実行する前に、must-gather データを再作成する必要があります。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - ベアメタルハードウェアにクラスターがインストールされている。
-
podmanと OpenShift CLI (oc) がインストールされている。 - Node Tuning Operator イメージにアクセスできる。
- 設定のターゲットノードを含むマシン設定プールが特定されている。
-
クラスターの
must-gatherデータにアクセスできる。
手順
次のコマンドを実行して、マシン設定プールを確認します。
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c8c3c0b4ed5feef95434d455490 True False False 3 3 3 0 8h worker rendered-worker-668f56a164f151e4a853229729b6adc4 True False False 2 2 2 0 8h worker-cnf rendered-worker-cnf-668f56a164f151e4a853229729b6adc4 True False False 1 1 1 0 79m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-58433c8c3c0b4ed5feef95434d455490 True False False 3 3 3 0 8h worker rendered-worker-668f56a164f151e4a853229729b6adc4 True False False 2 2 2 0 8h worker-cnf rendered-worker-cnf-668f56a164f151e4a853229729b6adc4 True False False 1 1 1 0 79mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Podman を使用して
registry.redhat.ioに認証します。podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow Username: <user_name> Password: <password>
Username: <user_name> Password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、PPC ツールのヘルプを表示します。
podman run --rm --entrypoint performance-profile-creator registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 -h
$ podman run --rm --entrypoint performance-profile-creator registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターに関する情報を表示するには、次のコマンドを実行して、
log引数を指定した PPC ツールを実行します。podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --info log --must-gather-dir-path /must-gather
$ podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --info log --must-gather-dir-path /must-gatherCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
--entrypoint performance-profile-creatorは、podmanへの新しいエントリーポイントとして、パフォーマンスプロファイルクリエーターを定義します。 -v <path_to_must_gather>は、次のいずれかのコンポーネントへのパスを指定します。-
must-gatherデータが含まれるディレクトリー。 -
must-gatherの展開された .tar ファイルを含む既存のディレクトリー
-
--info logは、出力形式の値を指定します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
次のコマンドを実行して、パフォーマンスプロファイルを作成します。この例では、サンプルの PPC 引数と値を使用します。
podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --must-gather-dir-path /must-gather --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml
$ podman run --entrypoint performance-profile-creator -v <path_to_must_gather>:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.16 --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --must-gather-dir-path /must-gather --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -v <path_to_must_gather>は、次のいずれかのコンポーネントへのパスを指定します。-
must-gatherデータが含まれるディレクトリー。 -
must-gatherの展開された .tar ファイルを含むディレクトリー。
-
-
--mcp-name=worker-cnfは、worker-cnfマシン設定プールを指定します。 -
--reserved-cpu-count=1は、予約済みの CPU を 1 つ指定します。 -
--rt-kernel=trueは、リアルタイムカーネルを有効にします。 -
--split-reserved-cpus-across-numa=falseは、NUMA ノード間での予約済み CPU の分割を無効にします。 -
--power-consumption-mode=ultra-low-latencyは、消費電力の増加を代償にして、レイテンシーを最小限に抑えることを指定します。 --offlined-cpu-count=1は、1 つの CPU をオフライン化することを指定します。注記この例の
mcp-name引数は、コマンドoc get mcpの出力に基づいてworker-cnfに設定されます。シングルノード OpenShift の場合は、--mcp-name=masterを使用します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、作成された YAML ファイルを確認します。
cat my-performance-profile.yaml
$ cat my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成されたプロファイルを適用します。
oc apply -f my-performance-profile.yaml
$ oc apply -f my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
performanceprofile.performance.openshift.io/performance created
performanceprofile.performance.openshift.io/performance createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
15.1.5. Performance Profile Creator ラッパースクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
ラッパースクリプトは、Performance Profile Creator (PPC) ツールを使用してパフォーマンスプロファイルを作成するプロセスを簡素化します。このスクリプトは、必要なコンテナーイメージのプルと実行、コンテナーへのディレクトリーのマウント、Podman を介してコンテナーに直接パラメーターを提供するなどのタスクを処理します。
Performance Profile Creator の引数の詳細は、Performance Profile Creator の引数 のセクションを参照してください。
PPC は、クラスターからの must-gather データを使用して、パフォーマンスプロファイルを作成します。パフォーマンス設定の対象となるノードのラベルを変更するなど、クラスターに変更を加えた場合は、PPC を再度実行する前に、must-gather データを再作成する必要があります。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - ベアメタルハードウェアにクラスターがインストールされている。
-
podmanと OpenShift CLI (oc) がインストールされている。 - Node Tuning Operator イメージにアクセスできる。
- 設定のターゲットノードを含むマシン設定プールが特定されている。
-
must-gathertarball にアクセスできる。
手順
ローカルマシンにファイル (例:
run-perf-profile-creator.sh) を作成します。vi run-perf-profile-creator.sh
$ vi run-perf-profile-creator.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルに以下のコードを貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このスクリプトの実行権限を全員に追加します。
chmod a+x run-perf-profile-creator.sh
$ chmod a+x run-perf-profile-creator.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Podman を使用して
registry.redhat.ioに認証します。podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow Username: <user_name> Password: <password>
Username: <user_name> Password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、PPC ツールのヘルプを表示します。
./run-perf-profile-creator.sh -h
$ ./run-perf-profile-creator.sh -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記オプションで、
-pオプションを使用して Node Tuning Operator イメージのパスを設定できます。パスを設定しない場合、このラッパースクリプトはデフォルトのイメージ (registry.redhat.io/openshift4/ose-cluster-node-tuning-rhel9-operator:v4.19) を使用します。クラスターに関する情報を表示するには、次のコマンドを実行して、
log引数を指定した PPC ツールを実行します。./run-perf-profile-creator.sh -t /<path_to_must_gather_dir>/must-gather.tar.gz -- --info=log
$ ./run-perf-profile-creator.sh -t /<path_to_must_gather_dir>/must-gather.tar.gz -- --info=logCopy to Clipboard Copied! Toggle word wrap Toggle overflow -t /<path_to_must_gather_dir>/must-gather.tar.gzは、must-gather tarball を含むディレクトリーへのパスを指定します。これはラッパースクリプトに必要な引数です。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、パフォーマンスプロファイルを作成します。
./run-perf-profile-creator.sh -t /path-to-must-gather/must-gather.tar.gz -- --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yaml
$ ./run-perf-profile-creator.sh -t /path-to-must-gather/must-gather.tar.gz -- --mcp-name=worker-cnf --reserved-cpu-count=1 --rt-kernel=true --split-reserved-cpus-across-numa=false --power-consumption-mode=ultra-low-latency --offlined-cpu-count=1 > my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、サンプルの PPC 引数と値を使用します。
-
--mcp-name=worker-cnfは、worker-cnfマシン設定プールを指定します。 -
--reserved-cpu-count=1は、予約済みの CPU を 1 つ指定します。 -
--rt-kernel=trueは、リアルタイムカーネルを有効にします。 -
--split-reserved-cpus-across-numa=falseは、NUMA ノード間での予約済み CPU の分割を無効にします。 -
--power-consumption-mode=ultra-low-latencyは、消費電力の増加を代償にして、レイテンシーを最小限に抑えることを指定します。 --offlined-cpu-count=1は、1 つの CPU をオフライン化することを指定します。注記この例の
mcp-name引数は、コマンドoc get mcpの出力に基づいてworker-cnfに設定されます。シングルノード OpenShift の場合は、--mcp-name=masterを使用します。
-
次のコマンドを実行して、作成された YAML ファイルを確認します。
cat my-performance-profile.yaml
$ cat my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成されたプロファイルを適用します。
oc apply -f my-performance-profile.yaml
$ oc apply -f my-performance-profile.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
performanceprofile.performance.openshift.io/performance created
performanceprofile.performance.openshift.io/performance createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
15.1.6. Performance Profile Creator の引数 リンクのコピーリンクがクリップボードにコピーされました!
| 引数 | 説明 |
|---|---|
|
|
ターゲットマシンに対応する |
|
| must gather ディレクトリーのパス。
この引数は、Podman を使用して PPC ツールを実行する場合にのみ必要です。ラッパースクリプトで PPC を使用する場合は、この引数を使用しないでください。代わりに、ラッパースクリプトの |
|
| 予約された CPU の数。ゼロより大きい自然数を使用してください。 |
|
| リアルタイムカーネルを有効にします。
使用できる値は |
| 引数 | 説明 |
|---|---|
|
| ハイパースレッディングを無効にします。
使用できる値は
デフォルト: 警告
この引数が |
| enable-hardware-tuning | 最大 CPU 周波数の設定を有効にします。 この機能を有効にするには、次の両方のフィールドで、分離された予約済み CPU 上で実行されるアプリケーションの最大周波数を設定します。
これは高度な機能です。ハードウェアチューニングを設定すると、生成された |
|
|
クラスター情報を取得します。この引数には、 以下の値を使用できます。
デフォルト: |
|
| オフライン化する CPU の数。 注記 ゼロより大きい自然数を使用してください。十分な数の論理プロセッサーがオフラインになっていない場合、エラーメッセージがログに記録されます。メッセージは次のとおりです。 Error: failed to compute the reserved and isolated CPUs: please ensure that reserved-cpu-count plus offlined-cpu-count should be in the range [0,1]
Error: failed to compute the reserved and isolated CPUs: please specify the offlined CPU count in the range [0,1]
|
|
| 電力消費モード。 以下の値を使用できます。
デフォルト: |
|
|
Pod ごとの電源管理を有効にします。電力消費モードとして
使用できる値は
デフォルト: |
|
| 作成するパフォーマンスプロファイルの名前。
デフォルト: |
|
| NUMA ノード全体で予約された CPU を分割します。
使用できる値は
デフォルト: |
|
| 作成するパフォーマンスプロファイルの kubelet Topology Manager ポリシー。 以下の値を使用できます。
デフォルト: |
|
| ユーザーレベルのネットワーク (DPDK) を有効にして実行します。
使用できる値は
デフォルト: |
15.1.7. リファレンスパフォーマンスプロファイル リンクのコピーリンクがクリップボードにコピーされました!
次のリファレンスパフォーマンスプロファイルをベースに、独自のカスタムプロファイルを作成してください。
15.1.7.1. OpenStack で OVS-DPDK を使用するクラスター用のパフォーマンスプロファイルテンプレート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) で Open vSwitch と Data Plane Development Kit (OVS-DPDK) を使用するクラスターでマシンのパフォーマンスを最大化するには、パフォーマンスプロファイルを使用できます。
次のパフォーマンスプロファイルテンプレートを使用して、デプロイメント用のプロファイルを作成できます。
OVS-DPDK を使用するクラスター用のパフォーマンスプロファイルテンプレート
CPU_ISOLATED キー、CPU_RESERVED キー、および HUGEPAGES_COUNT キーの設定に適した値を入力します。
15.1.7.2. 通信事業者 RAN DU リファレンス設計のパフォーマンスプロファイル リンクのコピーリンクがクリップボードにコピーされました!
次のパフォーマンスプロファイルは、通信事業者の RAN DU ワークロードをホストするコモディティーハードウェア上の OpenShift Container Platform クラスターのパフォーマンス設定を指定するものです。
通信事業者 RAN DU リファレンス設計のパフォーマンスプロファイル
15.1.7.3. 通信事業者コアリファレンス設計パフォーマンスプロファイル リンクのコピーリンクがクリップボードにコピーされました!
次のパフォーマンスプロファイルは、通信事業者コアワークロードをホストするコモディティーハードウェア上の OpenShift Container Platform クラスターのパフォーマンス設定をノードレベルで指定します。
通信事業者コアリファレンス設計パフォーマンスプロファイル