9장. NUMA
이전에는 AMD64 및 Intel 64 시스템의 모든 메모리에 동일하게 모든 CPU에 액세스할 수 있습니다. UMA(Uniform Memory Access)라고 하는 액세스 시간은 작업을 수행하는 CPU와 관계없이 동일합니다.
이 동작은 더 이상 최근 AMD64 및 Intel 64 프로세서의 경우에는 해당되지 않습니다. NUMA(Non-Uniform Memory Access)에서 시스템 메모리는 소켓에 해당하거나 시스템 메모리의 로컬 하위 집합에 대해 동일한 액세스 대기 시간이 있는 특정 CPU 집합에 해당하는 NUMA 노드로 나뉩니다.
이 장에서는 가상화 환경의 메모리 할당 및 NUMA 튜닝 구성에 대해 설명합니다.
9.1. NUMA 메모리 할당 정책
다음 정책은 시스템의 노드에서 메모리 할당 방법을 정의합니다.
Strict
- 엄격한 정책이란 대상 노드에 메모리를 할당할 수 없는 경우 할당이 실패했음을 의미합니다.메모리 모드 속성을 정의하지 않고 NUMA 노드 세트 목록을 지정하는 기본값은
strict
모드입니다. Interleave
- 메모리 페이지는 노드 세트에서 지정한 노드 간에 할당되지만 라운드 로빈 방식으로 할당됩니다.
Preferred
- 메모리는 하나의 기본 메모리 노드에서 할당됩니다. 충분한 메모리를 사용할 수 없는 경우 다른 노드에서 메모리를 할당할 수 있습니다.
의도한 정책을 활성화하려면 도메인 XML 파일의 <
memory mode>
; 요소의 값으로 설정합니다.
<numatune> <memory mode='preferred' nodeset='0'> </numatune>
중요
strict
모드에서 메모리를 과다 할당하고 게스트에 충분한 스왑 공간이 없는 경우 커널은 일부 게스트 프로세스를 종료하여 추가 메모리를 검색합니다. 이 상황을 방지하기 위해 preferred
할당 사용 및 단일 노드 세트(예: nodeset='0')를 사용하는 것이 좋습니다.