Como a virtualização pode ser eficiente?

6

Pelo que entendi, a máquina virtual e o sistema operacional convidado dobra a quantidade de camadas de abstração (que são computacionalmente relevantes) entre a interface do usuário e a potência pura do hardware. Algumas das camadas de abstração são hardware (emulado), drivers, interfaces IO, etc.

Soluções de virtualização de alto nível como o Xen provavelmente eliminam algumas dessas complexidades, mas ainda me pergunto como a eficiência é alcançada nesses ambientes; e se os servidores em nuvem gerenciáveis realmente valem o preço de desempenho.

    
por pestaa 04.12.2010 / 22:10

4 respostas

4

A resposta à sua pergunta é muito simples: a virtualização não é eficiente (ainda não). As máquinas virtuais funcionam bem o suficiente (especialmente em hardware semelhante) e são uma solução, mas nunca alcançarão o mesmo desempenho que as máquinas físicas reais. Na minha empresa, muitas vezes precisamos explicar aos clientes quando é hora de migrar uma máquina virtual para a física.

Como você esperaria que vários sistemas operacionais virtuais trabalhassem com eficiência, quando nenhum deles sabe que é virtual? Como você esperaria que qualquer um dos drivers tomasse decisões inteligentes sobre filas e prioridades quando eles não conseguissem ver a fila correspondente nas outras máquinas virtuais? Inferno, eles nem conseguem ver o hardware físico real, baseando todas as decisões em fantasmas virtuais.

Por exemplo, toda máquina virtual inocente irá interromper a CPU pelo menos 1000 vezes por segundo, a fim de avançar seu relógio. Coloque n máquinas virtuais em um físico e você terá (n + 1) * 1000 interrupções por segundo! Sem mencionar que a interrupção é, de longe, a operação mais lenta da CPU.

Acredito que, no futuro, veremos novos sistemas operacionais que funcionarão com eficiência como convidados do host. A tendência já é inventar dispositivos de hardware virtual com pequenos drivers triviais que deixam todas as decisões para a máquina física real. Mas ainda não estamos lá.

John T explicou todas as vantagens e conveniências da virtualização. Vou apenas retomar dizendo que eles são simplesmente usados por conveniência e economia. Eles são tão fáceis de se locomover, e em uma corporação que tem muitos servidores pouco usados espalhados em seus centros de TI, é muito tentador colocar vários deles em uma máquina física e esquecer todo o lote. Sem mencionar que ter menos caixas físicas ao redor simplifica a manutenção.

    
por 04.12.2010 / 22:46
5

Existem muitas vantagens da virtualização. A eficiência depende de como você a define.

Em vez de ter várias máquinas em uma sala de servidores, você pode usar a virtualização para:

  • Economize espaço
  • Economize em eletricidade
  • Use seu hardware com mais eficiência
  • Reduza os custos de hardware
  • Consolidar gerenciamento
  • Simplifique os backups (dependendo da sua configuração)
  • Diminui o tempo de inatividade (mais uma vez, dependendo da sua configuração - recursos de alta disponibilidade, etc.)
  • Simplifique a atualização de software e possíveis problemas com a funcionalidade de instantâneo
  • Diminuir significativamente o tempo do projeto por meio de modelos virtuais

E a lista continua. Naturalmente, a virtualização tem suas ressalvas, mas forma a experiência pessoal que os profissionais superam amplamente os contras. Em um ambiente corporativo, você definitivamente desejará buscar uma plataforma de virtualização com o mínimo de abstração possível para que seu software fique mais próximo do metal. A virtualização é (no ponto de vista atual), o caminho do futuro.

    
por 04.12.2010 / 22:21
5

A virtualização é eficiente, principalmente porque, na maioria dos ambientes de servidor, grande parte do hardware está ocioso. A virtualização permite que você tenha mais de um convidado virtual por host físico para aproveitar esse poder ocioso. Isso traz inúmeros benefícios para a eficiência, em termos de potência, desempenho, custo e equipe:

  • A consolidação de vários servidores em uma única máquina elimina algum desperdício de energia alimentando o hardware principal em cada máquina adicional. Agora há menos coisas como ventiladores e discos para continuar girando.
  • Agora, sua estratégia de compra pode levar isso em conta, à medida que você procura por servidores gerais de menos, maiores e mais poderosos, em vez de servidores menores de uso único. Isso permite que você consolide servidores ainda mais, aumentando ainda mais a economia do ponto anterior. Com o tempo, isso também ajudará a impulsionar uma economia de escala em relação a esses servidores que costumavam ser considerados de alta qualidade, tornando-os mais acessíveis para todos e economizando em coisas como fabricação e despesas gerais de envio.
  • Os fabricantes de hardware e sistemas operacionais agora levam em conta a virtualização em seus projetos (principalmente por meio da implementação e suporte para VT-x ), permitindo que você compartilhe recursos entre as máquinas. Por exemplo, se você tiver 3 instâncias do mesmo sistema operacional que os convidados virtuais carregados na RAM no mesmo host físico, certas partes de cada sistema operacional que permanecerão as mesmas poderão ser compartilhadas entre as três, permitindo que você obtenha mais trabalho fora do mesmo hardware e consolidar ainda mais.
  • As máquinas virtuais são mais fáceis de gerenciar e manter, porque você tem um ambiente de hardware virtual padrão. Precisa aposentar um servidor antigo e migrar para um novo? Não é grande coisa - basta copiar seus discos rígidos virtuais, alterar algumas configurações para apontar para o novo local e você está pronto para começar. Os próprios sistemas operacionais não sabem que foram removidos, tirando metade do trabalho do processo. Esse tipo de benefício tem o potencial de criar enormes eficiências em termos de equipe de TI.
  • Toda essa consolidação reduz ainda mais a necessidade de equipe de TI, pois agora há muito menos servidores físicos para gerenciar.

Eu sei que muito disso parece que pode ajudar apenas em lojas com muitos servidores, mas como um exemplo menor em que trabalho no começo do ano passado, nós tínhamos 14 servidores físicos e, no final de no ano que vem, espero reduzir para apenas 5. Isso inclui 3 instâncias de coisas que não são sempre virtualizadas: um appliance de gateway, um sql server e um controlador de domínio. Isso significa que eu teria consolidado 11 servidores que eu costumava ter para gerenciar apenas 2 (com um olho para adicionar um terceiro para fornecer mais espaço e redundância).

Qualquer pessoa que precise de pelo menos três servidores (e entre serviços de controlador de domínio / autenticação / serviços básicos de rede, arquivo, impressão, e-mail, banco de dados e aplicativos, a maioria dos negócios de qualquer tamanho) deve obter algum benefício da consolidação até 2 - embora eu sempre mantenha pelo menos 2 por razões de redundância - se um deles cair, o servidor restante pode mancar ao longo de toda a carga, ainda que lentamente, até que você possa colocar o outro online novamente.

Atualização:
Coloquei um dos meus pontos em negrito, porque acho que o OP falhou e explica como as máquinas virtuais também resultam em aumento de desempenho.

    
por 04.12.2010 / 23:26
2

As duas respostas (até agora) que dizem que é eficiente abordam a virtualização na escala da empresa. Também é eficiente (para certas definições de eficiência) para uso pessoal. Eu tenho 1 laptop, mas 5 sistemas operacionais. Eu posso testar meu software em um sistema operacional "limpo", sabendo que não há chaves de registro pendentes ou qualquer outra coisa do tipo de instalações anteriores, etc.

E, claro, para a definição estrita da eficiência da CPU, não é tão bom quanto o hardware dedicado.

    
por 05.12.2010 / 00:43