13.2. CPU 관리자 설정
CPU 관리자를 설정하려면 다음을 수행합니다.
선택적으로 노드에 레이블을 지정합니다.
oc label node perf-node.example.com cpumanager=true
# oc label node perf-node.example.com cpumanager=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 노드에서 CPU 관리자 지원을 활성화합니다.
oc edit configmap <name> -n openshift-node
# oc edit configmap <name> -n openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
oc edit cm node-config-compute -n openshift-node
# oc edit cm node-config-compute -n openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart atomic-openshift-node
# systemctl restart atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
system-reserved
는 필수 설정입니다. 환경에 따라 값을 조정해야 할 수 있습니다.
코어를 하나 이상 요청하는 Pod를 생성합니다. 제한 및 요청 둘 다 해당 CPU 값이 정수로 설정되어야 합니다. 해당 숫자는 이 Pod 전용으로 사용할 코어 수입니다.
cat cpumanager.yaml
# cat cpumanager.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod를 생성합니다.
oc create -f cpumanager.yaml
# oc create -f cpumanager.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 레이블 지정한 노드에 Pod가 예약되어 있는지 검증합니다.
oc describe pod cpumanager
# oc describe pod cpumanager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroups
가 올바르게 설정되었는지 검증합니다. pause 프로세스의 PID를 가져옵니다.systemd-cgls -l
# systemd-cgls -l
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
├─1 /usr/lib/systemd/systemd --system --deserialize 20 ├─kubepods.slice │ ├─kubepods-pod0ec1ab8b_e1c4_11e7_bb22_027b30990a24.slice │ │ ├─docker-b24e29bc4021064057f941dc5f3538595c317d294f2c8e448b5e61a29c026d1c.scope │ │ │ └─44216 /pause
├─1 /usr/lib/systemd/systemd --system --deserialize 20 ├─kubepods.slice │ ├─kubepods-pod0ec1ab8b_e1c4_11e7_bb22_027b30990a24.slice │ │ ├─docker-b24e29bc4021064057f941dc5f3538595c317d294f2c8e448b5e61a29c026d1c.scope │ │ │ └─44216 /pause
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QoS 계층
Guaranteed
의 Pod는kubepods.slice
에 배치됩니다. 다른 QoS 계층의 Pod는kubepods
의 하위cgroups
에 있습니다.cd /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-pod0ec1ab8b_e1c4_11e7_bb22_027b30990a24.slice/docker-b24e29bc4021064057f941dc5f3538595c317d294f2c8e448b5e61a29c026d1c.scope for i in `ls cpuset.cpus tasks` ; do echo -n "$i "; cat $i ; done
# cd /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-pod0ec1ab8b_e1c4_11e7_bb22_027b30990a24.slice/docker-b24e29bc4021064057f941dc5f3538595c317d294f2c8e448b5e61a29c026d1c.scope # for i in `ls cpuset.cpus tasks` ; do echo -n "$i "; cat $i ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
cpuset.cpus 2 tasks 44216
cpuset.cpus 2 tasks 44216
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작업에 허용되는 CPU 목록을 확인합니다.
grep ^Cpus_allowed_list /proc/44216/status
# grep ^Cpus_allowed_list /proc/44216/status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Cpus_allowed_list: 2
Cpus_allowed_list: 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템의 다른 Pod(이 경우
burstable
QoS 계층의 Pod)가Guaranteed
Pod에 할당된 코어에서 실행할 수 없는지 확인합니다.cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podbe76ff22_dead_11e7_b99e_027b30990a24.slice/docker-da621bea7569704fc39f84385a179923309ab9d832f6360cccbff102e73f9557.scope/cpuset.cpus 0-1,3
# cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podbe76ff22_dead_11e7_b99e_027b30990a24.slice/docker-da621bea7569704fc39f84385a179923309ab9d832f6360cccbff102e73f9557.scope/cpuset.cpus 0-1,3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe node perf-node.example.com
# oc describe node perf-node.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 VM에는 4개의 CPU 코어가 있습니다.
system-reserved
를 500밀리코어로 설정했습니다. 즉,Node Allocatable
수량에 도달할 노드의 총 용량에서 하나의 코어의 절반이 감산됩니다.Allocatable CPU
는 3500밀리코어임을 알 수 있습니다. 즉, 각 코어가 하나의 전체 코어를 사용하므로 세 개의 CPU 관리자 Pod를 실행할 수 있습니다. 전체 코어는 1000밀리코어에 해당합니다.네 번째 Pod를 예약하려는 경우 시스템은 Pod를 허용하지만 예약되지는 않습니다.
oc get pods --all-namespaces |grep test
# oc get pods --all-namespaces |grep test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
test cpumanager-4gdtn 1/1 Running 0 8m test cpumanager-hczts 1/1 Running 0 8m test cpumanager-nb9d5 0/1 Pending 0 8m test cpumanager-r9wrq 1/1 Running 0 8m
test cpumanager-4gdtn 1/1 Running 0 8m test cpumanager-hczts 1/1 Running 0 8m test cpumanager-nb9d5 0/1 Pending 0 8m test cpumanager-r9wrq 1/1 Running 0 8m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow