다중 코어 프로세서는 가상 시스템의 멀티태스킹을 수행하는 호스트에 많은 장점을 제공합니다.

Intel과 AMD에서는 둘 이상의 프로세서 코어를 보통 패키지 또는 소켓이라고 하는 단일 집적 회로로 결합하는 프로세서를 각자 개발했습니다. VMware에서는 논리 프로세서가 각각 하나 이상씩 있는 하나 이상의 프로세서 코어를 포함할 수 있는 단일 패키지를 설명할 때 소켓이라는 용어를 사용합니다.

예를 들어 듀얼 코어 프로세서는 두 개의 가상 CPU를 동시에 실행할 수 있으므로 단일 코어 프로세서보다 거의 두 배의 성능을 제공할 수 있습니다. 동일한 프로세서 내의 코어는 일반적으로 모든 코어에 사용되는 공유된 마지막 수준 캐시를 사용하여 구성되므로 느린 메인 메모리에 액세스할 필요성이 잠재적으로 줄어듭니다. 물리적 프로세서를 메인 메모리에 연결해 주는 공유 메모리 버스는 논리 프로세서에서 실행 중인 가상 시스템이 동일한 메모리 버스 리소스를 얻기 위해 경쟁하는 메모리 소모가 많은 워크로드를 실행할 경우 논리 프로세서의 성능을 제한할 수 있습니다.

각 프로세서 코어의 각 논리 프로세서는 ESXi CPU 스케줄러에서 독립적으로 사용되어 가상 시스템을 실행함으로써 SMP 시스템과 유사한 기능을 제공할 수 있습니다. 예를 들어 양방향 가상 시스템의 가상 프로세서는 동일한 코어에 속한 논리 프로세서 또는 다른 물리적 코어에 있는 논리 프로세서에서 실행될 수 있습니다.

ESXi CPU 스케줄러는 프로세서 토폴로지 및 프로세서 코어와 해당 코어의 논리 프로세서 간 관계를 감지할 수 있습니다. 스케줄러는 이 정보를 사용하여 가상 시스템을 스케줄링하고 성능을 최적화합니다.

ESXi CPU 스케줄러는 소켓, 코어 및 논리 프로세서 간의 관계를 비롯한 프로세서 토폴로지를 해석할 수 있습니다. 스케줄러는 토폴로지 정보를 사용하여 다른 소켓에서의 가상 CPU 배치를 최적화하여 전체적인 캐시 사용률을 최대화하고 가상 CPU 마이그레이션을 최소화하여 캐시 선호도를 개선합니다.

언더 커밋 시스템에서는 ESXi CPU 스케줄러가 기본적으로 모든 소켓에 로드를 분산합니다. 이렇게 하면 실행 중인 가상 CPU에 사용할 수 있는 집계 캐시 양이 최대화되어 성능이 향상됩니다. 따라서 단일 SMP 가상 시스템의 가상 CPU가 여러 소켓에 분산됩니다. 단, 각 소켓이 NUMA 노드가 아닌 경우에만 적용됩니다. 이 경우에는 NUMA 스케줄러가 가상 시스템의 모든 가상 CPU를 동일한 소켓에 있도록 제한합니다.

SMP 가상 시스템에서 해당 가상 CPU 간에 중요한 데이터 공유를 드러내는 경우처럼 이러한 기본 동작이 최선책이 아닌 경우가 있을 수도 있습니다. 이러한 워크로드에 대해서는 ESXi 호스트가 언더 커밋되는 경우라도 공유된 마지막 수준 캐시를 사용하여 모든 가상 CPU를 동일한 소켓에서 스케줄링하는 것이 유리할 수 있습니다. 이러한 시나리오에서는 가상 시스템의 .vmx 구성 파일에 다음 옵션을 포함함으로써 가상 CPU를 전체 패키지에 분산하는 기본 동작을 재정의할 수 있습니다. sched.cpu.vsmpConsolidate="TRUE".