10.7. 튜닝 변경 사항 적용 연기
관리자로서 노드 튜닝 운영자(NTO)를 사용하여 실행 중인 시스템의 사용자 정의 리소스(CR)를 업데이트하고 튜닝을 변경합니다. 예를 들어, 조정된 개체의 [sysctl] 섹션에 sysctl 매개변수를 업데이트하거나 추가할 수 있습니다. 관리자가 튜닝 변경 사항을 적용하면 NTO는 TuneD에 모든 구성을 다시 처리하도록 요청하여 튜닝된 프로세스가 모든 튜닝을 롤백한 다음 다시 적용합니다.
지연 시간에 민감한 애플리케이션의 경우, 조정된 프로필을 제거하고 다시 적용하면 성능이 잠시 저하될 수 있으므로 이를 허용하지 않을 수 있습니다. 이는 성능 프로필을 사용하여 CPU를 분할하고 프로세스 또는 인터럽트 친화성을 관리하는 구성에 특히 중요합니다. 이 문제를 방지하기 위해 OpenShift Container Platform은 튜닝 변경 사항을 적용하기 위한 새로운 방법을 도입했습니다. OpenShift Container Platform 4.17 이전에는 사용 가능한 유일한 방법은 즉시 변경 사항을 적용하여 조정된 재시작을 트리거하는 것이었습니다.
다음과 같은 추가 방법이 지원됩니다.
-
항상: 모든 변경 사항은 다음 노드가 다시 시작될 때 적용됩니다. -
업데이트: 튜닝 변경으로 인해 튜닝된 프로필이 수정되면 기본적으로 즉시 적용되며 가능한 한 빨리 효과가 나타납니다. 튜닝 변경으로 인해 튜닝된 프로필이 변경되지 않고 해당 값이 그대로 수정된 경우에는 항상 그렇듯이 처리됩니다.
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
Topology Aware Lifecycle Manager를 사용하면 여러 스포크 클러스터에 걸쳐 제어된 재부팅을 수행하여 지연된 튜닝 변경 사항을 적용할 수 있습니다. 조정된 재부팅에 대한 자세한 내용은 "구성 변경에 따른 재부팅 조정"을 참조하세요.
10.7.1. 튜닝 변경 사항 적용 연기: 예 링크 복사링크가 클립보드에 복사되었습니다!
다음의 실제 예제에서는 노드 튜닝 연산자를 사용하여 튜닝 변경 사항의 적용을 연기하는 방법을 설명합니다.
사전 요구 사항
-
클러스터 관리자역할 액세스 권한이 있습니다. - 클러스터에 성능 프로필을 적용했습니다.
-
예를 들어,
Worker-cnf와 같은MachineConfigPool리소스는 프로필이 지정된 노드에만 적용되도록 구성됩니다.
프로세스
다음 명령을 실행하여 현재 클러스터에 적용된 프로필을 확인하세요.
$ 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 매개변수에 대한성능 패치변경 사항이 적용되지 않았는지 확인합니다.$ 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이준비상태로 다시 전환될 때까지 기다립니다.다음 명령을 실행하여 프로필 패치가 다음 노드 재시작을 기다리고 있는지 확인하세요.
$ 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 매개변수의 원래 값이 복원됩니다.