Intel's processoren hebben vaak zogeheten Hyperthreading.
Met die techniek kan 1 CPU Core 2 Threads afhandelen. In essentie wordt die ene core effectief twee cores met een gedeeld cache geheugen en gedeelde databus.
Echter, dat werkt niet altijd.
De CPU Core bestaat uit een hele grote stapel van allerlei verschillende 'Execution Units', en hij grijpt er een aantal bij elkaar die hij nodig heeft voor de huidige opdracht. Is die opdracht heel complex, dan heeft hij heel veel Execution Units nodig voor één thread en blijft er niet voldoende over voor een tweede thread.
Om die reden geeft Hyperthreading geen boost die gelijkwaardig is aan een echte extra Core, maar meer ergens tussen 20 en 70%, afhankelijk van de het soort werk wat er gedaan wordt.
vCPU is weer een heel ander beestje.
In essentie is dat een vorm van TIme Division Multiplexing.
'De hoeveelheid opdrachten die de CPU kan verwerken in 1 seconde wordt verdeeld in stukjes.
Stel dat je 4 vCPU's wil hebben, dan mag vCPU 1 de eerste 0,25 seconde de fysieke CPU gebruiken en gaat dan op pauze.
Dan is vCPU 2 aan de beurt, die ook weer 0,25seconde van de fysieke CPU gebruikt en dan op pauze gaat. En zo voorts tot ze allemaal zijn geweest, en dan begint het verhaal weer opnieuw.
Op die manier kan je de rekenkracht van je systeem verdelen over meerdere VM's, ookal heb je maar één singlecore CPU, en denken ze allemaal dat ze hun eigen CPU hebben.
Uiteraard is dat vrij simplistisch uitgelegd en zijn daar wel geavanceerdere technieken voor, maar effectief kan je dus CPU rekenkracht herverdelen in virtuele CPU's, onafhankelijk van hoeveel cores of CPU's er daadwerkelijk aanwezig zijn. Je zit dan dus niet vast aan het statisch toewijzen van een fysieke CPU of Core aan een VM.
[
Voor 10% gewijzigd door
McKaamos op 03-09-2016 09:39
]