Anda di halaman 1dari 5

Anlise Quantitativa de Tcnicas de Virtualizao Como Ambiente de Testes

Artur Baruchi
IBM Brasil Software Group IBM Brasil, So Paulo

Ricardo L. Piantola
IBM Brasil Software Group IBM Brasil, So Paulo

abaruchi@br.ibm.com ABSTRACT
Com o ressurgimento da Virtualizao, uma das suas principais aplicaes a criao de ambientes de testes e homologao de sistemas. Isso se deve principalmente s caractersticas que um ambiente virtualizado deve possuir, como encapsulamento e isolamento. Entretanto, existem, nos dias atuais, diversas tecnologias de virtualizao, como a paravirtualizao e a virtualizao completa, cada uma com caractersticas especficas que podem beneficiar ou prejudicar determinados tipos de testes. Neste trabalho sero abordadas algumas das principais tcnicas de virtualizao e como o uso de uma determinada tcnica pode influenciar os resultados finais de um teste de software. Para mensurar e avaliar as principais tcnicas de virtualizao foi utilizado o monitor de mquinas virtuais Xen e um benchmark de compilao para verificar a sobrecarga imposta pela camada de software adicional existente em quase todos os sistemas virtualizados. A anlise dos resultados demonstrou que a paravirtualizao possui desempenho muito prximo ao de uma mquina tradicional (6,5% pior para o teste executado) sendo esta a melhor opo para a realizao de testes de sistemas. J ambientes que utilizam virtualizao completa apresentam um desempenho inferior (68,5% pior para o teste executado), mas que compensado por manter o cdigo fonte do Sistema Operacional inalterado.

piantola@br.ibm.com
A virtualizao tem se mostrado uma tecnologia com grande aceitao no mundo corporativo. Praticamente os maiores fornecedores de TI contam com alguma soluo de virtualizao em seus portflios. Vrios casos de sucesso na consolidao de Data Centers podem ser encontrados na Internet validando os benefcios que a virtualizao capaz de trazer. Para que a virtualizao seja viabilizada, foram definidas algumas caractersticas que um ambiente virtualizado deve contemplar. Essas regras garantem que os recursos sejam divididos entre as MVs sem que uma sofra influncia da outra. Tais caractersticas so as seguintes: Isolamento: Uma MV no pode influenciar no desempenho de outra MV; Compatibilidade: A MV deve ser completamente compatvel com os padres da plataforma que ela virtualizar (no caso do Xen, i386); Encapsulamento: Essa caracterstica o que torna a MV portvel, pois viabiliza a cpia ou a movimentao de uma MV que est em execuo de uma Mquina Fsica para outra; Independncia de Hardware: As MVs devem ser independentes do Hardware em que elas esto sendo executadas. Por exemplo, possvel configurar interfaces de rede e outros dispositivos na MV que so completamente diferentes dos dispositivos fsicos disponveis.

Palavras-chave
Teste de software, Virtualizao, Sistemas Operacionais, Monitor de Mquinas Virtuais.

1. Introduo
Apesar do conceito de Mquinas Virtuais (MV) ter surgido no incio dos anos 70 [1], a virtualizao comeou a popularizar-se h pouco tempo. Essa popularidade deve-se, em grande parte, ao barateamento de componentes de Hardware, como memria, e ao advento de processadores Multi-Core. Com esses eventos, tornouse bastante comum encontrar equipamentos com recursos subutilizados. Entre os fatores que ajudaram a virtualizao 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 virtualizao no ser um conceito novo, a virtualizao na plataforma x86 vem se tornando mais popular nos ltimos anos. A virtualizao da plataforma x86 mais complexa e de acordo com o teorema de Popek e Goldberg [2] no uma plataforma que suporta de forma nativa a virtualizao. Para que esse problema pudesse ser contornado, algumas propostas bastante criativas (como a Paravirtualizao) foram concebidas e mostraram-se muito eficientes. Diversas propostas de virtualizao 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 consolidao, como o KVM.

