11.2. 진단
추가 설정이 없으면 nova에서 다른 프로세스에서 특정 양의 대규모 페이지 메모리를 사용하는지 알 수 없습니다. 기본적으로 nova는 인스턴스에 모든 대규모 페이지 메모리를 사용할 수 있다고 가정합니다. 이 NUMA 노드에 pCPU가 남아 있고 사용 가능한 hugepage 메모리가 있는 경우 Nova는 먼저 NUMA 노드 0을 채웁니다. 이 문제는 다음과 같은 원인으로 인해 발생할 수 있습니다.
- 요청된 pCPU가 여전히 NUMA 0에 적합합니다.
- 모든 기존 인스턴스의 메모리와 생성된 인스턴스의 메모리를 결합한 메모리는 여전히 NUMA 노드 0에 적합합니다.
- OVS와 같은 다른 프로세스에는 NUMA 노드 0에 일정 양의 hugepage 메모리가 있습니다.
[Errno 12] 메모리 오류를 할당할 수 없도록 대규모 페이지 멀티플라이어와 동일한 플레이버 RAM 양을 할당해야 합니다.
11.2.1. 진단 단계 링크 복사링크가 클립보드에 복사되었습니다!
meminfo를 확인합니다. 다음은 NUMA 노드당 2MB hugepages 및 512개의 사용 가능한 hugepages이 있는 하이퍼바이저를 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow NUMA 아키텍처를 확인합니다.
lscpu | grep -i NUMA NUMA node(s): 2 NUMA node0 CPU(s): 0-3 NUMA node1 CPU(s): 4-7
[root@overcloud-compute-1 nova]# lscpu | grep -i NUMA NUMA node(s): 2 NUMA node0 CPU(s): 0-3 NUMA node1 CPU(s): 4-7Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS에서 예약된 대규모 페이지를 확인합니다. 다음 출력에서 OVS는 NUMA 노드당 512MB의 대규모 페이지를 예약합니다.
ovs-vsctl list Open_vSwitch | grep mem other_config : {dpdk-init="true", dpdk-lcore-mask="3", dpdk-socket-mem="512,512", pmd-cpu-mask="1e"}[root@overcloud-compute-1 virt]# ovs-vsctl list Open_vSwitch | grep mem other_config : {dpdk-init="true", dpdk-lcore-mask="3", dpdk-socket-mem="512,512", pmd-cpu-mask="1e"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 플레이버를 사용하여 인스턴스 배포(1 vCPU 및 512MB 또는 메모리):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 인스턴스가 부팅되고 NUMA 1의 메모리를 사용합니다.
nova list | grep d98772d1-119e-48fa-b1d9-8a68411cba0b | d98772d1-119e-48fa-b1d9-8a68411cba0b | cirros-test0 | ACTIVE | - | Running | provider1=2000:10::f816:3eff:fe8d:a6ef, 10.0.0.102 |
[stack@undercloud-4 ~]$ nova list | grep d98772d1-119e-48fa-b1d9-8a68411cba0b | d98772d1-119e-48fa-b1d9-8a68411cba0b | cirros-test0 | ACTIVE | - | Running | provider1=2000:10::f816:3eff:fe8d:a6ef, 10.0.0.102 |Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow nova boot --nic net-id=$NETID --image cirros --flavor m1.tiny --key-name id_rsa cirros-test0
nova boot --nic net-id=$NETID --image cirros --flavor m1.tiny --key-name id_rsa cirros-test0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 인스턴스가 부팅되지 않습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow compute 노드에서 NUMA 노드 0의 무료 대규모 페이지가 소진되었는지 확인합니다. 그러나 NUMA 노드 1에는 충분한 공간이 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/containers/nova/nova-compute.log의 정보는 인스턴스 CPU가 NUMA 노드 0에 고정되었음을 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
numatune 섹션에서 nodeset="0"은 NUMA 0에서 메모리가 클레임됨을 나타냅니다.