[VMWare] [ SMP & NUMA ] 차이점 및 ESXi 및 Guest OS의 활용

   조회 7907   추천 1    

1) 1개의 물리적 CPU를 사용하는 경우는 해당 사항 없고,
2) E5/E7(2way 및  4way)의 Intel CPU는 Windows OS 사용하면,
    NUMA를 사용하는 건지요 ?  
        OS에 따른 SMP 및 NUMA 사용이 선택되는지요 ? 
            아님 HW (CPU & BD) 설계시에 정해지는 건지요 ?
3) ESXi는 Host 및 Guest OS의 NUMA, SMP중에 어느 것으로 동작하는 건지요 ?
4) SMP 및  NUMA에 대한 자세한 / 쉬운 설명 내역 나와 있는 자료 좀 소개 부탁 드립니다.
    OS는 NUMA나 SMP에 대하여 관계없이 동작하는 지도 궁금합니다.

조금 어려주 주제지만, 조심스레 질문 올려 봅니다.
epowergate 2015-03
SMP는 모든 메모리 영역에서 모든 CPU간의 성능이 같은 경우고요 NUMA는 다를 수 있는겁니다.
요즘에는 CPU에 Memory Controller가 있고 CPU마다 지정된 Memory Slot이 있지요. 
즉,  CPU마다 가까운 메모리와 다른 CPU에 있는 메모리간의 응답속도가 다릅니다.
결론은, 요즘 보시는 대부분의 서버들은 NUMA입니다.
VMWARE등 가상화요? 물론 NUMA Kernel 사용합니다.
CPU마다 지정된 Memory solt이 있다는 의미는
CPU#1이 CPU#2 위치에 가까운 메모리를 지정하여 사용할 수 있다는 의미 인지요 ?

해당 CPU가 4way 지원하면,
  4개의 메모리 면(way)를 한번에 읽어 올 수 있다는 의미로 생각하고 있습니다.
즉 보드에 CPU 2개, Memory 모듈 8개(모듈이 양면이면 총 16way)면
  CPU#1은 Memory module 4개씩 1개의 Group으로 총 2개의 Group ( 4way * 2 group )을
  CPU#2은 Memory module 4개씩 1개의 Group으로 총 2개의 Group ( 4way * 2 group )을 읽는 것이 맞는지요 ?
  단, CPU#1,#2당
    1개의 Group은 본인 CPU 관장하는 Group(4way),
    다른 Group은 다른 CPU 관장하는 Group(4way)에서 읽어 오는 것이 맞는지요 ?
    CPU 1개에서 램 모듈의 양면을 동시에 읽지 못하는 제약이 있는지요 ?

SMP면 해당 구성에서, 어떻게 처리하는지도 궁금합니다.
질문이 좀 읽으시기에 난해한 면이 있을 지 모르겠네요.

가능하시면 답변 부탁 드립니다.
epowergate 2015-03
우선 Intel Xeon이나 AMDCPU에는 Memory controller가 CPU에 있지요.
예를들어 CPU#0에 6개의 Memory Bank가 있고 CPU#1에 6개의 Bank, 각 Bank에 4GB Memory를 장착하였다면 시스템 적으로 48GB를 사용할 수 있겠지요.  간단하게 보면 Memory 0-24GB까지는 CPU#0이 관할 하고 25GB-48GB까지는 CPU#1이 관할 합니다. 
만약에 어떤 프로그램이 CPU#0의 Core2번에서 수행중이었고 이 프로그램이 Physical Memory 영역 4GB의 값을 읽는다면 CPU#0에 있는 Memory Controller가 Memory에서 읽어서 CPU Core에 값을 전달할 겁니다.  하지만 만약에 동일한 프로그램이 CPU#1의 Core1에서 작동중이었다면
CPU#1Core1 request to Memory Controller in CPU#1 => Request to Memory Controller in CPU#0 => Memory Controller in CPU#0 read data at 4GB => Send the data to Memory Controller in CPU#0 => send the data to CPU#1Core1 이 됩니다.
당연히 느리겠지요.

대부분의 OS에서 (Linux, Windows) 2가지가 가능한데
1) 프로그램을 특정 CPU&Core에서 작동 시키도록 지정
2) 프로그램이 사용하는 Memory를 Virtual Memory & Physical Memory의 특정 영역에서 사용하도록 지정
할 수 있습니다.  물론, 이에 따르는 모든 책임은 개발자가 지어야 합니다.


시스템마다 차이가 있지만 보통 SMP에서는 시스템에 독립된 Memroy Controller가 있습니다.  그러면 각 CPU가 Merory Controller에 Memory IO를 요청합니다.  또한 모든 Memory Module은 Memory Controller에 Bus, Channel 등등의 방법으로 연결을 합니다.
이렇게 함으로써 모든 CPU <-=> Memory의 IO 성능을 동일하게 맞출 수 있습니다.
아.. 명확한 답변 감사 드립니다. 자세히 설명해 주시니, 조금 더 이해에 자신이 생겼습니다.
그럼, 좋은 하루 되세요


제목Page 107/130
2015-12   1783586   백메가
2014-05   5258757   정은준1
2015-11   12270   linesis
2022-09   12278   토이스토리
2014-05   12292   스톤콜드
2019-07   12322   이이크
2017-02   12331   epowergate
2016-08   12368   에라뇽
2015-03   12371   겨울만
2016-02   12385   제록
2019-06   12410   helloworld1
2016-08   12413   전직P연구원
2017-04   12424   케리스
2017-03   12433   봉봉이
2016-01   12446   guest1
2013-12   12460   빠시온
2014-02   12462   니포
2014-10   12471   서울사람
2023-01   12474   막내의하루
2015-06   12475   김동자맨
2013-06   12486   회원K
2016-11   12502   goodabc