Could someone explain how it is different? Is there a performance difference? Any reason for me to choose one instead of the other?
Como a outra resposta que você já explicou, existem algumas diferenças arquitetônicas entre os dois projetos.
Grosso modo, no que se refere a um hipervisor Intel VT, para ativar o hipervisor você executa (na montagem) uma sequência especial de instruções, culminando em VMXON
. Isso habilita o modo hipervisor.
Parte desse trabalho envolve a definição de máquinas virtuais em termos de suas tabelas de páginas estendidas ou o equivalente da AMD. É como a tarefa comum de configurar tabelas de páginas (o que a memória mapeia onde), exceto que você faz isso para regiões de memória inteiras para máquinas virtuais. A tecnologia de VM anterior acabou de capturar VM Exits para esse propósito , que são essencialmente como interrupções de hardware sofisticadas.
Como isso se refere à arquitetura? Bem, você tem duas opções para criar um hipervisor:
-
Crie um hipervisor autônomo que configure o monitor de máquina virtual e espere pelos sistemas operacionais convidados. Geralmente, ele contém o suficiente de seu próprio sistema operacional para gerenciar as VMs ou suporta um convidado privilegiado. Por exemplo, o Xen Hypervisor inclui um "convidado" "Dom0" que tem a capacidade de gerenciar o hipervisor.
-
Construa um hypervisor como parte de um kernel existente, por exemplo, como um módulo do kernel. O código pode ser instalado como um monitor de máquina virtual no Intel VT em qualquer momento durante a vida útil do sistema operacional (supondo privilégios suficientes) e também removido. Como tal, o código do hipervisor simplesmente configura o espaço necessário necessário na memória conforme necessário.
Praticamente, a diferença para o usuário final é que você não pode descarregar o hipervisor se ele for do primeiro tipo sem reinicializar. Isso ocorre porque ele age como um sistema operacional por si só. O Hyper-V age assim - se você tiver o Hyper-V instalado, não poderá instalar o VirtualBox, por exemplo, porque ambos não podem compartilhar o espaço do monitor da máquina virtual (já que o Hyper-V já o possui). Para descarregar o hipervisor, você precisa reinicializar.
Para simplificar: se você tiver o Hyper-V instalado, mesmo que não tenha VMs em execução, não poderá usar nenhum outro produto de virtualização. Este não é o caso do Virtual PC.
Agora, desempenho. Em sistemas baseados no Intel VT, se você carregar o sistema operacional ou o hipervisor primeiro provavelmente faz pouca diferença de desempenho, já que esta é apenas uma área limitada por CPU e se você já estiver usando virtualização assistida por hardware de CPU, como você pode conseguir de qualquer maneira.
Em termos de desempenho, as diferenças na virtualização vêm de técnicas como paravirtualização e o uso de IOMMU / Mapeamento do DMA . Em suma, a ordem de organização de memória / CPU do sistema operacional não fará tanta diferença quanto se você pode ou não virtualizar eficientemente coisas como discos rígidos, placas gráficas, etc.
Soa muito de este blog postar que o Hyper-V teve problemas no passado com preocupações de virtualização do tipo consumidor: gráficos, som, etc. Eu não executei o Hyper-V precisando dessas coisas, então não posso comentar se eles ainda é um problema, mas pode valer a pena investigar.