10.7. チューニング変更の適用の延期
管理者は、Node Tuning Operator (NTO) を使用して、実行中のシステム上のカスタムリソース (CR) を更新し、チューニングの変更を行います。たとえば、チューニングするオブジェクトの [sysctl] セクションで sysctl パラメーターを更新または追加することがあります。管理者がチューニングの変更を適用すると、NTO は TuneD にすべての設定を再処理するように要求します。その結果、チューニングされるプロセスですべてのチューニングがロールバックされてから再適用されます。
レイテンシーの影響を受けやすいアプリケーションでは、パフォーマンスが一時的に低下する可能性があるため、TuneD プロファイルの削除と再適用が許容されない場合があります。これは、CPU パーティショニングを実行し、パフォーマンスプロファイルを使用してプロセスまたは割り込みのアフィニティーを管理する設定の場合に特に重要です。この問題を回避するために、OpenShift Container Platform ではチューニングの変更を適用するための新しい方法が導入されました。OpenShift Container Platform 4.17 より前は、利用できる方法は immediate だけでした。この方法では、変更がすぐに適用され、多くの場合、チューニングされた再起動がトリガーされていました。
これに加えて次の方法がサポートされています。
-
always: すべての変更が次回のノードの再起動時に適用されます。 -
update: チューニングの変更によって TuneD プロファイルが変更されると、デフォルトですぐに適用され、できるだけ早く反映されます。チューニングの変更によって TuneD プロファイルが変更されず、プロファイルの値がその場で変更された場合、変更は always として処理されます。
この機能を有効にするには、アノテーション tuned.openshift.io/deferred を追加します。次の表は、アノテーションに使用できる値をまとめたものです。
| アノテーション値 | 説明 |
|---|---|
| missing | 変更がすぐに適用されます。 |
| always | 変更が次回のノードの再起動時に適用されます。 |
| update | 変更によってプロファイルが変更された場合はすぐに適用されます。それ以外の場合は次のノードの再起動時に適用されます。 |
次の例は、always 方式を使用して kernel.shmmni sysctl パラメーターに変更を適用する方法を示しています。
例
apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
name: performance-patch
namespace: openshift-cluster-node-tuning-operator
annotations:
tuned.openshift.io/deferred: "always"
spec:
profile:
- name: performance-patch
data: |
[main]
summary=Configuration changes profile inherited from performance created tuned
include=openshift-node-performance-performance
[sysctl]
kernel.shmmni=8192
recommend:
- machineConfigLabels:
machineconfiguration.openshift.io/role: worker-cnf
priority: 19
profile: performance-patch
10.7.1. チューニング変更の適用の延期: 例 リンクのコピーリンクがクリップボードにコピーされました!
次の実例では、Node Tuning Operator を使用してチューニング変更の適用を延期する方法を説明します。
前提条件
-
cluster-adminロールへのアクセス権がある。 - クラスターにパフォーマンスプロファイルを適用した。
-
プロファイルが指定のノードにのみ適用されるように、
MachineConfigPoolリソース (worker-cnfなど) が設定されている。
手順
次のコマンドを実行して、クラスターに現在適用されているプロファイルを確認します。
$ oc -n openshift-cluster-node-tuning-operator get tuned出力例
NAME AGE default 63m openshift-node-performance-performance 21m次のコマンドを実行して、クラスター内のマシン設定プールを確認します。
$ oc get mcp出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-79a26af9f78ced61fa8ccd309d3c859c True False False 3 3 3 0 157m worker rendered-worker-d9352e91a1b14de7ef453fa54480ce0e True False False 2 2 2 0 157m worker-cnf rendered-worker-cnf-f398fc4fcb2b20104a51e744b8247272 True False False 1 1 1 0 92m次のコマンドを実行して、現在適用されているパフォーマンスプロファイルの情報を表示します。
$ oc describe performanceprofile performance | grep Tuned出力例
Tuned: openshift-cluster-node-tuning-operator/openshift-node-performance-performancekernel.shmmnisysctl パラメーターの既存の値を確認します。次のコマンドを実行してノード名を表示します。
$ oc get nodes出力例
NAME STATUS ROLES AGE VERSION ip-10-0-26-151.ec2.internal Ready worker,worker-cnf 116m v1.30.6 ip-10-0-46-60.ec2.internal Ready worker 115m v1.30.6 ip-10-0-52-141.ec2.internal Ready control-plane,master 123m v1.30.6 ip-10-0-6-97.ec2.internal Ready control-plane,master 121m v1.30.6 ip-10-0-86-145.ec2.internal Ready worker 117m v1.30.6 ip-10-0-92-228.ec2.internal Ready control-plane,master 123m v1.30.6次のコマンドを実行して、ノード
ip-10-0-32-74.ec2.internalのkernel.shmmnisysctl パラメーターの現在の値を表示します。$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmni出力例
kernel.shmmni = 4096
kernel.shmmnisysctl パラメーターを8192に変更するプロファイルパッチ (例:perf-patch.yaml) を作成します。次の設定を適用し、always方式を使用して、変更の適用を新しい手動再起動まで延期します。apiVersion: tuned.openshift.io/v1 kind: Tuned metadata: name: performance-patch namespace: openshift-cluster-node-tuning-operator annotations: tuned.openshift.io/deferred: "always" spec: profile: - name: performance-patch data: | [main] summary=Configuration changes profile inherited from performance created tuned include=openshift-node-performance-performance1 [sysctl] kernel.shmmni=81922 recommend: - machineConfigLabels: machineconfiguration.openshift.io/role: worker-cnf3 priority: 19 profile: performance-patch次のコマンドを実行してプロファイルのパッチを適用します。
$ oc apply -f perf-patch.yaml次のコマンドを実行して、プロファイルのパッチが次のノードの再起動を待機していることを確認します。
$ oc -n openshift-cluster-node-tuning-operator get profile出力例
NAME TUNED APPLIED DEGRADED MESSAGE AGE ip-10-0-26-151.ec2.internal performance-patch False True The TuneD daemon profile is waiting for the next node restart: performance-patch 126m ip-10-0-46-60.ec2.internal openshift-node True False TuneD profile applied. 125m ip-10-0-52-141.ec2.internal openshift-control-plane True False TuneD profile applied. 130m ip-10-0-6-97.ec2.internal openshift-control-plane True False TuneD profile applied. 130m ip-10-0-86-145.ec2.internal openshift-node True False TuneD profile applied. 126m ip-10-0-92-228.ec2.internal openshift-control-plane True False TuneD profile applied. 130m再起動する前に、
kernel.shmmnisysctl パラメーターの値が変更されていないことを確認します。次のコマンドを実行して、ノード
ip-10-0-26-151.ec2.internalのkernel.shmmnisysctl パラメーターへのperformance-patchの変更が適用されていないことを確認します。$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host sysctl kernel.shmmni出力例
kernel.shmmni = 4096
次のコマンドを実行して、ノード
ip-10-0-26-151.ec2.internalを再起動し、必要な変更を適用します。$ oc debug node/ip-10-0-26-151.ec2.internal -q -- chroot host reboot&別のターミナルウィンドウで次のコマンドを実行して、ノードが再起動したことを確認します。
$ watch oc get nodesノード
ip-10-0-26-151.ec2.internalがReady状態に戻るまで待ちます。次のコマンドを実行して、プロファイルのパッチが次のノードの再起動を待機していることを確認します。
$ oc -n openshift-cluster-node-tuning-operator get profile出力例
NAME TUNED APPLIED DEGRADED MESSAGE AGE ip-10-0-20-251.ec2.internal performance-patch True False TuneD profile applied. 3h3m ip-10-0-30-148.ec2.internal openshift-control-plane True False TuneD profile applied. 3h8m ip-10-0-32-74.ec2.internal openshift-node True True TuneD profile applied. 179m ip-10-0-33-49.ec2.internal openshift-control-plane True False TuneD profile applied. 3h8m ip-10-0-84-72.ec2.internal openshift-control-plane True False TuneD profile applied. 3h8m ip-10-0-93-89.ec2.internal openshift-node True False TuneD profile applied. 179m再起動後に
kernel.shmmnisysctl パラメーターの値が変更されたことを確認します。次のコマンドを実行して、
kernel.shmmnisysctl パラメーターの変更がノードip-10-0-32-74.ec2.internalに適用されていることを確認します。$ oc debug node/ip-10-0-32-74.ec2.internal -q -- chroot host sysctl kernel.shmmni出力例
kernel.shmmni = 8192
もう一度再起動すると、kernel.shmmni sysctl パラメーターの元の値が復元されます。