안녕하세요. 언제 한번 기록해두어야지 하다가 깜박하고 있었습니다.
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
이 IOMMU 기능을 VM 에다가 노출시킬 수도 있는데요. 가상머신의 설정편집 화면에 들어가보면 아래 항목이 있습니다. 이것을 vIOMMU 라고 부릅니다.
제 기억으로는 128개 를 넘어가는 vCPU 를 할당하면 자동으로 해당기능이 enable 되도록 설정이 되었던것 같네요. 지금은 그러한 시스템이 없어 확인할 수 없습니다만..
문제는 이 vIOMMU 가 아직은 인텔 시스템에서만 가능하다는 것입니다. 아직 AMD 시스템에서는 vIOMMU 를 지원하지 않습니다. 더해서 Guest OS 가 Linux 인 경우에만 사용할 수 있습니다.
구분해서 보셔야 하는 부분은 AMD 시스템에서 ESXi 가 IOMMU 는 지원하지만 vIOMMU 를 아직 지원하지 않는다는 것입니다. 따라서 128개 이하의 vCPU 환경에서는 vIOMMU 를 필요로 하지 않음으로 GPU 등을 할당해서 사용할 수 있습니다.
참고로 vIOMMU 는 vHW14 부터 지원합니다.
향후 릴리즈에서 지원하게 되면 다시한번 업데이트 하겠습니다.