La virtualizzazione della CPU sottolinea le prestazioni e viene eseguita direttamente sul processore ogni volta che è possibile. Quando possibile, le risorse fisiche sottostanti vengono utilizzate e il livello di virtualizzazione esegue le istruzioni solo se necessario per fare in modo che le macchine virtuali funzionino come se fossero in esecuzione direttamente su una macchina fisica.
La virtualizzazione della CPU non corrisponde all'emulazione. ESXi non utilizza l'emulazione per eseguire le CPU virtuali. Con l'emulazione, tutte le operazioni sono eseguite nel software da un emulatore. Un emulatore del software consente l'esecuzione dei programmi su un sistema di computer diverso da quello per cui erano originariamente scritti. L'emulatore lo fa utilizzando o riproducendo il comportamento del computer originale accettando gli stessi dati o input e ottenendo gli stessi risultati. L'emulazione fornisce la portabilità ed esegue il software designato per una piattaforma in diverse piattaforme.
Quando le risorse CPU sono overcommit, l' ESXi 'host distingue i processori fisici in tutte le macchine virtuali in modo che ogni macchina virtuale sia eseguita come se fosse il numero specificato di processori virtuali. Quando un host ESXi esegue più macchine virtuali, alloca a ciascuna macchina virtuale una condivisione delle risorse fisiche. Con le impostazioni di allocazione delle risorse predefinite, tutte le macchine virtuali associate allo stesso host ricevono una condivisione uguale di CPU per CPU virtuale. Questo significa che a una macchina virtuale con un solo processore è assegnata solo la metà delle risorse di una macchina virtuale con doppio processore.
Virtualizzazione CPU basata su software
Con la virtualizzazione CPU basata su software, il codice dell'applicazione guest viene eseguito direttamente sul processore, mentre il codice privilegiato guest viene convertito e il codice convertito viene eseguito sul processore.
Il codice convertito è leggermente più grande e di solito è più lento rispetto alla versione nativa. Di conseguenza, le applicazioni guest, che hanno un componente di codice privilegiato di piccole dimensioni, vengono eseguite con velocità molto vicine alla nativa. Le applicazioni con un componente di codice privilegiato significativo, come chiamate di sistema, trap o aggiornamenti della tabella delle pagine, possono essere eseguite più lentamente nell'ambiente virtualizzato.
Virtualizzazione CPU assistita da hardware
Alcuni processori forniscono assistenza hardware per la virtualizzazione CPU.
Quando si utilizza questa assistenza, il guest può utilizzare una modalità di esecuzione separata, denominata modalità guest. Che si tratti del codice dell'applicazione o del codice privilegiato, il codice guest viene eseguito in modalità guest. In alcuni eventi, il processore esce dalla modalità guest ed entra in modalità root. L'hypervisor viene eseguito in modalità root, determina il motivo dell'uscita, esegue le azioni necessarie e riavvia il guest in modalità guest.
Quando si utilizza l'assistenza hardware per la virtualizzazione, non è necessario tradurre il codice. Di conseguenza, le chiamate di sistema o i carichi di lavoro con un numero elevato di trap si avvicinano molto alla velocità nativa. Alcuni carichi di lavoro, come quelli che coinvolgono aggiornamenti alle tabelle delle pagine, comportano un gran numero di uscite dalla modalità guest alla modalità root. In base al numero di tali uscite e al tempo totale trascorso in esse, la virtualizzazione CPU assistita da hardware può velocizzare l'esecuzione in modo significativo.
Virtualizzazione e comportamento specifico del processore
Sebbene il software VMware virtualizzi la CPU, la macchina virtuale rileva il modello specifico del processore su cui è in esecuzione.
I modelli dei processori possono essere diversi nelle funzionalità della CPU che offrono e le applicazioni in esecuzione nella macchina virtuale possono utilizzare queste funzionalità. Non è quindi possibile utilizzare vMotion® per eseguire la migrazione delle macchine virtuali tra sistemi eseguiti su processori con set di funzionalità differenti. In alcuni casi, è possibile evitare questa restrizione utilizzando la compatibilità EVC (Enhanced vMotion Compatibility) con processori che supportano questa funzionalità. Per ulteriori informazioni, vedere la documentazione relativa a vCenter Server e gestione degli host .
Implicazioni della virtualizzazione della CPU per le prestazioni
La virtualizzazione della CPU aggiunge diverse quantità di overhead in base al carico di lavoro e al tipo di virtualizzazione utilizzato.
Un'applicazione è associata alla CPU se dedica la maggior parte del suo tempo all'esecuzione di istruzioni anziché in attesa di eventi esterni come l'interazione dell'utente, l'input del dispositivo o il recupero dei dati. Per tali applicazioni, l'overhead della virtualizzazione della CPU include le istruzioni aggiuntive che devono essere eseguite. Questo overhead richiede un tempo di elaborazione della CPU che l'applicazione stessa può utilizzare. L'overhead della virtualizzazione della CPU generalmente si traduce in una riduzione delle prestazioni complessive.
Per le applicazioni che non sono associate alla CPU, la virtualizzazione della CPU si traduce probabilmente in un aumento dell'utilizzo della CPU. Se è disponibile capacità di CPU di riserva per assorbire l'overhead, questa può ancora fornire prestazioni simili in termini di velocità effettiva complessiva.
ESXi supporta fino a 128 processori virtuali (CPU) per ogni macchina virtuale.
Le applicazioni a thread singolo possono sfruttare solo una singola CPU. La distribuzione di tali applicazioni nelle macchine virtuali con processore doppio non velocizza l'applicazione. Al contrario, la seconda CPU virtuale usa risorse fisiche che potrebbero essere altrimenti utilizzate da altre macchine virtuali.