Maszyny wirtualne w każdym hiperwizorze, który znam, mogą korzystać z dodatkowych wirtualnych procesorów, na których można zaplanować dodatkowe równoległe wątki wykonania.
Jest to dokładnie ta warstwa abstrakcji między maszyną fizyczną a maszyną wirtualną, która sprawia, że nie działa ona tak, jak to opisujesz. Maszyna wirtualna nie jest świadoma liczby rdzeni maszyny fizycznej. Maszyna wirtualna nie „widzi” fizycznych procesorów (lub rdzeni) na maszynie fizycznej. Hiperwizor daje maszynie wirtualnej tyle wirtualnych procesorów, a system gościa używa tych wirtualnych procesorów do planowania dodatkowych współbieżnych wątków ... Całkowita liczba wirtualnych procesorów przekazywanych przez hiperwizor maszynom wirtualnym może nawet przekraczać liczbę fizycznych procesorów / rdzenie w maszynie.
Mówiąc inaczej, maszyna wirtualna, po przypisaniu pojedynczego vCPU, planuje swoje wątki, jakby miała tylko jeden procesor. Nie ma znaczenia, ile rdzeni znajduje się w podstawowej maszynie fizycznej. (Warto jednak zauważyć, że maszyna fizyczna może zaplanować ten wątek maszyny wirtualnej na jednym rdzeniu fizycznym dla jednego wątku kwantowego lub odcinka czasu, a następnie uruchomić go na innym rdzeniu fizycznym przy następnym uruchomieniu). nie ma pojęcia, że coś takiego się dzieje. Wie tylko, że może planować tylko jeden wątek na raz, jeden po drugim, ponieważ ma tylko jeden wirtualny procesor.)
I wyjaśnijmy tutaj nasze warunki. Przypisujesz vCPU lub wirtualne procesory do maszyn wirtualnych, a nie „rdzeni”. Rdzenie (przez co zakładam, że masz na myśli fizyczne jednostki przetwarzające, które współużytkują pojedyncze fizyczne gniazdo) nie są równe vCPU. Między nimi jest warstwa abstrakcji. Jeśli do maszyny wirtualnej przypisano tylko 1 vCPU, może ona zaplanować uruchomienie tylko jednego wątku na raz. Właśnie dlatego twoja maszyna wirtualna działa szybciej z przypisanymi do niej 2-4 wirtualnymi procesorami - ponieważ jest teraz w stanie zaplanować jednoczesne uruchamianie więcej niż jednego wątku.
Jednak na pewno istnieje prawo malejących zwrotów, ponieważ nadmierna liczba procesorów wirtualnych pociąga za sobą coraz wyższe koszty ogólne w takich rzeczach, jak synchronizacja itp.
Istnieją niewielkie różnice między sposobem, w jaki hiperwizory Hyper-V i VMware planują wątki maszyny wirtualnej do wykonania, i różnią się podejściem do „nadsubskrypcji” zasobów fizycznych, ale jest to dobra ogólna koncepcja na początek.