Virtualização assistida por hardware - Hardware-assisted virtualization
Na computação , a virtualização assistida por hardware é uma abordagem de virtualização de plataforma que permite uma virtualização completa e eficiente usando a ajuda de recursos de hardware, principalmente dos processadores host. Uma virtualização completa é usada para emular um ambiente de hardware completo, ou máquina virtual , em que um sistema operacional convidado não modificado (usando o mesmo conjunto de instruções da máquina host) é executado de forma totalmente isolada. A virtualização assistida por hardware foi adicionada aos processadores x86 ( Intel VT-x ou AMD-V ) em 2005 e 2006 (respectivamente).
A virtualização assistida por hardware também é conhecida como virtualização acelerada ; O Xen a chama de máquina virtual de hardware ( HVM ) e a Virtual Iron a chama de virtualização nativa .
História
A virtualização assistida por hardware apareceu pela primeira vez no IBM System / 370 em 1972, para uso com VM / 370 , o primeiro sistema operacional de máquina virtual. Com a crescente demanda por computação gráfica de alta definição (por exemplo, CAD ), a virtualização de mainframes perdeu alguma atenção no final dos anos 1970, quando os próximos minicomputadores promoveram a alocação de recursos por meio da computação distribuída , abrangendo a comoditização dos microcomputadores .
A IBM oferece virtualização de hardware para suas CPUs POWER em AIX (por exemplo, System p ) e para seu IBM- Mainframes System z . A IBM se refere à sua forma específica de virtualização de hardware como "partição lógica" ou, mais comumente, como LPAR .
O aumento na capacidade de computação por servidor x86 (e em particular o aumento substancial nas larguras de banda das redes modernas) reacendeu o interesse na computação baseada em data center que é baseada em técnicas de virtualização. O principal motivador era o potencial para consolidação de servidor: a virtualização permitia que um único servidor consolidasse a capacidade de computação de maneira econômica em vários servidores dedicados subutilizados. A marca mais visível de um retorno às raízes da computação é a computação em nuvem , que é sinônimo de computação baseada em data center (ou computação semelhante a mainframe) por meio de redes de alta largura de banda. Ele está intimamente ligado à virtualização.
A implementação inicial da arquitetura x86 não atendeu aos requisitos de virtualização Popek e Goldberg para atingir a "virtualização clássica":
- equivalência : um programa em execução no monitor de máquina virtual (VMM) deve exibir um comportamento essencialmente idêntico ao demonstrado quando executado em uma máquina equivalente diretamente
- controle de recursos (também chamado de segurança ): o VMM deve estar no controle total dos recursos virtualizados
- eficiência : uma fração estatisticamente dominante de instruções de máquina deve ser executada sem intervenção do VMM
Isso dificultou a implementação de um monitor de máquina virtual para esse tipo de processador. Limitações específicas incluíam a incapacidade de seguir algumas instruções privilegiadas .
Para compensar essas limitações arquitetônicas, os designers realizaram a virtualização da arquitetura x86 por meio de dois métodos: virtualização completa ou paravirtualização . Ambos criam a ilusão de hardware físico para atingir o objetivo de independência do sistema operacional em relação ao hardware, mas apresentam algumas desvantagens em desempenho e complexidade.
- A virtualização completa foi implementada em VMMs x86 de primeira geração. Ele depende da tradução binária para interceptar e virtualizar a execução de certas instruções confidenciais e não virtualizáveis. Com essa abordagem, as instruções críticas são descobertas (estaticamente ou dinamicamente em tempo de execução) e substituídas por armadilhas no VMM para serem emuladas no software. A tradução binária pode incorrer em uma grande sobrecarga de desempenho em comparação a uma máquina virtual rodando em arquiteturas virtualizadas nativamente, como o IBM System / 370. VirtualBox , VMware Workstation (apenas para convidados de 32 bits) e Microsoft Virtual PC são implementações comerciais bem conhecidas de virtualização completa.
- Paravirtualização é uma técnica em que o hipervisor fornece uma API e o sistema operacional da máquina virtual convidada chama essa API, exigindo modificações no sistema operacional.
Em 2005 e 2006, a Intel e a AMD (trabalhando de forma independente) criaram novas extensões de processador para a arquitetura x86 chamadas Intel VT-x e AMD-V, respectivamente. Na arquitetura Itanium , a virtualização assistida por hardware é conhecida como VT-i. A primeira geração de processadores x86 para suportar essas extensões foi lançada no final de 2005, no início de 2006:
- Em 13 de novembro de 2005, a Intel lançou dois modelos de Pentium 4 (Modelo 662 e 672) como os primeiros processadores Intel a oferecer suporte a VT-x.
- Em 23 de maio de 2006, a AMD lançou o Athlon 64 ("Orleans"), o Athlon 64 X2 ("Windsor") e o Athlon 64 FX ("Windsor") como os primeiros processadores AMD a oferecer suporte a essa tecnologia.
Implementações bem conhecidas de virtualização x86 assistida por hardware incluem VMware Workstation (somente para convidados de 64 bits), XenCenter, Xen 3.x (incluindo derivados como Virtual Iron), Linux KVM e Microsoft Hyper-V .
Vantagens
A virtualização assistida por hardware reduz a sobrecarga de manutenção da paravirtualização, pois reduz (de preferência, elimina) as mudanças necessárias no sistema operacional convidado. Também é consideravelmente mais fácil obter um melhor desempenho. Um benefício prático da virtualização assistida por hardware foi citado por engenheiros da VMware e Virtual Iron.
Desvantagens
A virtualização assistida por hardware requer suporte explícito na CPU host, que não está disponível em todos os processadores x86 / x86_64.
Uma abordagem de virtualização "pura" assistida por hardware, usando sistemas operacionais convidados inteiramente não modificados, envolve muitas armadilhas de VM e, portanto, sobrecargas de CPU altas, limitando a escalabilidade e a eficiência da consolidação do servidor. Esse impacto no desempenho pode ser mitigado pelo uso de drivers paravirtualizados; a combinação foi chamada de "virtualização híbrida".
Em 2006, o suporte de hardware x86 de primeira geração de 32 e 64 bits raramente oferecia vantagens de desempenho em relação à virtualização de software.
Veja também
- Intel VT-d
- Refinamentos adicionais da virtualização assistida por hardware são possíveis usando um IOMMU ; isso permite acesso de velocidade nativa a hardware dedicado a partir de um sistema operacional convidado, incluindo hardware compatível com DMA
- Tradução de endereços de segundo nível (SLAT) , implementações incluindo indexação rápida de virtualização ou tabelas de página estendida
- Outras técnicas de virtualização incluem virtualização em nível de sistema operacional , conforme praticado por Parallels Virtuozzo Containers , e virtualização de aplicativo .
- Nanokernel
- Emulação de hardware
- Emulador
- Grupo de ação de teste conjunto
- Interface do modo de depuração em segundo plano
- Emulador de circuito
Referências
- ^ Adams, Keith. "Uma comparação de técnicas de software e hardware para virtualização x86" (PDF) . Retirado em 20 de janeiro de 2013 .
- ^ Chris Barclay, New approach to virtualizing x86s , Network World , 20 de outubro de 2006
- ^ Consulte "Gráficos e virtualização de E / S" .
- ^ Consulte "Virtualização híbrida: a próxima geração do XenLinux" . Arquivado em 20 de março de 2009, na Wayback Machine
- ^ Jun Nakajima e Asit K. Mallick, "Hybrid-Virtualization — Enhanced Virtualization for Linux" Archived 2009-01-07 na Wayback Machine , em Proceedings of the Linux Symposium , Ottawa, junho de 2007.
- ^ Uma comparação de técnicas de software e hardware para virtualização x86, Keith Adams e Ole Agesen, VMware, ASPLOS'06 21 a 25 de outubro de 2006, San Jose, Califórnia, EUA "Surpreendentemente, descobrimos que o suporte de hardware de primeira geração raramente oferece Vantagens de desempenho sobre as técnicas de software existentes. Atribuímos essa situação aos altos custos de transição de VMM / convidado e a um modelo de programação rígido que deixa pouco espaço para a flexibilidade do software no gerenciamento da frequência ou do custo dessas transições.
Leitura adicional
- Fisher-Ogden, John. "Suporte de hardware para virtualização eficiente" (PDF) . UCSD . Página visitada em 05-08-2010 .
- Smith, Jim; Nair, Ravi (2005). Máquinas virtuais . Morgan Kaufmann. 8.5: Aprimoramento de desempenho de máquinas virtuais do sistema. ISBN 1-55860-910-5 .
- Osisek, DL; Jackson, KM; Gum, PH (1991). "Arquitetura de execução interpretativa ESA / 390, base para VM / ESA" (PDF) . IBM Systems Journal . 30 (1): 34–51. doi : 10.1147 / sj.301.0034 .
- Adams, Keith; Agesen, Ole (2006). Uma comparação de técnicas de software e hardware para virtualização x86 (PDF) . Conferência Internacional sobre Suporte à Arquitetura para Linguagens de Programação e Sistemas Operacionais, San Jose, CA, EUA. ACM 1-59593-451-0 / 06/0010 . Página visitada em 2006-12-22 .
- "Avaliação de desempenho do AMD RVI Hardware Assist" (PDF) . VMware .
- "Avaliação de desempenho do Intel EPT Hardware Assist" (PDF) . VMware .