5장. NFV 성능 고려 사항
NFV(네트워크 기능 가상화) 솔루션이 유용하려면 가상화된 기능이 물리적 구현 성능을 충족하거나 초과해야 합니다. Red Hat의 가상화 기술은 OpenStack 및 클라우드 배포에서 일반적으로 사용되는 고성능 KVM(커널 기반 가상 시스템) 하이퍼바이저를 기반으로 합니다.
5.1. CPU 및 NUMA 노드
이전에는 x86 시스템의 모든 메모리에 시스템의 모든 CPU에 동등하게 액세스할 수 있었습니다. 이로 인해 시스템의 CPU와 관계없이 작업을 수행하고 UUMA(Uniform Memory Access)라고 하는 메모리 액세스 시간이 발생했습니다.
NUMA(Non-Uniform Memory Access)에서 시스템 메모리는 노드라는 영역으로 나뉩니다. 이 영역은 특정 CPU 또는 소켓에 할당됩니다. CPU에 로컬인 메모리에 대한 액세스는 해당 시스템의 원격 CPU에 연결된 메모리보다 빠릅니다. 일반적으로 NUMA 시스템의 각 소켓에는 다른 CPU로 로컬의 메모리 또는 모든 CPU에서 공유하는 버스의 메모리보다 더 빠르게 액세스할 수 있는 로컬 메모리 노드가 있습니다.
마찬가지로 물리적 NIC는 컴퓨팅 노드 하드웨어의 PCI 슬롯에 배치됩니다. 이러한 슬롯은 특정 NUMA 노드와 연결된 특정 CPU 소켓에 연결됩니다. 최적의 성능을 위해 데이터 경로 NIC를 CPU 구성(SR-IOV 또는 OVS-DPDK)의 동일한 NUMA 노드에 연결합니다.
NUMA 누락의 성능 영향은 일반적으로 10% 이상의 성능 저하로 시작됩니다. 각 CPU 소켓에는 가상화 목적으로 개별 CPU로 취급되는 여러 CPU 코어가 있을 수 있습니다.
NUMA에 대한 자세한 내용은 NUMA란 무엇이며 Linux에서 어떻게 작동합니까?
5.1.1. NUMA 노드 예
다음 다이어그램에서는 2-노드 NUMA 시스템의 예와 CPU 코어 및 메모리 페이지를 사용할 수 있는 방법을 제공합니다.
상호 연결을 통해 사용할 수 있는 원격 메모리는 NUMA 노드 0의 VM1에 NUMA 노드 1의 CPU 코어가 있는 경우에만 액세스됩니다. 이 경우 NUMA 노드 1의 메모리는 VM1의 세 번째 CPU 코어에 대해 로컬 역할을 하지만 VM1이 위의 다이어그램에서 CPU 4를 할당한 경우 동시에 동일한 VM의 다른 CPU 코어의 원격 메모리 역할을 합니다.
5.1.2. NUMA 인식 인스턴스
NUMA 아키텍처가 있는 시스템에서 NUMA 토폴로지 인식을 사용하도록 OpenStack 환경을 구성할 수 있습니다. VM(가상 머신)에서 게스트 운영 체제를 실행하는 경우 다음과 같은 두 가지 NUMA 토폴로지가 필요합니다.
- 호스트의 물리적 하드웨어의 NUMA 토폴로지
- 게스트 운영 체제에 노출된 가상 하드웨어의 NUMA 토폴로지
가상 하드웨어와 물리적 하드웨어 NUMA 토폴로지를 조정하여 게스트 운영 체제의 성능을 최적화할 수 있습니다.