Es ist ein Kompromiss. Angenommen, Sie haben vier physische Kerne und zwei VMs.
Wenn Sie zwei virtuelle Kerne in jeder VM zuordnen, wird so ziemlich jeder Gast sehen, was er erwartet. Es werden zwei Kerne angezeigt, von denen erwartet wird, dass sie die volle Kontrolle haben und die mehr oder weniger erhalten. (Angenommen, die Hostlast ist nicht hoch.) Sie verwechseln den Scheduler des Gasts nicht oft mit einem Fall, in dem er einem Kern eine Aufgabe zuweist und erwartet, dass die Aufgabe sofort erledigt wird. Stattdessen wird die Aufgabe nicht erledigt, da kein physischer Kern vorhanden ist verfügbar. Wenn jedoch ein Gast keine CPU mehr hat und der andere inaktiv ist, drehen zwei Kerne mit den Daumen.
Wenn Sie andererseits jedem Gast vier virtuelle Kerne geben, kann jeder Gast die gesamte verfügbare CPU-Leistung nutzen, wenn der andere Gast und der Host diese nicht benötigen. Wenn jedoch eine Last von einer anderen Quelle geladen wird, erhält der Scheduler des Gastes nicht das erwartete Verhalten und einige Aufgaben werden sofort gestartet, andere nicht so, wie es der Scheduler des Gasts nicht leicht erwarten und bewältigen kann.
Im Allgemeinen empfehle ich, so viele physische Kerne wie möglich in jede VM einzubauen, von denen jemals erwartet werden kann, dass sie viel CPU benötigen. Die Ausnahme wäre, wenn Sie VMs haben, die entscheidend von der Latenz abhängen. Ich würde auch die Anzahl der Kerne auf "kleineren" oder "weniger wichtigen" VMs reduzieren, die eine physische Box mit kritischeren VMs teilen.
Der Hypervisor weist physischen Kernen im Rahmen seiner Planungsrichtlinie logische Kerne zu. Es gibt keine feste Zuordnung, es sei denn, Sie erstellen speziell eine. (Was ich nur in dem speziellen Fall empfehle, in dem Sie einen Kern für eine latenzkritische VM reservieren möchten.)