TECH 으로 돌아가기
TECH HACKER NEWS 어제 2분 읽기 68 READS

코어와 메모리 사이의 '거리'가 성능을 결정한다: NUMA 입문

멀티소켓 서버에서 모든 메모리 접근 속도가 같다고 생각했다면 오해다. 현대 CPU는 코어마다 '가까운' 메모리와 '먼' 메모리가 나뉘는 NUMA(불균일 메모리 접근) 구조를 쓴다. 같은 데이터라도 다른 소켓의 메모리에 있으면 인터커넥트를 거쳐야 해 지연(latency)이 수십 퍼센트 늘고 대역폭은 줄어든다. 핵심 인사이트는 세 가지다. 첫째, 성능 병목은 종종 코드가 아니라 '데이터가 어느 노드에 있느냐'에서 생긴다. 둘째, OS 스케줄러가 스레드를 다른 노드로 옮기면 캐시와 지역성이 깨져 원격 접근이 폭증한다. 셋째, numactl이나 메모리 바인딩으로 코어와 메모리를 같은 노드에 묶으면 코드 한 줄 안 고치고도 큰 개선을 얻을 수 있다. DB, 인메모리 캐시, 고성능 서버를 운영한다면 NUMA 토폴로지를 인지하고 측정·정렬하는 것이 튜닝의 출발점이다. 보이지 않는 '거리'를 이해하는 순간, 같은 하드웨어에서 더 많은 성능이 보인다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://edera.dev/stories/numa-part-1-cores-memory-and-the-d...
SHARE
처리 중...