Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
리눅스/OS

NUMA 메모리 정책: 아키텍처 구조와 운영 메커니즘

Linux 커널의 NUMA 메모리 정책은 다중 노드 시스템에서 메모리 할당 위치를 결정하는 핵심 인프라입니다. 모드, 플래그, 노드셋으로 구성된 정책을 통해 로컬 할당, 바인딩, 인터리빙 등 다양한 전략으로 메모리 접근 지연을 최소화합니다.

2026.10.07  ·  8회  · 

메모리 정책의 개념 구조

Linux 커널의 NUMA 메모리 정책은 비균등 메모리 접근 시스템에서 페이지 할당을 제어하는 프로그래밍 인터페이스입니다. 정책은 모드(behavior mode), 선택적 플래그, 노드셋으로 구성되며, 모드는 정책의 작동 방식을 결정하고 플래그는 모드의 세부 동작을 조정합니다.

정책 범위 계층과 폴백 구조

Linux는 네 가지 정책 범위를 계층적으로 적용합니다. 시스템 기본 정책은 부팅 후 로컬 할당으로 작동하며 모든 페이지 할당의 기본 기준입니다. 작업/프로세스 정책은 선택적이며 해당 작업의 주소공간 전체를 제어하고 fork/exec 시 상속됩니다. VMA(Virtual Memory Area) 정책은 특정 주소 범위에 적용되며 익명 페이지에만 영향을 미치고, 공유 정책은 shmget() 생성 공유메모리 세그먼트에 적용됩니다. 더 구체적인 범위가 일반적인 범위를 항상 우선합니다.

핵심 모드 동작 원리

MPOL_BIND 모드는 지정된 노드 집합에서만 메모리를 할당하며, 할당 위치에 가장 가까운 노드 중 여유 메모리가 있는 노드를 선택합니다. MPOL_PREFERRED 모드는 단일 노드를 선호하지만 불가능하면 펌웨어 거리 정보에 따라 다른 노드로 폴백합니다. MPOL_INTERLEAVE 모드는 지정된 노드 집합에 라운드로빈 방식으로 페이지를 분배하는데, 익명 페이지는 페이지 오프셋으로 인덱싱하고 페이지 캐시는 태스크별 카운터로 인덱싱합니다.

운영 고려사항과 성능 특성

VMA 정책은 설치 후 할당된 페이지에만 적용되므로, 기존 페이지를 정책에 맞게 이동하려면 mbind() 시스템 호출의 페이지 마이그레이션 기능(Linux 2.6.16+)을 명시적으로 사용해야 합니다. MPOL_BIND는 할당 프로세스 전체에서 노드마스크를 참조해야 하므로 캐시 경합을 유발할 수 있고, 공유 정책은 스핀락 하에서 트리 구조 탐색이 필요해 오버헤드가 큽니다. set_mempolicy()/mbind() API는 mmap_lock을 쓰기 모드로 획득하므로 동시성 제어가 자동으로 이루어집니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원