UMA : Unified Memory Access NUMA : Non-Unified Memory Access CPU와 메모리를 노드로 묶어서 메모리 접근을 Local Access/Remote Access로 구분함. NUMA 옵션 1. default: 프로세스를 실행하고 있는 프로세서가 포함된 노드에서 먼저 메모리를 할당받음 2. bind: 특정 프로세스를 특정 노드에 할당하여 특정 노드에서만 메모리를 할당받음 1. membind: 처음 지정한 노드에 고정 2. cpunodebind: 특정 노드의 CPU에만 돌아가도록 설정 3. physcpubind: 특정 번호의 CPU에만 돌아가도록 설정 3. preferred: 선호하는 노드를 설정하여 가능한 한 설정한 노드로부터 메모리를 할당받음 4. interleaved: 다수의 노드에서 거의 동일한 비율로 Round-Robin 정책에 따라 메모리를 할당받음. 관련 프로그램 : `numactl`, `numastat`, `numad` 프로세스별 메모리 할당 정책 -> `/proc/<pid>/numa_maps` zone -> 커널이 메모리를 사용 용도에 따라 구분하여 관리하는 영역의 단위. `/proc/buddyinfo`로 확인 가능. `vm.zone_reclaim_mode` 는 애초에 DMA를 위한 파라미터였지만, NUMA 아키텍처 도입 후 중요성이 커짐. 0 disable -> 존 안에서 재할당하지 않고 다른 존에서 가져와서 사용 1 enable -> 존 안에서 재할당