Qual è la differenza di prestazioni di una macchina virtuale rispetto all'host fisico?


15

Dove lavoro, eseguiamo PC relativamente potenti usando la distribuzione Debian Linux. Tuttavia per alcuni programmi che è necessario installare sarebbe meglio avere CentOS e questi sarebbero i nostri principali strumenti di lavoro. Cambiare il sistema operativo per tutti i computer nel nostro posto di lavoro è una possibilità, ma stiamo provando a decidere se usare VirtualBox è una scelta migliore per semplicità.

Tutto questo dipende dal punto seguente. I programmi che dobbiamo eseguire sono simulatori che sono compiti molto impegnativi per i processori che possono essere facilmente eseguiti fino a un'ora o più ogni volta che viene lanciata una simulazione. Dobbiamo decidere se il degrado delle prestazioni quando si utilizza Virtual Box è abbastanza grande da meritare il nostro cambiamento del sistema operativo.

Quindi la mia domanda è se qualcuno può dirmi in modo verificabile quali sono le prestazioni colpite dall'esecuzione di un'attività intensiva del processore nella scatola virtuale rispetto all'esecuzione sul PC nativo?

Grazie.

Risposte:


15

Per i programmi a crunch numerico (molto legati alla CPU), la VM dovrebbe avere un rendimento quasi nullo. Le istruzioni vengono eseguite direttamente sulla CPU, che è la stessa per host e VM.

Anche per serie attività di compilazione, la differenza di prestazioni è appena percettibile. Eseguiamo VM CentOS in VMware su Windows.

Dato che stai eseguendo Linux sull'host, potresti anche considerare KVM (Kernel Virtual Machine) invece di VirtualBox. È una serie di moduli del kernel che fornisce servizi di virtualizzazione in Linux, utilizzando le estensioni di virtualizzazione Intel VT-x disponibili sulla maggior parte delle CPU moderne. QEMU utilizza KVM come acceleratore per eseguire il codice x86 direttamente sulla CPU host.

Basta installare il virt-managerper provarlo.


Ok. Ci proverò. Grazie per la risposta.
aarelovich,

In che modo, per quanto riguarda le prestazioni, KVM si confronta con VirtualBox (diciamo che eseguiamo Windows 10 su sistema Linux)?
Royi

Dovrebbero essere quasi identici se VirtualBox sta sfruttando le estensioni di virtualizzazione della CPU (come fa KVM) e il carico di lavoro è principalmente legato alla CPU. Se le attività sono pesanti di I / O, le prestazioni variano a seconda dell'hardware selezionato. KVM ha driver paravirtualizzati (virtio) che possono superare di gran lunga quelli dei dispositivi emulati (es. NIC E1000 e controller del disco SCSI LSI). Generalmente però dovrebbero essere ragionevolmente vicini.
Jonathon Reinhart,

6

Non esiste una sola buona risposta a questo. Dipende molto da come usi una VM e da quali programmi.

Ad esempio, l'utilizzo di VMWare (un hypervisor di tipo 2) e un programma associato esclusivamente alla CPU hanno prodotto quasi la massima velocità della CPU. Se avessi usato lo stesso hypervisor in un programma con molte chiamate di sistema, avrei avuto un serio rallentamento.

E le cose cambiano anche quando si utilizza un SO hypervisor di tipo 1 (nessun guest). E anche tra quelli hai molte varianti. Ad esempio Xen con 5 modalità (IIRC degli ultimi fine settimana FOSDEM talk su Xen) che supporta. Da HW a para virtualizzato.

Ricapitolando: come richiesto, può variare da quasi nessun rallentamento a molto più lento.


Ora, se mi concentro su VirtualBox, questo è un hypervisor di tipo 2. I programmi puramente legati alla CPU dovrebbero andare bene.


La maggior parte di questi programmi essenzialmente trasforma un linguaggio in codice C e lo compila. Quando eseguiamo una simulazione, questa compilation è ciò che viene eseguito. Secondo te, allora dovrebbe andare bene?
aarelovich,

Sospetto che le prestazioni andranno bene. La mia esperienza con la scatola virtuale è limitata (ho usato principalmente la workstation VMware), ma non vedo ragioni tecniche per cui dovrebbe essere lenta.
Hennes,

In che modo, per quanto riguarda le prestazioni, KVM si confronta con VirtualBox (diciamo che eseguiamo Windows 10 su sistema Linux)?
Royi

5

In realtà, sembra che Docker potrebbe essere un'opzione ancora migliore per quello che stai facendo. Docker fornisce contenitori, che sono sandbox isolati eseguiti sullo stesso kernel. Il sovraccarico della chiamata di sistema / I / O è zero, poiché i processi in container non sono diversi da quelli sull'host.

Dato che stai già eseguendo Linux, Docker sarebbe un ottimo modo per fornire un ambiente CentOS senza dover reinstallare tutti i tuoi computer.

Inoltre, controlla la mia utility, Scuba , che semplifica l'esecuzione di cose come build all'interno di un container Docker. Invece di correre make, correresti scuba make. È tutto!


Fammi sapere se vuoi provare questo e hai bisogno di aiuto per iniziare.
Jonathon Reinhart,

Grazie, ma è stato tanto tempo fa e la decisione è stata presa per fare la mossa. Ma terrò conto di ciò quando dovrò eseguire un programma che presenta problemi nell'esecuzione di CentOS.
aarelovich,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.