내가 아는 모든 하이퍼 바이저의 가상 머신은 추가 가상 CPU를 사용하여 추가 동시 스레드 실행을 예약 할 수 있습니다.
물리적 시스템과 가상 시스템 간의 추상화 계층은 정확하게 설명 된 방식으로 작동 하지 않습니다 . VM은 실제 머신의 코어 수를 인식하지 못합니다. VM은 물리적 시스템의 물리적 CPU (또는 코어)를 "보지"않습니다. 하이퍼 바이저는 VM에 가상 CPU 수를 제공하고 게스트 OS는 해당 가상 CPU를 사용하여 추가 동시 스레드를 예약합니다. 하이퍼 바이저가 가상 시스템에 전달하는 총 가상 CPU 수는 물리적 CPU 수 / 기계의 코어.
다른 방법으로, 가상 시스템은 단일 vCPU가 할당 될 때 하나의 CPU 만있는 것처럼 스레드를 예약합니다. 기본 물리적 시스템에 몇 개의 코어가 있는지는 중요하지 않습니다. (물리적 시스템은 하나의 스레드 퀀텀 또는 타임 슬라이스에 대해 하나의 물리적 코어에서 하나의 VM 스레드를 예약 한 후 다음에 실행되도록 예약 할 때 다른 물리적 코어에서 실행할 수 있습니다. 알고있는 것은 하나의 가상 CPU 만 있기 때문에 한 번에 하나의 스레드 만 하나씩 예약 할 수 있다는 것입니다.)
그리고 우리의 용어에 대해 매우 명확하게합시다. "코어"가 아닌 VM에 vCPU 또는 가상 CPU를 할당합니다. 코어 (단일 물리적 소켓을 공유하는 물리적 처리 장치를 의미한다고 가정)는 vCPU와 같지 않습니다. 그들 사이에는 추상화 계층이 있습니다. VM에 vCPU가 하나만 할당되어 있으면 한 번에 하나의 스레드 만 실행되도록 예약 할 수 있습니다. 따라서 2-4 개의 가상 CPU가 할당 된 상태에서 VM이 더 빠르게 실행됩니다. 이제 동시에 실행되도록 둘 이상의 스레드를 예약 할 수 있습니다.
그러나 너무 많은 수의 가상 CPU가 동기화 등과 같은 작업에서 오버 헤드 비용이 높고 높기 때문에 수익을 줄이는 법이 분명히 있습니다.
Hyper-V와 VMware 하이퍼 바이저가 실행을 위해 가상 머신 스레드를 예약하는 방법에는 약간의 차이가 있으며 물리적 리소스 "과다 가입"에 대한 접근 방식이 다릅니다. 그러나 이는 일반적으로 좋은 개념입니다.