ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Numa의 이해
    프로그래밍/프로그래밍 관련 2012. 4. 19. 15:13

    오늘은 Numa(Non-Uniform Memory Access) 아키텍처에 대해 알아보도록 하겠습니다.


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

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




    [그림1] Numa 관계도



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

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

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

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

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




    [그림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가 있으며 해당 내용에 대해서는 다음에 알아보도록 하겠습니다.



    댓글