3.7. NUMA 인식 스케줄링을 위한 SR-IOV 네트워크 토폴로지 제외
SR-IOV 네트워크 리소스의 NUMA(Non-Uniform Memory Access) 노드를 토폴로지 관리자로 알리기 위해 SriovNetworkNodePolicy
사용자 정의 리소스에서 excludeTopology
사양을 구성할 수 있습니다. NUMA 인식 Pod 예약 중에 보다 유연한 SR-IOV 네트워크 배포를 위해 이 구성을 사용합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
CPU 관리자 정책을
static
으로 구성했습니다. CPU 관리자에 대한 자세한 내용은 추가 리소스 섹션을 참조하십시오. -
토폴로지 관리자 정책을
single-numa-node
로 구성했습니다. - SR-IOV Network Operator가 설치되어 있습니다.
프로세스
SriovNetworkNodePolicy
CR을 생성합니다.다음 YAML을
sriov-network-node-policy.yaml
파일에 저장하고 YAML의 값을 해당 환경과 일치하도록 교체합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고많은
SriovNetworkNodePolicy
리소스가 SR-IOV 네트워크 리소스를 대상으로 하는 경우SriovNetworkNodePolicy
리소스에excludeTopology
사양과 동일한 값이 있어야 합니다. 그러지 않으면 충돌하는 정책이 거부됩니다.다음 명령을 실행하여
SriovNetworkNodePolicy
리소스를 생성합니다. 성공적인 출력에는SriovNetworkNodePolicy
리소스의 이름과생성된
상태가 나열됩니다.oc create -f sriov-network-node-policy.yaml
$ oc create -f sriov-network-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
SriovNetwork
CR을 생성합니다.다음 YAML을
sriov-network.yaml
파일에 저장하고 YAML의 값을 해당 환경과 일치하도록 교체합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
SriovNetwork
리소스를 생성합니다. 성공적인 출력에는SriovNetwork
리소스의 이름과생성된
상태가 나열됩니다.oc create -f sriov-network.yaml
$ oc create -f sriov-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod를 생성하고 이전 단계의 SR-IOV 네트워크 리소스를 할당합니다.
다음 YAML을
sriov-network-pod.yaml
파일에 저장하고 YAML의 값을 해당 환경과 일치하도록 교체합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SriovNetworkNodePolicy
리소스를 사용하는SriovNetwork
리소스의 이름입니다.
다음 명령을 실행하여
Pod
리소스를 생성합니다. 예상되는 출력에는Pod
리소스의 이름과생성된
상태가 표시됩니다.oc create -f sriov-network-pod.yaml
$ oc create -f sriov-network-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 Pod의 상태를 확인하고 <
pod_name>
을 Pod 이름으로 교체합니다.oc get pod <pod_name>
$ oc get pod <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE test-deployment-sriov-76cbbf4756-k9v72 1/1 Running 0 45h
NAME READY STATUS RESTARTS AGE test-deployment-sriov-76cbbf4756-k9v72 1/1 Running 0 45h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 Pod로 디버그 세션을 열어 SR-IOV 네트워크 리소스가 메모리 및 CPU 리소스와 다른 노드에 배포되었는지 확인합니다.
다음 명령을 실행하여 Pod로 디버그 세션을 열고 <pod_name>을 대상 Pod 이름으로 교체합니다.
oc debug pod/<pod_name>
$ oc debug pod/<pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다. 디버그 Pod는 Pod 내의/host
에 호스트의 root 파일 시스템을 마운트합니다. root 디렉토리를/host
로 변경하면 호스트 파일 시스템에서 바이너리를 실행할 수 있습니다.chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 CPU 할당에 대한 정보를 확인합니다.
lscpu | grep NUMA
$ lscpu | grep NUMA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NUMA node(s): 2 NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,... NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,...
NUMA node(s): 2 NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,... NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /proc/self/status | grep Cpus
$ cat /proc/self/status | grep Cpus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Cpus_allowed: ffff Cpus_allowed_list: 1,3,5,7
Cpus_allowed: ffff Cpus_allowed_list: 1,3,5,7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상되는 출력에는
NUMA
node1과 같은NUMA
노드에 할당되는 CPU(1, 3, 5 및 7)가 표시됩니다. SR-IOV 네트워크 리소스는NUMA node0
과 같은 다른NUMA
노드의 NIC를 사용할 수 있습니다.ffff
16진수 값은 프로세스를 실행하는 CPU 코어를 나타냅니다.cat /sys/class/net/net1/device/numa_node
$ cat /sys/class/net/net1/device/numa_node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력에는
NUMA
노드의 수(예:0
)가 표시됩니다.참고excludeTopology
사양을True
로 설정하면 필요한 리소스가 동일한 NUMA 노드에 존재할 수 있습니다.