Virtualização em Multicores

O objetivo desta pesquisa é o estudo e avaliação do suporte à virtualização para processadores multi-core através do projeto e simulação de uma arquitetura de conjunto de instruções que possa executar algumas operações típicas dos Monitor de Máquinas Virtuais (MMVs).

Conceitos:

Virtualização: capacidade de executar múltiplos sistemas operacionais em uma única plataforma física, dividindo os recursos de hardware.

Monitor de Máquinas Virtuais (Virtual Machine Monitor): software que gerencia a distribuição dos recursos de hardware para cada sistema operacional convidado em execução, criando um ambiente virtual isolado (máquina virtual) para cada sistema operacional convidado. O MMV faz os SOs convidados acreditarem que possuem o controle do hardware.

Motivação:

Por que criar um conjunto de instruções para dar suporte à virtualização?
Para melhorar o desempenho dos MMVs. O gerenciamento e distribuição dos recursos feito pelo MMV para cada SO causa um overhead. Provendo instruções que facilitem esse gerenciamento quer-se permitir uma simplificação do MMV.

Situação atual

Atualmente existe suporte à virtualização na arquitetura IA-32 e Itanium da Intel. Apesar de implementarem de maneira diferente esse suporte, ambas possuem um bit que indica se está executando em modo hospedeiro ou em modo convidado, cada um desses 2 modos possui os 4 níveis de privilégio já existentes anteriormente (nível 0 ao 3). Fazendo o SO convidado executar em modo convidado no nível 0 de privilégio, o SO convidado acredita que possui o controle total da máquina, entretanto, o MMV causa interrupções em certas instruções que o SO convidado pode vir a executar e que podem comprometer outras máquinas virtuais (acessando recursos de outras máquinas virtuais, por exemplo) e emula essas instruções em software.

niveis.jpg
Modo hospedeiro e convidado, cada um com 4 níveis de privilégios.¹

Desafios

Apesar dessa evolução em suporte à virtualização, esse precisa ser pensado e avaliado em um contexto de vários núcleos. Há questões como:
  • Em um contexto de múltiplos núcleos em hardware, todos os núcleos devem possuir suporte à virtualização, ou apenas um, onde o MMV será executado?
  • Cada máquina virtual criada pela MMV possui um núcleo virtual. Com a disponibilização de múltiplos núcleos físicos a execução de cada SO convidado poderia ocorrer realmente em paralelo, simultaneamente, pois cada máquina virtual disponibilizada para cada SO convidado é totalmente isolada de qualquer outra máquina virtual, não havendo dependência de dados. Isso poderia melhorar em quanto o desempenho de um MMV?
  • Há instruções que poderiam facilitar a gerência de recursos feita pelo MMV em um ambiente com mais de um núcleo físico?

Referências

1. Rich Uhlig, Gil Neiger, et all. Intel Virtualization Technology

Last edited May 16, 2007 at 4:47 AM by mkferreira, version 8

Comments

No comments yet.