NUMA(Non-Uniform Memory Access)

hi2li·2026년 6월 14일

infra

목록 보기
6/9

개요

  • 고성능 서버나 데이터베이스 서버에서는 여러 개의 CPU를 사용하는 경우가 많다.

  • 하지만 CPU 수가 증가할수록 모든 CPU가 하나의 메모리를 공유하는 구조에서는 병목 현상이 발생한다.

  • 이를 해결하기 위해 등장한 메모리 구조가 NUMA(Non-Uniform Memory Access)이다.

  • 이번 글에서는 NUMA의 개념, 등장 배경, 구성 요소, 동작 원리에 대해 알아본다.





개념

NUMA는 CPU마다 메모리 접근 속도가 서로 다른 메모리 구조이다.

  • 기존 시스템에서는 모든 CPU가 동일한 메모리에 접근했기 때문에 접근 시간이 일정했다.
  • 하지만 NUMA에서는 각 CPU가 자신에게 가까운 소켓에 연결된 메모리를 가지며, 접근 대상에 따라 속도가 달라진다.
  • 보통의 가정용 PC나 노트북은 CPU소켓이 1개이기 때문에 NUMA를 크게 신경쓰지는 않지만 서버 같이 CPU가 2개 이상 장착된 경우에는 NUMA를 사용할 수 있다.
CPU0 → Local Memory 이면 : 빠름

CPU0 → Remote Memory 이면 : 느림

-> 메모리 접근 시간이 균일하지 않기 떄문에 Non-Uniform Memory Access라고 부른다.






등장배경

  • 초기 멀티 프로세서 시스템에서는 UMA(Uniform Memeory Access)구조를 사용했다.
  • UMA구조에서는 모든 CPU가 하나의 메모리를 공유한다.
  • 하지만 CPU가 증가할수록 다음과 같은 문제가 발생했다.
  1. 메모리 버스 병목 현상
  2. 메모리 경쟁 증가
  3. 확장성 저하

예를 들어 CPU가 32개인 서버에서 모든 CPU가 하나의 메모리에 접근하면 성능이 급격히 저하될 수 있다.

  • 이러한 문제를 해결하기 위해 CPU 소켓과 해당 소켓에 연결된 메모리를 하나의 Node로 구성하는 NUMA 구조가 등장하였다.가 등장하였다.






구성요소

  • NUMA는 크게 다음 요소로 구성된다.

1. CPU

연산을 수행하는 "프로세서"이다.

  • NUMA에서 CPU 내부의 코어들은 자신이 속한 Node의 Local Memory를 우선적으로 사용한다.



2. Local Memory

CPU와 같은 NUMA Node에 연결된(묶인) 메모리이다.

  • CPU가 가장 빠르게 접근할 수 있는 메모리이다.


3. Remote Memory

다른 NUMA Node에 연결된(묶인) 메모리들을 말한다.

  • CPU는 인터커넥트를 통해 접근하며 Local memory보다 접근 속도가 느리다.



4. NUMA Node

CPU와 메모리를 하나의 그룹으로 묶은 단위이다.

Node0
 ├ CPU0
 └ RAM0

Node1
 ├ CPU1
 └ RAM1
  • NUMA는 이러한 Node단위로 동작한다.

  • 일반적으로 하나의 NUMA Node는 하나의 CPU 소켓과 해당 소켓에 연결된 메모리로 구성된다.

  • 따라서 하나의 Node에 여러 개의 CPU 코어와 다수의 메모리 모듈이 포함될 수 있다.






동작흐름

NUMA 환경에서 프로세스가 실행되면 운영체제는 가능한 한 같은 Node의 CPU와 메모리를 사용하도록 배치한다.

  1. 프로세스가 CPU0 에서 실행된다.
  2. 운영체제는 CPU0과 같은 Node에 위치한 RAM0 을 우선적으로 할당한다.
  3. 프로세스가 메모리에 접근한다. -> Local Memory이므로 빠르게 접근 가능
  4. RAM0의 공간이 부족하거나 필요한 데이터가 다른 Node의 메모리에 존재하는 경우에는 Remote Memory에 접근하게 된다.이 경우에는 지연시간이 증가한다.
  5. 운영체제는 가능한 한 Local Memory 사용 비율을 높여 성능을 최적화한다.
  • 이를 "NUMA Awareness"라고 한다.

  • NUMA Awareness를 지원하는 운영체제나 애플리케이션은 CPU와 메모리를 같은 Node에 배치하여 Remote Memory 접근을 최소화한다.






NUMA의 장점

  • 메모리 병목 감소
  • 시스템 확장성 향상
  • 대규모 서버 환경에 적합
  • CPU와 메모리 간 접근 지연 감소
  • 멀티 소켓 서버에서 성능 향상






NUMA의 단점

  • 구조가 복잡하다.

  • Remote Memory 접근 시 성능 저하가 발생한다.

  • NUMA를 고려하지 않은 프로그램은 성능 이점을 얻기 어렵다.

  • 운영체제와 애플리케이션이 NUMA를 인식(NUMA Awareness)해야 최적의 성능을 낼 수 있다.

  • 메모리 사용량이 불균형해질 수 있다.






한 줄 정리

NUMA는 CPU와 메모리를 Node 단위로 구성하여 각 CPU가 가까운 메모리를 우선 사용하도록 함으로써 멀티 프로세서 환경의 병목 현상을 줄이는 메모리 구조이다.

profile
Easy come , Easy go

0개의 댓글