more than 128 vCPU on AMD system (+ PCI-E passthrough)

안녕하세요. 언제 한번 기록해두어야지 하다가 깜박하고 있었습니다.

 

vSphere 7.0 GA 버전에서는 AMD 시스템을 사용시에 vCPU 를 128개 초과 할당하면 VM 의 파워가 켜지지 않는 문제가 있었습니다. vSphere 7.0 U1 의 GA 와 동시에 Virtual Hardware Version (이하 vHW) 18 버전이 나오면서 AMD 시스템에서도 VM 에 128개를 초과하는 vCPU 를 할당할 수 있게 되었습니다. 

 

https://kb.vmware.com/s/article/74899 에 보면 위 내용이 설명되어있는데, 여기서 한가지 중요한 제약사항을 말씀드릴려고 합니다.

 

그것은 바로 128 vCPU 를 초과해서 할당하는 경우 vGPU 나 PCI-E Passthrough 를 통해 VM 에 디바이스를 추가하는 경우에는 VM 의 파워가 켜지지 않는다는 것입니다.

 

여러 경로로 알아본 내용은 128개를 초과하는 vCPU 를 할당시 PCI passthrough 나 vGPU 를 할당하라면,  x2APIC 이라는 기능의 지원이 필요한데요, HPE 의 문서를 보면 x2APIC 는 다음과 같은 역할을 한다고 설명되어있습니다.

 

Processor x2APIC Support helps operating systems run more efficiently on high core count configurations and optimizes interrupt distribution in virtualized environments.

 

가상화 환경에서 위 기능을 쓸려면 interrupt 를 remap 할 수 있는 기능이 있어야 하는데, 가상화 환경에서 이러한 기능을 하는것이 IOMMU 입니다.

 

IOMMU

The platform must have an IOMMU for DMA remapping any PCI Function which is to be assigned for VMDirectPath I/O. The IOMMU’s DMA re-mapping functionality is necessary in order for VMDirectPath I/O to work. DMA transactions sent by the passthrough PCI Function carry guest OS physical addresses which must be translated into host physical addresses by the IOMMU.

 

이 IOMMU 기능을 VM 에다가 노출시킬 수도 있는데요. 가상머신의 설정편집 화면에 들어가보면 아래 항목이 있습니다. 이것을 vIOMMU 라고 부릅니다.

 

 

제 기억으로는 128개 를 넘어가는 vCPU 를 할당하면 자동으로 해당기능이 enable 되도록 설정이 되었던것 같네요. 지금은 그러한 시스템이 없어 확인할 수 없습니다만..

 

문제는 이 vIOMMU  가 아직은 인텔 시스템에서만 가능하다는 것입니다. 아직 AMD 시스템에서는 vIOMMU 를 지원하지 않습니다. 더해서 Guest OS 가 Linux 인 경우에만 사용할 수 있습니다. 

 

구분해서 보셔야 하는 부분은 AMD 시스템에서 ESXi 가 IOMMU 는 지원하지만 vIOMMU 를 아직 지원하지 않는다는 것입니다. 따라서 128개 이하의 vCPU 환경에서는 vIOMMU 를 필요로 하지 않음으로 GPU 등을 할당해서 사용할 수 있습니다. 

 

참고로 vIOMMU 는 vHW14 부터 지원합니다.

 

향후 릴리즈에서 지원하게 되면 다시한번 업데이트 하겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다