Essas caractersticas tornam as mquinas virtuais um grande atrativo para a elaborao 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 virtualizao ainda a perda de desempenho que esta tecnologia impe [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 produo, em ambientes de testes e homologao pode ser algo passvel de se conviver, pois muitas vezes o desempenho de um teste no o principal objetivo. Apesar disso, importante que o executor do teste tenha plena conscincia de que, dependendo da tcnica de virtualizao utilizada para a construo do ambiente de testes, alguns fatores devem ser levados em conta, principalmente quando a tcnica utilizada a paravirtualizao, que tem como principal caracterstica a alterao do Sistema Operacional convidado. Neste trabalho, sero mostradas algumas consideraes em relao ao tipo de virtualizao empregada e como estas podem influenciar no resultado final de um teste. Foram realizados testes de compilao em mquinas virtuais utilizando a Paravirtualizao e a Virtualizao Completa para verificar a

sobrecarga imposta por cada uma destas tcnicas e por fim uma verificao das estruturas implementadas na paravirtualizao e como estas influenciam os testes executados.

explorado no meio acadmico como pode ser notado nos trabalhos [11][12][13].

2. TRABALHOS RELACIONADOS
A virtualizao uma ferramenta bastante utilizada em simulao de ambientes reais. Quando abordado o uso de Mquinas Virtuais para a realizao de testes de software, existem mais trabalhos voltados a mquinas virtuais de Linguagem (como JVM). O uso de mquinas virtuais como simuladores se tornou mais difundido, pois a tecnologia de virtualizao mais comum em ambientes de infraestrutura como Sistemas Operacionais e dispositivos de rede (como swithches e roteadores). Trabalhos como [9] tratam da virtualizao como ferramenta para simular um ambiente de rede completo. Segundo os autores, o uso de mquinas virtuais como simuladores de um ambiente real, tem como principal vantagem o complemento de tcnicas mais formais como modelos matemticos e modelos menos formais, como aqueles baseados em mtodos empricos. Outro beneficio apontado pelos autores o teste em paralelo de diversos sistemas com parmetros diferentes, o que torna o processo como um todo mais gil. A simulao de falhas de infraestrutura outro fator apontado como um dos grandes benefcios de se utilizar virtualizao, como a falhas de rede, falhas de entrega de pacotes TCP/IP, entre outros, que tornam os testes mais prximos da realidade e, por conseqncia, mais completos. Outro trabalho que tem como foco a simulao de um ambiente de infra-estrutura pode ser encontrado em [10]. Nesse artigo, os autores tm como foco os sistemas distribudos. Em ambientes distribudos, a simulao utilizando mquinas virtuais ainda mais atraente, pois possvel avaliar todo o sistema nas condies mais adversas possveis, como falha de um ou vrios ns, criar condies de sobrecarga na rede virtual e entre outros testes que seriam consideravelmente limitados ou irreais, sem a ajuda da virtualizao. importante notar que, em geral, o uso da virtualizao ainda um artifcio complementar aos modelos mais formais de teste e simulao. Isto se deve em grande parte a sobrecarga da prpria virtualizao, que muitas vezes pode comprometer os resultados finais dos testes. Tal sobrecarga tambm um assunto bastante

3. TECNOLOGIAS DE VIRTUALIZAO
Apesar da virtualizao ser uma tecnologia concebida na dcada de 70, a virtualizao na plataforma x86 ainda um conceito novo. O ressurgimento da virtualizao, principalmente no ambiente x86, deve-se principalmente necessidade de melhor utilizar os recursos computacionais nestes equipamentos. Com o advento de processadores multi-cores e barateamento de memria fsica, os PCs convencionais, que compe grande parte do parque do ambiente de TI das empresas, passaram a apresentar quantidades considerveis de recurso ocioso. O compartilhamento desses recursos foi uma das sadas para contornar o problema de ociosidade e a virtualizao, conceito da dcada de 70, mostrou-se uma excelente idia para concretizar a necessidade de compartilhamento de recursos. Entretanto, a plataforma x86 no foi concebida com o intuito de ser uma plataforma apta a ser virtualizada (como no caso de mainframes). O principal problema da plataforma x86 foi demonstrado pelo teorema de Popek e Goldberg [2]. Esse teorema diz que uma plataforma pode ser virtualizada se, e somente se, todas as instrues sensveis forem instrues privilegiadas. Simplificando, se uma instruo sensvel for executada sem o privilgio correspondente, algum tipo de interrupo (trap) deve ocorrer. Na plataforma x86 isso no acontece e por esta razo, houve a necessidade de se criar artifcios para contornar o problema. A figura 1 ilustra o teorema de Popek e Goldberg. As principais tcnicas para contornar este problema so a Paravirtualizao e a Traduo Binria que sero abordadas com mais detalhes a seguir.

3.1 Paravirtualizao
De forma simplificada, a paravirtualizao assim chamada, pois a MV tem conscincia de que est sendo executada em ambiente virtualizado. Isso s possvel devido a alteraes realizadas no Kernel do Sistema Convidado. Essas alteraes foram o sistema convidado a utilizar estruturas de comunicao entre a mquina virtual e o monitor de mquinas virtuais.

Figura 1. Teorema de Popek e Goldberg (a) No Satisfaz a condio e (b) Satisfaz a condio [16].

O maior representante desta tcnica de virtualizao o Xen [14]. Com o Xen os drivers de dispositivos que efetivamente acessam o hardware ficam no Domnio 0 (Dom0) que uma espcie de mquina virtual privilegiada. As mquinas virtuais convidadas (DomU) tem seu cdigo fonte alterado de tal forma que, ao executarem uma chamada de sistema que seja privilegiada (como atualizao da tabela de pginas), passada ao Monitor de Mquina Virtual que realiza todos os passos necessrios. Estas chamadas de sistemas alterados recebem o nome de Hypercalls (em referencia ao Hypervisor). No Xen, utilizada uma estrutura chamada de I/O Ring. Essa estrutura tem a funo de criar um mecanismo de I/O com maior desempenho em ambientes virtualizados. Com a implementao dessa estrutura, o Xen chega muito prximo ao desempenho de uma mquina tradicional com o Linux Nativo. A figura 2 mostra o funcionamento do I/O Ring. O maior problema dessa abordagem a necessidade de se alterar o cdigo fonte do Sistema Operacional convidado (que nem sempre aberto). Para portar o Linux foi necessrio alterar 2995 linhas de cdigo (algo em torno de 1,36% do total do cdigo fonte). J para o Windows XP foi preciso alterar 4620 linhas do cdigo (algo em torno de 0,04% do total do cdigo fonte) [14].

Existem, basicamente, duas formas de virtualizao completa. A primeira, que consiste em Traduo Binria (tcnica amplamente usada pelo VMWare) e a virtualizao atravs de emulao de dispositivos de hardware combinada com a tecnologia de virtualizao no processador.

3.2.1 Traduo Binria


Esta tcnica consiste em verificar todas as instrues antes de serem executadas. No caso de alguma instruo sensvel, porm no privilegiada, ser executada, inserido um ponto de parada nesta instruo. Esses pontos costumam ser trocas de contextos para o Monitor de Mquinas Virtuais (MMV) e aps a execuo da instruo Na arquitetura IA-32 existem ao todo dezessete instrues consideradas sensveis e no privilegiadas[15]. De forma geral, essas instrues podem ser enquadradas em duas categorias: Proteo a Referncias de Sistema: Tais instrues se referem proteo de armazenamento, de memria ou alocao de endereo. Um exemplo deste tipo de instruo o MOVE, que move o valor de um registrador de propsito genrico para o registrador CS. Instrues Sensveis de Registrador: Este conjunto de instrues se refere a leituras ou alteraes em registradores relacionados aos recursos da mquina e endereos de memria. Instrues que esto nesta categoria so registradores de interrupo ou o registrador do clock.

A tcnica de Traduo Binria acrescenta uma complexidade considervel ao MMV, porm consegue prover um conjunto bastante completo de instrues da arquitetura IA-32 que possibilita a utilizao de Sistemas Operacionais sem alterao de cdigo. O maior exemplo de monitor de mquina virtual que utiliza esta tcnica o VMWare. A utilizao da traduo binria em conjunto com as outras tcnicas de virtualizao de I/O e memria, faz com que o VMWare consiga atingir um desempenho muito prximo ao desempenho de um ambiente tradicional sem virtualizao.

3.2.2 Emulao e Virtualizao no Processador


A emulao, na verdade, no virtualizao [16]. Frequentemente ocorre este tipo de engano, pois alguns monitores de mquinas virtuais utilizam esta tcnica para disponibilizar alguns dispositivos de I/O (como interface de rede e disco) para as mquinas virtuais. A tcnica de emulao de alguns dispositivos utilizada no KVM [17] e no Xen. Esta forma de disponibilizar um dispositivo emulado para o sistema operacional tem como principal objetivo evitar a alterao do cdigo fonte do Kernel. Entretanto, a emulao adiciona grande sobrecarga sobre o sistema [18], pois o comportamento do dispositivo emulado deve ser simulado pelo processador. J a virtualizao no processador uma tcnica proposta pelos fornecedores de processador como a AMD e Intel. Um processador convencional, em geral, possui dois modos de execuo, o modo root (privilegiado) e modo non-root (noprivilegiado). Os sistemas operacionais atuais foram projetados para executar em modo privilegiado e no funcionam corretamente se estiverem sendo executados em qualquer modo que no o privilegiado. Para contornar este problema e facilitar a implementao de monitores de mquinas virtuais mais eficientes, os fornecedores

Figura 2. Estrutura de I/O Ring implementado no Xen [14]. Apesar do Xen ser o exemplo de maior representatividade da paravirtualizao, tambm possvel utilizar a virtualizao completa com o Xen. Mas para isso necessrio que o processador possua suporte virtualizao [15]. No presente trabalho o Xen ser usado como monitor de mquinas virtuais e tanto a paravirtualizao como a virtualizao completa implementada pelo Xen sero usadas como cenrios de teste.

3.2 Virtualizao Completa


A Virtualizao Completa o oposto da paravirtualizao e nela, o sistema operacional convidado no sofre nenhuma alterao em seu cdigo fonte. Esta forma de virtualizao costuma criar uma abstrao da BIOS e o sistema operacional, por sua vez, instalado logo acima dessa abstrao.

criaram um terceiro estado de execuo, chamado de modo VMX. Neste estado de execuo, a mquina virtual acredita estar em modo privilegiado, mas quando uma instruo privilegiada executada, o processador realiza uma troca de contexto para o modo privilegiado propriamente dito e aps a execuo da instruo volta para o modo VMX.

otimizao das estruturas de I/O alteradas no Kernel. Com essas alteraes no h necessidade de emular nenhum dispositivo.

4. METODOLOGIA
Para verificar a sobrecarga das duas tcnicas de virtualizao abordadas neste trabalho, ser executado um benchmark de compilao do Kernel do Linux. Como referncia, o teste foi executado no Linux convencional com as mesmas configuraes das Mquinas Virtuais (as configuraes podem ser verificadas na Tabela 1). Com isto, o objetivo identificar a sobrecarga dos dois mtodos de virtualizao em comparao a um ambiente convencional. Para cada configurao, foi executado um total de 15 compilaes do Kernel. Aps a execuo, foram calculados a mdia, o desvio padro e a distribuio stundent-t com 95% de confidencialidade [19]. A distribuio student-t indica que 95% dos resultados estaro entre a mdia e o desvio calculado pela distribuio. A grande vantagem ao utilizar-se este mtodo a pequena quantidade de dados necessrios para obter o resultado (diferente do que acontece com a distribuio normal). Tabela 1. Configurao das Mquinas para a realizao dos Testes

Figura 3. Resultados obtidos em cada uma das tcnicas de virtualizao. Na tcnica de virtualizao completa, ainda observada uma sobrecarga muito grande por conta da emulao. Apesar do teste de compilao do Kernel ser um benchmark, que possui caracterstica de uso intensivo do processador, a sua dependncia de velocidade de I/O determinante no resultado final. Por conta da dependncia de I/O essa tcnica de virtualizao ainda sofre de grande sobrecarga quando o quesito desempenho. Na figura 3, apresentado o grfico dos resultados com a compilao do Kernel. Outro dado importante a variao dos resultados com a virtualizao completa. Em um ambiente sem virtualizao, os resultados sofreram pouca variao. O mesmo comportamento pode ser observado com a paravirtualizao (observa-se uma variao maior, entretanto menos acentuada). Quando analisados os resultados da virtualizao completa, pode-se verificar que eles sofreram grandes variaes. Isto se deve em grande parte demora de resposta dos dispositivos emulados. Ao emular um dispositivo, este torna-se muito dependente do poder de processamento do hardware real. Como o processador estava sendo disputado entre a compilao do Kernel, a emulao dos dispositivos e outras tarefas (como execuo de algoritmos de paginao do prprio kernel da mquina hospedeira e da mquina virtual) a variao tende a ser maior. Na Tabela 2, so apresentados os resultados da execuo do benchmark (segunda coluna), o desvio padro (terceira coluna) e a distribuio student-t (quarta coluna) com confiabilidade de 95%. interessante observar que ao utilizar a virtualizao completa os resultados tiveram maior oscilao se comparados com a paravirtualizao e o ambiente real. A oscilao se deve principalmente sobrecarga causada pela emulao de alguns dispositivos de I/O e as trocas de contexto entre modo real e virtual do processador.

Tcnica Utilizada
Linux Tradicional

Hardware
1xAthlon64 Dual Core Processor1, 2GB de memria. 2 VCPUs, 2GB de memria. 2 VCPUs, 2GB de memria.

Software
Fedora Core 8, Kernel 2.6.21.7-5 SMP. Fedora Core 8, Kernel 2.6.21.75.fc8xen, Xen 3.1.2 Fedora Core 8, Kernel 2.6.21.7-5 SMP.

Linux Paravirtualizado

Linux Virtualizao Completa

A compilao do Kernel do Linux (verso 2.6.18)foi escolhida, pois um benchmark amplamente utilizado e aceito como parmetro de comparao no meio acadmico. A compilao do Kernel possui diversas caractersticas como operaes intensivas de I/O e grande utilizao de memria cache. Entretanto, sua maior caracterstica a considervel utilizao do processador. Este benchmark pode ser influenciado por diversos fatores como vazo de disco, capacidade do sistema de paralelizar tarefas, entre outros. Por esta razo a compilao do Kernel um benchmark bastante completo, que tem condies de avaliar o sistema como um todo.

5. RESULTADOS
Aps a execuo dos testes, foi observado que a tcnica de paravirtualizao consegue se aproximar bastante do desempenho de uma mquina real com o Linux convencional. Isto se deve
1

6. CONCLUSO
A virtualizao sem dvida uma grande ferramenta para execuo de testes e simulao. As caractersticas de um ambiente virtualizado so muito atrativas quando o objetivo a criao de

Um processador com 2 Cores, portanto 2 processadores.

um ambiente de testes mais prximo do real. A virtualizao no deve ser encarada como uma substituta de modelos formais para a execuo de testes, mas sim como um complemento. Por meio da virtualizao, possvel executar e analisar testes que de outra forma seriam difceis e muitas vezes inviveis. Apesar de todos estes benefcios da virtualizao, importante que os executores do teste tenham conscincia de que h ainda o problema de desempenho que estes ambientes oferecem. Ainda no h nenhum mtodo formal para analisar a sobrecarga causada pelos monitores de mquinas virtuais. Dessa forma para testes que so muito dependentes de desempenho (como sistemas de tempo real) uma boa opo seria o uso de mquinas virtuais paravirtualizadas. Em contrapartida, em testes que so dependentes do cdigo do sistema operacional (como drivers de dispositivos), a virtualizao completa mostra-se atrativa, pois neste modo de virtualizao o cdigo fonte do Sistema Operacional no sofre alteraes. Outro beneficio da virtualizao o aumento da flexibilidade dos ambientes de testes. possvel instalar MVs utilizando uma grande variedade de configuraes de hardware (como memria, processador, interfaces de rede, etc). Em geral, esse tipo de configurao no um obstculo para o executor dos testes, pois os MMVs possuem ferramentas que possibilitem a alterao dessa configurao de forma intuitiva (atravs de interfaces grficas). No Xen, a memria e a prioridade da MV podem ser alteradas sem haver necessidade de reiniciar ou reinstalar a MV, o que torna essa tecnologia mais atraente para ser utilizada em um ambiente de testes. Tabela 2. Resultados dos Testes e Variao Tcnica Utilizada Linux Tradicional Linux Paravirtualizado Linux Virtualizao Completa Desempenho (seg) 1312,33 1402,53 4142,13 Desv. Padro 7,44 30,55 783,06 Distribuio Student-t (95%) 3,39 13,90 356,38

[5] E. Bolker and Y. Ding. 2005 Virtual performance wont do: Capacity planning for virtual systems. Proc. 31th Int.Computer Measurement Group Conf, 1:39. [6] Zhang, X., Dong, Y. 2008 Optimizing Xen VMM Based on Intel Virtualization Technology. Proceedings of the 2008 International Conference on Internet Computing in Science and Engineering. pp. 367-374. [7] I. Ahmad, J. M. Anderson, A. M. Holler, R. Kambo, and V. Makhija, 2003 An Analysis of Disk Performance in VMware ESX Server Virtual Machines in Workload Characterization, 2003. WWC-6. 2003 IEEE Internatinal Workshop, pp. 65 76. [8] Nakajima, J., Mallick, A. K. 2007 Hybrid-Virtualization Enhanced Virtualization for Linux, Proceedings of The Linux Symposium. [9] Wang, R. T., Browne, J. C. 1981 Virtual machine-based simulation of distributed computing and network computing in Proceedings of the 1981 ACM SIGMETRICS conference on Measurement and modeling of computer systems. pp. 154-156. [10] Hrault, T., Largillier, T., Peyronnet, S., Qutier, B., Cappello, F., Juan, M. 2009 High accuracy failure injection in parallel and distributed systems using virtualization in Proceedings of the 6th ACM conference on Computing frontiers. pp. 193-196. [11] VMware, 2007 A Performance Comparison of Hypervisors, http://www.vmware.com/pdf/hypervisor_performance.pdf. [12] Che, J., He, Q., Gao, Q., Huang, D., 2008 Performance Measuring and Comparing of Virtual Machine Monitors in Proceedings of the 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing. pp. 381-386. [13] XenSource, 2007 A Performance Comparison of Commercial Hypervisors, http://www.xensource.com/Documents/hypervisor_performa nce_comparison_1_0_5_with_esx-data.pdf. [14] P. Barham, B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, R. Neugebauer, I. Pratt, and A. Warfield, 2003 Xen and the Art of Virtualization, ACM Symposium on Operating Systems Principles (SOSP). [15] Intel Virtualization, 2005 Technology Specification for the IA--32 Intel Architecture. [16] J. E. Smith, R. Nair 2005 Virtual Machines Versatile Platforms for System and Process, 1 ed., vol. 1. Morgan Kaufmann. [17] Qumranet, 2006. Kvm: Kernel-based virtualization driver. http://kvm.qumranet.com/kvmwiki/Documents. [18] J. E. Smith, R. Nair 2005 The Architecture of Virtual Machines in IEEE Computer Society Press. pp. 32-38. [19] On Students 1908 Article The Probable Error of a Mean, Journal of the American Statistical Association.

7. REFERNCIAS
[1] Goldberg, R. 1974 Survey of virtual machine research. In Survey of Virtual Machine Research. IEEE Computer. pp 3445. [2] Popek, G. J. e Goldberg, Robert 1974. Formal Requirements for Virtualizable Third-Generation Architectures. Comm. ACM, pp. 412-421. [3] Whitaker, A., Cox, R. S., Shaw, M., Gribble, S. D. 2005 Rethinking the Design of Virtual Machine Monitors. IEEE Computer. pp 57-62. [4] L. Cherkasova, D. Gupta, and A. Vahdat. 2007 When virtual is harder than real: Resource allocation challenges in virtual machine based IT environments. Technical Report HPL2007-25.