Análise Quantitativa de Técnicas de Virtualização Como Ambiente de Testes Artur Baruchi IBM Brasil – Software Group IBM Brasil, São Paulo abaruchi@br.ibm.com Ricardo L. Piantola IBM Brasil – Software Group IBM Brasil, São Paulo piantola@br.ibm.com ABSTRACT Com o ressurgimento da Virtualização, uma das suas principais aplicações é a criação de ambientes de testes e homologação de sistemas. Isso se deve principalmente às características que um ambiente virtualizado deve possuir, como encapsulamento e isolamento. Entretanto, existem, nos dias atuais, diversas tecnologias de virtualização, como a paravirtualização e a virtualização completa, cada uma com características específicas que podem beneficiar ou prejudicar determinados tipos de testes. Neste trabalho serão abordadas algumas das principais técnicas de virtualização e como o uso de uma determinada técnica pode influenciar os resultados finais de um teste de software. Para mensurar e avaliar as principais técnicas de virtualização foi utilizado o monitor de máquinas virtuais Xen e um benchmark de compilação para verificar a sobrecarga imposta pela camada de software adicional existente em quase todos os sistemas virtualizados. A análise dos resultados demonstrou que a paravirtualização possui desempenho muito próximo ao de uma máquina tradicional (6,5% pior para o teste executado) sendo esta a melhor opção para a realização de testes de sistemas. Já ambientes que utilizam virtualização completa apresentam um desempenho inferior (68,5% pior para o teste executado), mas que é compensado por manter o código fonte do Sistema Operacional inalterado. Palavras-chave Teste de software, Virtualização, Sistemas Operacionais, Monitor de Máquinas Virtuais. 1. Introdução Apesar do conceito de Máquinas Virtuais (MV) ter surgido no início dos anos 70 [1], a virtualização começou a popularizar-se há pouco tempo. Essa popularidade deve-se, em grande parte, ao barateamento de componentes de Hardware, como memória, e ao advento de processadores Multi-Core. Com esses eventos, tornou- se bastante comum encontrar equipamentos com recursos subutilizados. Entre os fatores que ajudaram a virtualização tornar-se uma realidade, está a promessa de melhor utilizar recursos computacionais que de outra forma estavam sendo subutilizados dentro dos Data Centers. Apesar da virtualização não ser um conceito novo, a virtualização na plataforma x86 vem se tornando mais popular nos últimos anos. A virtualização da plataforma x86 é mais complexa e de acordo com o teorema de Popek e Goldberg [2] não é uma plataforma que suporta de forma nativa a virtualização. Para que esse problema pudesse ser contornado, algumas propostas bastante criativas (como a Paravirtualização) foram concebidas e mostraram-se muito eficientes. Diversas propostas de virtualização para a plataforma x86 podem ser encontradas na Internet e na literatura, algumas já consolidadas como o VMWare e Xen e outras ainda em processo de consolidação, como o KVM. A virtualização tem se mostrado uma tecnologia com grande aceitação no mundo corporativo. Praticamente os maiores fornecedores de TI contam com alguma solução de virtualização em seus portfólios. Vários casos de sucesso na consolidação de Data Centers podem ser encontrados na Internet validando os benefícios que a virtualização é capaz de trazer. Para que a virtualização seja viabilizada, foram definidas algumas características que um ambiente virtualizado deve contemplar. Essas regras garantem que os recursos sejam divididos entre as MVs sem que uma sofra influência da outra. Tais características são as seguintes: Isolamento: Uma MV não pode influenciar no desempenho de outra MV; Compatibilidade: A MV deve ser completamente compatível com os padrões da plataforma que ela virtualizará (no caso do Xen, i386); Encapsulamento: Essa característica é o que torna a MV portável, pois viabiliza a cópia ou a movimentação de uma MV que está em execução de uma Máquina Física para outra; Independência de Hardware: As MVs devem ser independentes do Hardware em que elas estão sendo executadas. Por exemplo, é possível configurar interfaces de rede e outros dispositivos na MV que são completamente diferentes dos dispositivos físicos disponíveis. Essas características tornam as máquinas virtuais um grande atrativo para a elaboração de um ambiente de testes. O custo, em geral, de manter um ambiente virtualizado é menor quando comparado com um ambiente tradicional de TI [3]. Entretanto, um dos maiores problemas ao se tratar de virtualização ainda é a perda de desempenho que esta tecnologia impõe [4][5]. A sobrecarga imposta por um ambiente virtualizado vem sendo tratada em diversas pesquisas [6][7][8]. Apesar do fator desempenho ser determinante em alguns ambientes de produção, em ambientes de testes e homologação pode ser algo passível de se conviver, pois muitas vezes o desempenho de um teste não é o principal objetivo. Apesar disso, é importante que o executor do teste tenha plena consciência de que, dependendo da técnica de virtualização utilizada para a construção do ambiente de testes, alguns fatores devem ser levados em conta, principalmente quando a técnica utilizada é a paravirtualização, que tem como principal característica a alteração do Sistema Operacional convidado. Neste trabalho, serão mostradas algumas considerações em relação ao tipo de virtualização empregada e como estas podem influenciar no resultado final de um teste. Foram realizados testes de compilação em máquinas virtuais utilizando a Paravirtualização e a Virtualização Completa para verificar a