Patrocínio Natura

Virtualização Assistida por Hardware, o que é isso?

16 de fevereiro de 2009

Virtualização é um assunto que está recebendo bastante destaque nos últimos anos e tem nos mostrado muitas oportunidades em como podemos repensar a forma como lidamos hoje com os atuais desafios em TI, seja ele nos Data Centers ou em desktops e notebooks. A virtualização não é novidade, principalmente para quem trabalha com a alta plataforma, porém a sua utilização em servidores x86, desktops e notebooks são relativamente novos e ainda há muito espaço para que possamos tirar o máximo proveito das possibilidades que estes podem nos oferecer.

Pelo fato das instruções x86 completarem agora 30 anos de existência, e ter recebido diversas extensões para lidar com as tecnologias que surgiram neste meio tempo, como pro exemplo, o MMX para acelerar processamento de sinal multimídia ou o SSE para lidar com aplicações genéricas onde se necessita lidar com “tripas” de dados para executar uma única instrução, como é o caso de codificação/decodificação de áudio/vídeo, criptografia, imagem entre outros, porém o caso da virtualização não poderia ser diferente: Para lidar com este novo mundo, a Intel criou o Intel-VT (Intel Virtualization Technology) para acelerar o processamento em máquinas virtuais.

Do ponto de vista do software de virtualização, como por exemplo, o Microsoft Virtual PC, você encontra a opção para habilitar a virtualização assistida por hardware e poderá comprovar como essa tecnologia acelera a execução em máquinas virtualizadas.

Como funciona?

Contextualização do problema

Para entender como funciona a instrução de virtualização e porque ela é tão importante, é necessário entender primeiro como o sistema operacional conversa com o processador.

Desde que a Intel introduziu nos processadores da família 80286 o conceito de Protected Mode, conforme já havia discutido em post anterior, os sistemas operacionais desenvolvidos para rodar em processadores x86, rapidamente adotaram as vantagens de poder usar os anéis de isolamento promovidos por essa novidade, assim os sistemas operacionais mais populares de hoje, foram desenvolvidos para utilizar pelo menos dois dos quatro níveis de isolamento promovidos pelo processador.

A dificuldade é, que como neste modelo onde o sistema operacional, que foi desenvolvido para falar diretamente com o processador, poderá funcionar normalmente, porém conversando com outra peça de software que tem como função emular um processador para o sistema operacional e esperar que tenha estabilidade, desempenho e que suporte várias máquinas virtuais simultaneamente.

Em um ambiente de virtualização, baseado inteiramente em software, sem assistência de hardware, o truque é fazer uso do anel 1 e 3 para alocar o sistema operacional hospedado, enquanto o virtualização (ie. hypervisor) fica alocado no anel 0, como um intermediário fazendo com que processador acredite que está executando apenas um sistema operacional e o sistema operacional virtualizado acredite que esteja em contato com um processador x86 físico ou seja, nada mais é de forma simples, que um tradutor, que por sua vez precisa ocupar tempo e recursos computacionais para traduzir as chamadas dos sistemas operacionais virtualizados para o hardware.

Portanto, em uma implantação baseada inteiramente em software, não só é de se esperar que haja maior consumo de CPU, como também latência em muitas chamadas e operações. Outra alternativa, seria adotar o modelo de anel sem privilégio, onde o hypervisor continua no anel 0, e tanto o kernel do sistema operacional virtualizado como suas aplicações rodariam no mesmo contexto, porém você perde as proteções do hardware para controle de contexto de segurança.

Solução embarcada no hardware

Para remover a necessidade de tradução na camada de software, a Intel introduziu em seus processadores de servidores Xeon e Itanium bem como em algumas linhas de processadores de notebook e desktops a instrução de virtualização chamada de Intel VT (que significa Intel Virtualization Technology).

O Intel VT adiciona uma instrução para que o software de virtualização ou hypervisor, possa ter um controle granular sobre o comportamento da CPU, essa instrução do ponto de vista do processador é um bit que quando levado para o estado “0”, ou VMX-root (Virtual Machine eXtention – root) significa que se pode executar qualquer instrução no processador sem nenhuma restrição, inclusive somente neste contexto que se pode alterar o estado VT. Por outro lado, quando o VT é levado para “1”, ou VMX-non root, significa que o processador fica configurado para entender que a execução neste contexto é de uma máquina virtualizada, portanto algumas instruções, as mais privilegiadas, são desabilitadas e os ponteiros do processador deste contexto serão armazenados em cache dentro do próprio processador para acelerar o compartilhamento do tempo de processamento de outras máquinas virtuais, já que a gravação e recuperação no cache do processador são muito mais velozes do que se fosse à memória principal. Se fossemos colocar essa nova instrução em perspectiva com o modelo anterior seria mais ou menos como o representado por essa figura:

Perceba que tanto o kernel do sistema operacional virtualizado quanto o hypervisor estão no anel 0, e mesmo assim o hypervisor possui ainda maiores privilégios sobre o hardware para garantir a hierarquia de gerenciamento e integridade, sem comprometer o desempenho.

Conclusão:

Atualmente, as instruções de virtualização no processador se tornaram indispensáveis para qualquer um que deseje precise trabalhar com máquinas virtuais, sejam elas para laboratório, recreação ou servidores, porém lembre-se que o Intel VT ainda não é a ultima fronteira em termos de virtualização, pois este se restringe a virtualização da CPU, há de se considerar também a virtualização dos dispositivos de I/O, que será tratado em outro post.

Por Bruno Domingues – Fonte: Brasil Digital@Intel

Compatilhe esse artigo!

5 Comentários

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.