Qual é a diferença de desempenho de uma máquina virtual em relação ao host físico?

15

Onde trabalho, estamos executando PCs relativamente poderosos usando a Distribuição Linux Debian. No entanto, para certos programas que precisamos instalar, seria melhor ter o CentOS e essas seriam nossas principais ferramentas de trabalho. Alterar o sistema operacional para todos os computadores em nosso local de trabalho é uma possibilidade, mas estamos tentando decidir se o VirtualBox é a melhor opção para simplificar.

Isso tudo depende do seguinte ponto. Os programas que precisamos executar são simuladores, tarefas muito intensivas em processador que podem executar facilmente até uma hora ou mais a cada vez que uma simulação é iniciada. Precisamos decidir se a degradação do desempenho ao usar o Virtual Box é grande o suficiente para merecer nossa mudança de SO.

Portanto, minha pergunta é se alguém pode me dizer de maneira verificável qual é o desempenho atingido ao executar uma tarefa intensiva do processador na caixa virtual, em vez de executá-la no PC nativo?

Obrigado.

aarelovich
fonte

Respostas:

15

Para programas de processamento de números (muito vinculado à CPU), deve haver quase zero de desempenho para a VM. As instruções são executadas diretamente na CPU, que é a mesma para host e VM.

Mesmo para tarefas sérias de compilação, a diferença de desempenho é quase imperceptível. Executamos VMs CentOS no VMware no Windows.

Como você está executando o Linux no host, considere também o KVM (Kernel Virtual Machine) em vez do VirtualBox. É uma série de módulos de kernel que fornece serviços de virtualização no Linux, usando as extensões de virtualização Intel VT-x disponíveis na maioria das CPUs modernas. O QEMU usa o KVM como um acelerador para executar o código x86 diretamente na CPU do host.

Basta instalar o virt-managerpara experimentá-lo.

Jonathon Reinhart
fonte
Está bem. Vou tentar. Obrigado pela resposta.
aarelovich 03/02
Como o KVM, em termos de desempenho, se compara ao VirtualBox (digamos, executando o Windows 10 no sistema Linux)?
Royi 8/05/19
Eles devem ser quase idênticos se o VirtualBox estiver aproveitando as extensões de virtualização da CPU (como o KVM faz) e a carga de trabalho estiver principalmente ligada à CPU. Se as tarefas forem pesadas de E / S, o desempenho variará dependendo do hardware selecionado. O KVM possui drivers paravirtualizados (virtio) que podem superar muito os dispositivos emulados (por exemplo, controlador de disco E1000 NIC e LSI SCSI). Geralmente eles devem estar razoavelmente próximos.
Jonathon Reinhart
6

Não existe uma única resposta boa para isso. Depende muito de como você usa uma VM e de quais programas.

Por exemplo, o uso do VMWare (um hipervisor tipo 2) e um programa puramente vinculado à CPU gerou uma velocidade quase total da CPU. Se eu usasse o mesmo hipervisor em um programa com muitas chamadas de sistema, ocorreria uma desaceleração séria.

E as coisas também mudam quando você usa um SO do hipervisor tipo 1 (sem convidado). E mesmo entre aqueles que você tem muitas variações. Por exemplo, Xen com 5 modos (IIRC do FOSDEM da semana passada conversando sobre Xen) que ele suporta. De HW usando para para virtualizado.

Para recapitular: Conforme solicitado, pode variar de quase sem desaceleração a seriamente mais lento.


Agora, se eu me concentrar no VirtualBox, esse é um hipervisor tipo 2. Programas puramente vinculados à CPU devem estar bem.

Hennes
fonte
A maioria desses programas essencialmente transforma uma linguagem no código C e a compila. Quando executamos uma simulação, essa compilação é o que é executada. Accoridng para você, então tudo bem?
aarelovich
Eu suspeito que o desempenho vai ficar bem. Minha experiência com caixas virtuais é limitada (usei principalmente a estação de trabalho VMware), mas não vejo razões técnicas para que seja lenta.
Hennes 03/02
Como o KVM, em termos de desempenho, se compara ao VirtualBox (digamos, executando o Windows 10 no sistema Linux)?
Royi 8/05/19
5

Na verdade, parece que o Docker pode ser uma opção ainda melhor para o que você está fazendo. O Docker fornece contêineres, que são sandbox isolados que são executados sobre o mesmo kernel. A sobrecarga de chamada / E / S do sistema é zero, pois os processos no contêiner não são diferentes dos do host.

Como você já está executando o Linux, o Docker seria uma ótima maneira de fornecer um ambiente CentOS sem precisar reinstalar todas as suas máquinas.

Além disso, confira meu utilitário Scuba , que facilita a execução de coisas como compilações dentro de um contêiner do Docker. Em vez de correr, makevocê correria scuba make. Isso é tudo!

Jonathon Reinhart
fonte
Deixe-me saber se você gostaria de experimentar e precisa de ajuda para começar.
Jonathon Reinhart 24/10
Obrigado, mas isso foi há muito tempo e a decisão foi tomada para fazer a mudança. Mas levarei isso em consideração quando for necessário executar um programa com problemas ao executar o Con CentOS.
aarelovich