NUMA와 SMP(Symmetric Multi Processing)

by 파시스트 posted Jun 15, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

하드웨어가 발전하면서 하나의 메인보드에 여러개의 CPU, 버스, 메모리 컨트롤러를 구성할 수 있게 되었습니다.


Numa는 간단하게 CPU와 메모리가 한 Set를 이루는 것을 의미합니다.

2.gif


[그림1] Numa 관계도

그림 1을 보면 Processor와 Memory 가 하나의 그룹을 이루며 각 그룹은 Numa Node라고 불립니다.

하나의 Node는 CPU와 Memory가 Pair로 구성되어 있으며 Bus를 통해 각각의 Node는 연결되어 있습니다.

그럼 1번 Node를 기준으로 하여 각 용어를 설명하도록 하겠습니다.

로컬 메모리 - 1번 Node의 메모리를 의미합니다.

외부 메모리 - 2, 3, 4번 Node의 메모리를 의미합니다.

1.jpg


[그림2] Numa 상세 내역

여기서 하나의 의문점이 생깁니다.

1번 Processor가 처리해야할 일이 3번 Node의 Memory에 있는 경우 어떻게 해당 Memory의 값을 가져올 것인가?~

그것의 답은 Bus로 연결되어 있는 구조에서 찾을 수 있습니다.

1번 Node의 Processor가 3번 Node의 Memory에 해당 데이터를 요청하며 해당 Memory는 해당 값을 Bus를 통해 Processor에 전달하게 됩니다.

 (그림 2를 보면 Numa의 세부 구조에 대해 확인 할 수 있습니다.)

이런 Numa 구조의 장점은?

네트워크를 공부하신 분은 쉽게 알 수 있을거 같습니다.

네트어크의 Bus 구조와 동일합니다.

바로 뛰어난 확장성!

Bus에 Node를 추가하면 되기 때문에 확장성이 뛰어납니다.

그럼 단점은?

바로 위에서 설명한 외부 메모리의 개념에 있습니다.

즉 외부 메모리의 데이터가 필요한 경우 해당 데이터를 가져오는데 시간이 걸리는 단점이 발생합니다.

 (HP DL380 G6의 경우 Bus 속도가 1333MHZ이므로 일반적으로 병목이 심하지 않은 경우 외부메모리로 인한 이슈는 없습니다.)

MS Sql Server의 경우 다음 Query로 사용가능한 Numa Node의 갯수를 확인할 수 있습니다.
SELECT DISTINCT memory_node_id
FROM sys.dm_os_memory_clerks

해당 값이 0인 경우 Numa가 구성되어 있지 않으므로 세팅 요청을 해야합니다.
(서버의 경우 Cpu 1개당 Memory Numa가 구성되어 있으므로 0인 경우가 발생하면 안됩니다.)

위와 같이 Numa는 요 근래 서버에 핵심 기술 중에 하나입니다.

이와 반대 개념의로 SMP가 있으며 해당 내용에 대해서는 다음에 알아보도록 하겠습니다.


3.jpg


[그림 1] SMP 관계도

[그림 1]을 보면 쉽게 알 수 있다.

CPU와 Memory가 System Bus를 통해 연결되어 있는 구조는 NUMA와 동일하다.

단 NUMA의 경우 CPU와 Memory가 하나의 Pair로 구성이 되어 있지만
SMP는 CPU와 Memory가 독립구성이다.

이런 구조는 CPU와 Memory사이의 병목 현상을 초래한다.

즉 하나의 Process가 실행되기 위해 요청되어지면 Memory요청을 한곳에서만 하게된다.

단 Numa와 같이 내부, 외부 메모리로 구분되어지지 않고 하나의 Memory로만 사용되기 때문에 외부 메모리 사용에 따른 지연 현상은 없게된다.

SMP는 PC에 대부분 사용되어지고 있다.






Articles

1 2 3 4 5 6 7