본문 바로가기
IT/Linux_리눅스

[Linux / Architecture] NUMA(Non-Uniform Memory Access) 란?????

by 무브영/movewoo0 2021. 3. 11.
728x90
반응형

안녕하세요. 이번 포스팅에서는 NUMA(Non-Uniform Memory Access)라는 메모리 아키텍쳐에 대해서 써보도록 하겠습니다.

 

 


 

 

0. NUMA 란?

NUMA는 Non-Uniform Memory Access의 약자로써 해석하면 불균형 메모리 접근이라는 뜻입니다.

이는 멀티프로세서 환경에서 적용되는 메모리 접근방식이며 이전의 UMA(Uniform Memory Access)의 초창기 개념과 반대되는 개념과 반대되는 개념입니다.

 

 


 

 

1. NUMA의 아키텍처(UMA 와 비교)

아래의 그림으로 UMA(Uniform Memory Access)의 작동 방식을 설명합니다.

 

이 방식에서는 모든 프로세서들이 CPU와 메모리 사이의 공용 BUS를 이용해서 메모리에 접근합니다.

 

이러한 방식의 문제점은 여러 socket들이 BUS를 동시에 사용할 수 없다는 점입니다.

 

가령 0번 소켓에 있는 CPU가 메모리에 접근하는 동안 1번 소켓에 있는 CPU는 메모리에 접근할 수 없다는 문제점이 생깁니다.

UMA 아키텍처

 


 

그렇지만 NUMA(Non-Uniform Memory Access) 아키텍처에서는 이러한 문제를 해결하는 아키텍처를 가집니다.

NUMA는 로컬 메모리로의 접근이 동시에 이뤄질 수 있다는 점이 차이점입니다.

 

아래의 그림과 같이 각각의 CPU마다 별도의 메모리가 있는데 이와 같은 메모리에접근하는 방식을 로컬 액세스(Local Access)라 합니다.

 

그리고 이렇게 CPU와 메모리를 합쳐서 각각의 노드를 구성합니다.

 

이 구조에서는 자신의 메모리가 아닌 다른 노드에 있는 메모리에도 접근할 수 있고, 이러한 과정은 리모트 액세스(Remote Access)라고 부릅니다.

 

NUMA 아키텍처

 


가령, 0번 CPU가 자신의 로컬메모리에 접근하는 동안 1번 CPU도 자신의 메모리에 접근할 수 있어서 성능이 향상됩니다.

 

하지만 만약 각 노드안의 로컬메모리의 양이 모자란다면 다른 CPU에 붙어있는 메모리에 접근이 필요하게 되고, 이때 메모리 접근에 시간이 소요되어 예상치 못한 성능 저하가 야기될 수 있습니다.

 

그렇기 때문에 얼마나 많이 메모리 접근이 일어나느냐가 성능 향상의 가장 중요한 지점이라고 할 수 있겠습니다.


본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.

인용 시 출처와 같이 공개해주세요!

도움이 되셨다면 댓글 또는 공감 부탁드립니다!

 

Icon made by ultimatearm from www.flaticon.com

728x90
반응형

댓글