Amazon Elastic Compute Cloud(Amazon EC2) Nitro 기반 인스턴스에서 워크로드를 실행하고 있습니다. 성능 및 NUMA 통계를 검토하려면 어떻게 해야 합니까?
간략한 설명
CPU 초과 사용률, 메모리 사용, EBS 볼륨, 네트워크 통계 또는 애플리케이션이 NUMA를 인식하지 못하는 경우 등 EC2 인스턴스에서 호스팅되는 애플리케이션의 성능에 영향을 줄 수 있는 여러 요소가 있습니다. NUMA란 균일하지 않은 메모리 액세스(non-uniform memory access)를 뜻합니다. NUMA 아키텍처에서 각 CPU는 로컬 메모리라고 하는 자체 할당된 메모리에 액세스할 수 있습니다. 각 CPU는 외부 메모리라고 하는 다른 CPU에 할당된 메모리에도 액세스할 수 있습니다. 인스턴스에서 호스팅되는 애플리케이션이 NUMA를 인식하지 못하면 외부 메모리에 액세스할 때 추가 비용이 발생하여 성능에 영향을 줄 수 있습니다.
애플리케이션 공급업체에 문의하여 애플리케이션이 NUMA를 인식하는지 확인하세요.
해결 방법
NUMA 통계 검토
참고: NUMA 통계 이외의 성능 구성 요소를 검토하려면 EC2 인스턴스에서 호스팅되는 웹 사이트에 대한 느린 연결 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.
NUMA 통계를 검토하려면 다음을 수행하세요.
1. 다음 명령을 실행하여 인스턴스 유형이 단일 NUMA 또는 다중 NUMA 노드에 있는지 확인합니다.
참고: 인스턴스 유형 r5.16xlarge에 2개의 NUMA 노드가 있습니다.
lscpu | grep -i numa
NUMA node(s): 2
2. 다음 명령을 실행하여 numactl 패키지를 설치합니다.
sudo yum install numactl
3. 다음 명령을 실행하여 NUMA 토폴로지를 검토합니다.
sudo numactl -H
다음 출력 예에서 NUMA 토폴로지는 노드 0과 노드 1의 두 노드로 나뉩니다. 노드 0에는 32개의 CPU와 255,225MB의 메모리가 할당되어 있습니다. 노드 1에는 CPU의 나머지 절반(32)과 254,924MB의 할당된 메모리가 있습니다. 노드 거리는 다른 노드에서 메모리 페이지에 액세스하는 데 사용된 지연 시간을 나타냅니다.
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
node 0 size: 255140 MB
node 0 free: 254794 MB
node 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 255225 MB
node 1 free: 254924 MB
node distances:
node 0 1
0: 10 21
1: 21 10
4. 다음 명령을 실행하여 NUMA 통계를 검토합니다.
sudo numastat
다음은 명령 출력에 대한 예입니다.
node node0 node1
numa_hit 314825 288025
numa_miss 0 0
numa_foreign 0 0
interleave_hit 37958 37620
local_node 311752 248476
other_node 3073 39549
각 통계에 대한 자세한 설명은 Red Hat 고객 포털에서 A.11. NUMASTAT을 참조하세요.
numa_foreign 및 numa_miss 통계가 증가하면 EC2 인스턴스에서 실행 중인 애플리케이션이 NUMA를 인식하지 못함을 나타낼 수 있습니다. 이는 성능에 영향을 줄 수 있습니다. 이 문제를 해결하려면 grub 수준에서 NUMA를 비활성화합니다. 또는 애플리케이션을 특정 NUMA 노드에 바인딩해 보세요. 자세한 내용은 운영 체제 최적화의 8단계를 참조하세요.
영구적으로 NUMA 비활성화
Amazon Linux 2, CentOS7 또는 RHEL 7에서 numa를 영구적으로 비활성화하려면 다음 명령을 실행합니다.
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off
grub2-mkconfig -o /etc/grub2.cfg
reboot