top of page

NUMA

Non-uniform Memory Access의 약자
multiprocessing을 위해 만들어짐
where the memory access time depends on the memory location relative to the processor
cpu에서 코어가 있는 공간을 독립적인 구획으로 나눠 메모리에 할당하는 방식
(ref: https://netmarble.engineering/single-process-programming-numa-effect/)

공유 메모리 시스템의 대표적인 형태는 SMP(Symmetric Multi Processor)이다.
다수의 cpu들이 메모리와 I/O를 서로 공유하는 구조.
대칭구조를 지니기 때문에 모든 프로세스가 동일한 종류로 동일한 기능 수행
문제점: 한번에 한개의 프로세서만이 동일한 메모리에 접근이 가능하기 때문에 다른 프로세서들을 대기하게 만든다

보완하기위해 나온게 NUMA
각 cpu가 독립적인 지역 메모리 공간을 갖고 있어 빠른 메모리 접근이 가능
이러한 구조로 인해 모든 프로세서가 로컬 메모리에 동시 접근이 가능하므로 병목현상이 발생하지 않는다
하지만 로컬 메모리가 아닌 다른 프로세서의 메모리(원격 메모리)에 접근하게 될 경우에는 링크를 통한 메모리 접근에 시간이 소요되어 성능 저하가 일어남
(ref:https://brunch.co.kr/@dreaminz/4 )

numa aware applications such as sql server try to avoid remote or foreign memory access

sql server 2016버전부터 automatic soft numa가 있음
(ref:https://learn.microsoft.com/ko-kr/sql/database-engine/configure-windows/soft-numa-sql-server?view=sql-server-ver16)

 

sql server에서 sys.dm_os_sys_info 테이블에서 softnuma_configuration_desc 컬럼 확인

bottom of page