bfiber_1300
Boost.Fiber NUMA
NUMA(Non-Uniform Memory Access)
최신 마이크로프로세서에는 채널을 통해 메모리에 연결되는 통합 메모리 컨트롤러가 포함되어 있습니다.
메모리에 접근하는 방법은 두 가지로 구성될 수 있습니다.
UMA(균일 메모리 액세스/Uniform Memory Access) 및 NUMA(비균일 메모리 액세스/Non-Uniform Memory Access).
중앙 집중식 메모리 풀을 제공하는(따라서 특정 수의 프로세서 이후로 확장되지 않음) UMA와 달리 NUMA 아키텍처는 마이크로 프로세서를 기준으로 메모리를 로컬 메모리와 원격 메모리로 나눕니다.
로컬 메모리는 프로세서의 통합 메모리 컨트롤러에 직접 연결됩니다.
다른 마이크로 프로세서(멀티 소켓 시스템)의 메모리 컨트롤러에 연결된 메모리는 원격 메모리로 간주됩니다.
메모리 컨트롤러가 원격 메모리에 액세스하는 경우 상호 연결[8]을 통과하여 원격 메모리 컨트롤러에 연결해야 합니다.
따라서 원격 메모리에 액세스하면 로컬 메모리 액세스에 추가 대기 시간 오버헤드가 추가됩니다.
메모리 위치가 다르기 때문에 NUMA 시스템에서는 메모리 액세스 시간이 일정하지 않습니다.
결과적으로 메모리 액세스를 로컬로 유지하면 최상의 성능을 얻을 수 있습니다.
![](/images/edu/numa.jpg)
📦 NUMA support in Boost.Fiber
NUMA 기능의 하위 집합만 여러 운영 체제에서 노출되므로 Boost.Fiber는 최소한의 NUMA API만 제공합니다.
• Important 1
NUMA 지원을 활성화하려면 b2 속성 numa=on을 지정하고 추가 라이브러리 libboost_fiber_numa.so에 연결해야 합니다.
• Important 2
pthread 구현을 사용하는 MinGW는 Windows에서 지원되지 않습니다.
📦 Synopsis
📦 Class numa::node
📦 Class numa::work_stealing
⚛ 원문
NUMA 아키텍처에 대한 참고 글
⚛ NUMA: Non-Uniform Memory Access (한글)
⚛ Understanding Non-Uniform Memory Access/Architectures (NUMA) (영어)