ERELYN LUÍS GONÇALVES ALVES JOÃO PAULO FERREIRA DOS SANTOS ANÁLISE DE DESEMPENHO DE MÁQUINAS VIRTUAIS USANDO BENCHMARK. BELÉM/PA 2011 ERELYN LUIS GONÇALVES ALVES JOÃO PAULO FERREIRA DOS SANTOS ANÁLISE DE DESEMPENHO DE MÁQUINAS VIRTUAIS USANDO BENCHMARK. Trabalho de Conclusão de Curso apresentado ao Centro de Ciências Exatas e Tecnológicas da UNAMA - Universidade da Amazônia, como exigência parcial para obtenção do título de Bacharel em Ciência da Computação. Elaborado sobre orientação do Prof. MSc. Ananias Pereira Neto. BELÉM/PA 2011 ERELYN LUÍS GONÇALVES ALVES JOÃO PAULO FERREIRA DOS SANTOS ANÁLISE DE DESEMPENHO DE MÁQUINAS VIRTUAIS USANDO BENCHMARK. Trabalho de Conclusão de Curso apresentado para obtenção do grau de Bacharelado em Ciência da Computação. Data da Defesa: ____/____/____ Conceito: __________________ Banca Examinadora: _________________________________________________ Orientador: Prof. MSc. Ananias Pereira Neto _________________________________________________ Membro: Prof. MSc. Max Trindade _________________________________________________ Membro: Prof. MSc. Ricardo Ferreira BELÉM/PA 2011 AGRADECIMENTOS Agradecemos, em primeiro lugar, a Deus, por estar presente nos momentos alegres e difíceis de nossa caminhada, dando-nos forças e sabedoria para superarmos os embaraços e alcançarmos o nosso objetivo: concluirmos a nossa graduação. Eu (Erelyn Luis) agradeço ao Prof. Dr. Mauro Margalho Coutinho e ao Prof. Dr. Afonso Jorge Ferreira Cardoso, por disponibilizarem seu tempo para avaliar o trabalho que agora apresentamos. Agradeço também as minhas tias Alvina e Ana Lúcia, pelo incentivo e apoio que sempre me deram para cursar e concluir o curso superior que escolhi. Agradeço ainda à minha mãe pela ajuda que me prestou na elaboração do TCC. E, finalmente, agradeço a companhia de minha filha Ana Clara, cuja presença alegra minha vida, especialmente, nos finais de semana que partilhamos. Eu (João Paulo) agradeço à minha mãe, Ray Santos, mulher guerreira, grande educadora que me deu a vida, pelo amor que me dedica, que desde cedo mostrou o valor da vida e o compromisso de vivê-la de forma intensa, com dignidade, com vigor e com a sabedoria de um peregrino que sempre está em busca de novos caminhos. A senhora é e sempre será a base de tudo em minha vida; e ao meu padrasto Moura, que jamais mediu esforços para que esta conquista fosse realizada. Agradecemos ainda aos nossos familiares, que tanto nos incentivaram e nos deram o suporte necessário para seguirmos na vida acadêmica. Ao nosso orientador, Prof. Msc. Ananias Pereira Neto, por sua compreensão e sua enorme paciência em poder nos ajudar em nossas dúvidas ao longo do curso. Aos professores do curso de Bacharelado da Universidade da Amazônia (UNAMA), os quais, durante o período do curso da graduação, oportunizaram o aprimoramento de conhecimentos e contribuíram positivamente desenvolvermos habilidades no curso de Ciências da Computação. A todos o nosso muito obrigado! para O tempo não perdoa os erros que cometemos... Ele é implacável: passado é passado, e não há nada que possamos fazer diante desse fato. Mas, a cada dia, temos a oportunidade de mudar e recomeçar devido a um presente divino: o hoje! Niara De Sousa Almeida RESUMO Este trabalho apresenta uma análise comparativa entre dois sistemas operacionais anfitriões: o Windows Server 2008 x64 e o Linux CentOS x64. Nessa comparação foram utilizadas duas ferramentas virtualizadoras: a VirtualBox4.1.6 e a VMWare Workstattion8. Observamos as características gerais, o desempenho e os recursos de cada um desses sistemas anfitriões para que pudéssemos encontrar a melhor aplicação para cada um deles, bem como verificar a eficiência de cada sistema, individualmente, desenvolvendo os gráficos de desempenho de cada máquina virtual e sua plataforma. O objetivo do estudo foi identificar o sistema anfitrião de melhor desempenho, seja com o virtualizador VirtualBox4.1.6, seja com o virtualizador VMWare Workstattion8. Foram abordados temas como a virtualização, as vantagens e os tipos de virtualização, a paravirtualização e o conceito de benchmark. Concluímos, neste estudo, que o melhor sistema operacional anfitrião encontrado, mediante os testes realizados, foi o sistema Linux. PALAVRAS-CHAVE: Sistemas Benchmark; Compactação. operacionais anfitriões; Virtualização; ABSTRACT Our objective with this research, a comparative analysis between two host operating systems: Windows Server 2008 x64 and x64 CentOS Linux. In this comparison, we used two virtualization tools: VMWare and the VirtualBox4.1.6 Workstattion8. In this context, we note the general characteristics, performance and resources of each of these host systems so that we could find the best application for each, as well as verify the efficiency of each system individually, developing the graphics performance of each machine and its virtual platform to identify the best performing host system, either with the virtualizer VirtualBox4.1.6, either with the VMware virtualized Workstattion8. Topics covered in virtualization, the benefits and types of virtualization, paravirtualization and the concept of benchmarks. In conclusion, this study, the best host operating system found by the tests performed, the system was Linux. KEY-WORDS: Operating Systems hosts. Virtualization. Benchmarks. Compaction. LISTA DE FIGURAS Figura 1: Organograma do ambiente de teste............................................................14 Figura 2: Modelo de Virtualização..............................................................................18 Figura 3: Tela da ferramenta VMWare executando o SO Windows...........................24 Figura 4: Tela da ferramenta VirtualBox.....................................................................25 Figura 5: Operação com números inteiros................................................................28 Figura 6: Operação com números fracionários..........................................................29 Figura 7: Operação com números dobrados .............................................................30 Figura 8: Teste de latência de comunicação local......................................................31 Figura 9: Teste de processador..................................................................................34 Figura 10: Teste virtual machine.................................................................................35 Figura 11: Controle de memória.................................................................................36 Figura 12: Stoprege device........................................................................................38 Figura 13: Redes locais..............................................................................................39 Figura 14: Compactação 7z em segundos.................................................................40 Figura 15: Compactação usando p7..........................................................................41 Figura 16: Resultado da Codificação de áudio usando Windows..............................42 Figura 17: Resultado Codificação de áudio usando Linux.........................................43 Figura 18: Codificação de vídeo no Linux..................................................................44 Figura 19: Codificação de vídeo usando Windows....................................................45 LISTA DE TABELAS Tabela 1: Resultado dos teste com números.............................................................28 Tabela 2: Resultado dos testes com números fracionários........................................29 Tabela 3: Resultado dos testes com números dobrados............................................30 Tabela 4: Resultado do teste de latência de memória................................................32 Tabela 5: Resultado dos testes de processador.........................................................34 Tabela 6: Resultado dos testes de máquina virtual....................................................35 Tabela 7: Resultado dos testes de controle de memória............................................36 Tabela 8: Resultado dos testes de disco....................................................................38 Tabela 9: Resultado do teste de rede local............................................................... 13 SUMÁRIO 1 INTRODUÇÃO........................................................................................................13 1.1 VISÃO GERAL.....................................................................................................13 1.2 OBJETIVO............................................................................................................14 1.3 METODOLOGIA DO ESTUDO............................................................................14 1.3.1 Trabalhos relacionados..................................................................................15 1.3.2 Características do estudo...............................................................................16 1.4 ORGANIZAÇÃO DO TRABALHO........................................................................16 2 O PROCESSO DE VIRTUALIZAÇÃO....................................................................17 2.1 VANTAGENS DO PROCESSO DE VIRTUALIZAÇÃO.........................................29 2.2 TIPOS DE VIRTUALIZAÇÃO................................................................................20 2.2.1 A Emulação de Hardware ...............................................................................21 2.2.2 Virtualização Completa ..................................................................................21 2.2.3 Paravirtualização.............................................................................................22 2.2.4 Virtualização de Instruções (Instruction Set Virtualization)........................23 2.3 FERRAMENTAS DE VIRTUALIZAÇÃO...............................................................23 2.3.1 VMWare Workstation.....................................................................................24 2.3.2 Virtual Box........................................................................................................25 3 EXPERIMENTOS E RESULTADOS.......................................................................26 3.1 DESCRIÇÃO DO AMBIENTE...............................................................................26 3.2 ANÁLISE DE DESEMPENHO..............................................................................26 3.3 SOBRE O LMBENCH...........................................................................................27 3.3.1 Operações com Números Inteiros (Integer)..................................................27 3.3.2 Operações com Números fracionários (Floats)...........................................28 3.3.3 Operações com Números Dobrados (Double)..............................................29 3.3.4 Latência para a Comunicação Local.............................................................31 3.4 SOBRE O SISOFTWARE SANDRA 2012............................................................32 3.4.1 Testes de processamento da CPU.................................................................33 3.4.2 Testes com máquinas virtuais.......................................................................34 3.4.3 Testes com o controlador de memória..........................................................36 3.4.4 Testes de Disco...............................................................................................37 3.4.5 Teste de Rede Local........................................................................................38 14 3.5 COMPACTAÇÃO DE ARQUIVOS........................................................................39 3.6 CODIFICAÇÃO DE ÁUDIO..................................................................................41 3.7 CODIFICAÇÃO DE VÍDEO..................................................................................43 4 CONSIDERAÇÕES FINAIS....................................................................................46 REFERÊNCIAS..........................................................................................................48 APÊNDICES...............................................................................................................50 1 INTRODUÇÃO 1.1 VISÃO GERAL Este trabalho foi desenvolvido com o propósito de verificar se há diferença de desempenho na utilização de diferentes tipos de sistema operacionais anfitriões. Escolheu-se o Windows e o Linux como sistemas anfitriões a serem testados. O primeiro, por ser o mais utilizado; e o segundo; por ser um software livre. Outro motivo importante foi o fato de existirem virtualizadores compatíveis com ambos os sistemas (multiplataforma), a saber o VirtualBox4.1.6 e VmWare Worksattion8. Existem tipos e técnicas de virtualização. Os tipos são a virtualização do hardware, do sistema operacional e das linguagens de programação; as técnicas são a virtualização total e a paravirtualização. No caso deste estudo, optou-se pela virtualização total do sistema operacional, tendo em vista os recursos materiais disponíveis na universidade para desenvolver os testes necessários. Utilizou-se a técnica denominada benchmark, que, segundo Scalzo et al (2007), é o ato de executar um programa de computador ou um conjunto de programas, ou sequências operacionais, a fim de avaliar a performance de um processador, memória, código de programação etc., quando são realizados uma série de testes que possibilitam avaliar de forma consistente o desempenho de determinado sistema operacional. Por meio do benchmark, é possível definir qual ferramenta se encaixa melhor para cada tipo de situação de trabalho. As empresas proprietárias do sistema anfitrião executam uma série de testes-padrão e ensaios nos seus produtos (sistema operacional), mas o método utilizado para os testes não estão disponíveis ao usuário e só divulgam os resultados que lhes são favoráveis. 15 Por outro lado, o usuário não detém o conhecimento necessário ou disponibilidade de tempo para fazer testes comparativos entre sistemas operacionais. Recorre, via de regra, apenas aos manuais (feitos com base em princípios científicos) e ao conhecimento empírico que detém quanto ao funcionamento do sistema (hardware e software), e, especialmente, quanto ao contexto de aplicação a que se destinam os dados. Portanto, as análises que aqui serão apresentadas, poderão contribuir com informações detalhadas sobre o desempenho dos sistemas operacionais Windows e Linux diante de situações similares às testadas neste trabalho. 1.2 OBJETIVO Realizar a análise comparativa entre dois sistemas operacionais anfitriões, o Windows Server 2008 x64 e o Linux CentOS x64, utilizando duas ferramentas virtualizadoras: a VirtualBox 4.1.6 e a VMWare Workstattion 8. 1.3 METODOLOGIA DO ESTUDO Após o levantamento bibliográfico, iniciou-se a execução dos testes. Utilizouse o hardware com 8GB de memória RAM, sendo que dessa memória, 4GB foram destinados inteiramente para executar a máquina virtual. O processador utilizado foi um Intel Core 2 Quad Q9550S, sendo disponibilizados apenas dois núcleos para as máquinas virtuais. Instalou-se primeiramente o sistema anfitrião; sobre ele, os virtualizadores; e sobre estes, as máquinas virtualizadas, com dois processadores, 4 GB de memória e 40 GB de HD, conforme Figura 1. 16 W │ L │ VMWare W │ L │ VirtualBox W │ L │ VMWare W │ L │ VirtualBox │ │ Windows (sistema anfitrião) Linux (sistema anfitrião) │ │ HARDWARE Figura 1: Organograma do ambiente de teste Os sistemas anfitriões usados foram o Windows Server 2008 x64 e o Linux CentOS x64; os vitualizadores, o VirtualBox 4.1.6 e o VMWare Workstattion 8; e as máquinas virtualizadas, o Windows Server 2008 x64 e o Linux Debian 6.0.3 x64. Optou-se por essa versão do Linux por proporcionar maior facilidade na aplicação dos testes. Para os testes não terem problemas cada máquina virtual foi executada individualmente. Os detalhes de cada teste estão comentados no Capítulo 3. 1.3.1 Trabalhos relacionados Na revisão bibliográfica, encontrou-se poucos trabalhos acadêmicos disponíveis sobre testes em máquinas virtuais. Assim, nossa referência foi centrada em dois artigos, por estes se aproximarem do estudo que se queria empreender, os quais foram: “Virtualização como alternativa para ambiente de servidores”, de Silva et al (2008) e “Comparativo entre ferramentas de virtualização”, de Baruchi (2008). No primeiro estudo, de Silva et al (2008), foram realizados testes de desempenho para comparar três virtualizadores: o KVM, Xen 3.0.3 e VMware Server 2. Os virtualizadores foram executados em um sistema anfitrião Linux CentOS 5.6 com kernel 2.6.18, com máquinas virtualizadas Linux e testes em Linux, em todos os casos. Foram executados testes de beachmark com LMBench, codificação de vídeo no Linux e testes no servidor Web Apache; o teste transferência de arquivos foi realizado tanto com cópia de um arquivo de 4 GB para o Windows quanto com o Linux. Em todas as máquinas virtuais foi alocado somente um processador para realizar os referidos testes. A análise de Baruchi (2008) foi efetuada através de testes de desempenho que compararam três virtualizadores: o VMware Server 1.7, VirtualBox 2.0 e o 17 VirtualServer 2005. Baruchi (2008) utilizou o Windows 2003 Server R2 SP2 como sistema anfitrião e virtualizou o sistema operacional de Desktop Windows XP Profissional SP2. Os testes foram realizados sobre o sistema operacional Windows XP, além dos testes de comparação com o sistema desktop sem estar virtualizado. Entende-se que os testes aplicados por Baruchi (2008) podem ter alguns problemas de confiabilidade, devido à utilização de um sistema operacional desktop que tem algumas limitações quanto a conexões simultâneas de rede e um pior gerenciamento entre os processos do sistema operacional. Os testes aplicados em ambas as situações foram de Benchmark com PCMark 2005, teste com banco de dados e teste de transferência de arquivos por FTP. 1.3.2 Características do estudo Neste trabalho, utilizou-se dois virtualizadores multiplataforma: o VirtualBox 4.1.6 e o VMware Worstation 8.0, em suas versões atualizadas até 11 de novembro de 2011. As análises aqui realizadas avançam em quatro aspectos com relação aos trabalhos anteriores: 1. Utilizou-se mais de um sistema anfitrião para realizar os testes – Windows e Linux –, sendo este o principal escopo do estudo; 2. Virtualizou-se dois sistemas também para realização de testes, tanto no Windows como no Linux; 3. foram usados somente sistemas 64 bits por tornar possível alocar 4GB de memória entre as maquinas, que também só utilizavam SO 64 bits; 4. alocou-se dois processadores para máquinas virtualizadas para realizar os testes com multithreading. 1.4 ORGANIZAÇÃO DO TRABALHO O presente trabalho foi estruturado em quatro capítulos. No primeiro capítulo, apresenta-se as informações gerais a respeito do estudo. No segundo capítulo, comenta-se acerca dos principais conceitos e da situação atual do processo de virtualização, bem como suas vantagens e os tipos de virtualização. No terceiro capítulo, detalha-se a metodologia empregada para a aplicação dos testes escolhidos, bem como as características gerais, o desempenho e os 18 recursos de cada um dos sistemas operacionais anfitriões analisados. Também, nesse capítulo, discute-se os resultados obtidos, ilustrados com os gráficos de desempenho. Por fim, apresenta-se as conclusões a que se chegou após a realização dos testes e a análise dos resultados. Esclarece-se que este estudo foi desenvolvido de forma independente, visto que não há vínculo de qualquer espécie entre o pesquisador-analista e as empresas proprietárias. Dessa forma, a sociedade tem ao seu alcance um resultado sem induções comerciais, que expõe as características reais de cada máquina estudada, minimizando as falhas na hora da escolha. 19 2 O PROCESSO DE VIRTUALIZAÇÃO Para se compreender o processo de virtualização, faz-se necessário apresentar o que são sistemas operacionais. Na perspectiva do usuário ou programador (visão top-down), é uma abstração do hardware, que faz o papel de intermediário entre o aplicativo (programa) e os componentes físicos do computador (hardware). Na visão bottom-up, de baixo para cima, é um gerenciador de recursos, que controla quais e quando aplicações (processos) podem ser executadas e que recursos (memória, disco, periféricos) podem ser utilizados. Portanto, Sistema Operacional (SO ou OS, do inglês Operating System) são programas complexos, cuja atribuição é responder por todo o funcionamento de uma máquina a partir dos comandos impostos pelo usuário. Um sistema operacional possui as seguintes funções: gerenciamento de processos; gerenciamento de memória; sistema de arquivos; entrada e saída de dados Coelho (2009). Dentre os sistemas operacionais existentes, podemos citar Windows, Linux e Mac OS X, mais conhecidos por serem utilizados em computadores pessoais. Esses sistemas operacionais podem ser virtualizados, isto é, passar por um processo de virtualização. De acordo com Coelho (2009), “virtualização” é o processo de executar diferentes sistemas operacionais dentro de uma mesma máquina, aproveitando ao máximo a capacidade do hardware, através da emulação de ambientes isolados, isto é, fornecendo ambientes de execução independentes a diferentes sistemas em um mesmo equipamento físico, concomitantemente. Com essa técnica, aumenta-se a quantidade de softwares que podem ser utilizados sobre um mesmo hardware. Os ambientes assim criados são chamados de máquinas virtuais. Portanto, máquinas virtuais são computadores fictícios elaborados por programas de simulação, com memória, processador e outros recursos virtualizados. A sua existência de máquinas virtuais não é recente. Segundo Jones (2006), foi nos anos 60, do século XX, que se fez referência à realização de um processo virtualização, utilizando-se o equipamento IBM 7044 Compatible Time-Share System (CTSS)1. A figura 2 mostra uma melhor compreensão: 1 Em uma tradução livre, Sistema Compatível com Compartilhamento de Tempo. O equipamento, denominado "Projeto Atlas", resultou de um estudo conjunto entre o MIT (Massachusetts Institute of Technology – Instituto 20 Fonte: ITconsultoria. Figura 2: Modelo de Virtualização. À época, o chamado “Supervisor”, sistema operacional do mainframe IBM 704 M44/44X, executava duas máquinas virtuais, uma para o sistema; e outra para a execução de programas. Essa tecnologia serviu de base para outros computadores, como o mainframe IBM System/360 modelo 67, lançado em 1966, no qual o hardware do equipamento era inteiramente acessado por meio de uma interface chamada Virtual Machine Monitor (VMM), o qual funcionava diretamente no hardware básico do equipamento, permitindo a execução de máquinas virtuais. Assim, cada máquina virtual passava a ser uma nova instância do mesmo sistema operacional-base que estivesse em execução. Por esse fato, o antigo termo "Supervisor" foi substituído por Hypervisor, por ter se tornado “um software que provê ambiente de virtualização para o sistema operacional rodando acima dele” (SILVA et al, 2008). A partir da década de 1970, a IBM lançou uma série de mainframes. Dentre elas, criou o System/370 e, logo após, o sistema operacional VM/370, o qual permitia a criação de múltiplas máquinas virtuais para os mainframes dessa série. O VM/370, hoje, é conhecido como IBM z/VM e mantém compatibilidade total com os aplicativos desenvolvidos ainda para o System/370, bem como com sistemas operacionais para os mainframes da série System/Z. de Tecnologia do Massachusetts), a Ferranti Ltd. e a University of Manchester (universidade de Manchester), no qual foi utilizado um mainframe com implementação de chamadas supervisoras (SILVA et all, 2008). 21 Nas décadas de 80/90, no entanto, a virtualização perdeu forças devido à criação de novas aplicações cliente-servidor, provocando, dessa forma, o declínio da plataforma mainframe. Acredita-se que o alto custo inicial de um mainframe incentivou as empresas a investirem em servidores de plataforma2 x86. Por esse motivo, a plataforma X86 consolidou-se como recurso interessante para o uso da virtualização. De acordo com a empresa VMware Inc apud, Baruchi (2008), pode-se citar três situações que contribuíram para a consolidação da plataforma X86: 1. a larga ascensão da plataforma Linux nos servidores; 2. a adoção do sistema operacional Windows em desktops; 3. A disseminação do sistema operacional Windows nos anos 90. Os mainframes tinham grande capacidade de processamento, ao contrário da fase inicial da plataforma x86, haja vista que esta não era projetada visando a virtualização, como os mainframes sempre o foram, já que visavam a virtualização. Portanto, em cada implementação de algum servidor x86 típico, o teto de uso das CPUs acabava sempre entre 10 a 15% da capacidade total desse servidor. Isso acontecia porque, para cada servidor x86, geralmente se utilizava uma única determinada aplicação, cujo objetivo era o de garantir boa margem de risco contra problemas que pudessem comprometer a produção VMware Inc apud, Baruchi (2008). Todavia, quando, em 1999, a VMware Inc. focalizou a virtualização para o uso da plataforma x86, potencializou a eficiência dos equipamentos dessa plataforma. Esse procedimento possibilitou o aproveitamento de servidores x86, de propósito geral, para prover uma estrutura compartilhada, oferecendo ainda isolamento completo, mobilidade e liberdade de escolha para sistemas operacionais em ambientes de servidores. Baruchi ( 2008). 2.1 VANTAGENS DO PROCESSO DE VIRTUALIZAÇÃO A grande vantagem oferecida pela virtualização se dá por esta suportar várias aplicações em um só sistema físico, quebrando o paradigma vigente até a 2 Na informática, o termo “plataforma” designa a tecnologia utilizada na Tecnologia da Informação, que facilita a integração dos diversos elementos dessa estrutura. Pode ser compreendida como um processo operacional. 22 década de 70 de “uma aplicação, um servidor”. Ao virtualizar determinado número de sistemas subutilizados em um único servidor físico, a empresa economiza espaço em estrutura física, espaço em disco, refrigeração, energia e tem a possibilidade de centralizar o gerenciamento. Na “Consolidação de Servidores”, é necessário determinar quais os servidores podem ou não ser virtualizados, fazendo uma avaliação dos recursos existentes. Para tanto, pode-se utilizar ferramentas como MRTG ou Cacti (ambos utilizam SNMP4) para monitorar a performance e o uso de recursos em cada servidor. Uma vez virtualizado, é preciso fazer um acompanhamento do desempenho para verificar se o novo servidor físico ficou sobrecarregado. Caso isso ocorra, é possível migrar determinado servidor virtual para outro servidor físico com o mesmo em operação, sem necessidade de reboot. Dessa forma, faz-se o balanceamento de carga entre vários servidores físicos hospedeiros sem afetar o funcionamento das máquinas virtuais. A virtualização também é importante para se analisar a redundância em data centers, procedimento indispensável em ambientes 24 x 7 (24 horas por dia, sete dias da semana). Com a migração em tempo real, uma vez identificada a possibilidade de falha de determinada máquina física hospedeira (quebra de espelhamento, fonte queimando, memória despejando etc), basta migrarmos as máquinas virtuais para outros servidores físicos. Porém, se acontecer alguma falha não esperada em algum servidor hospedeiro, todas as máquinas virtuais daquele equipamento podem ser afetadas. Por exemplo, caso todas as fontes de um servidor queimem ao mesmo tempo, todas as máquinas virtuais dele desligarão. Ou, caso aconteça alguma falha nos discos do servidor ou na storage de armazenamento, todas as máquinas virtuais poderão ser corrompidas. Daí a importância do monitoramento do sistema e do tipo de virtualização a ser aplicada. 2.3 TIPOS DE VIRTUALIZAÇÃO Existem vários usos e maneiras de proceder a virtualização. Escolheu-se quatro delas para se comentar, por serem as mais utilizadas, a saber: Emulação de hardware; Virtualização Completa; 23 Paravirtualização; Instruction Set Virtualization (Virtualização de Instruções). 2.3.1 A Emulação de Hardware Segundo Jones (2006), a emulação de hardware é atualmente a forma mais complexa de virtualização. Devido a sua complexidade, gera grandes overheads, prejudicando o desempenho do sistema operacional guest3. Nesse método, todo o hardware de uma máquina virtual é criado via software no sistema hospedeiro para emular o hardware proposto. Ou seja, até o processador da máquina virtual precisa ser criado via software, o que é feito geralmente em assembly. Para emulações de alta-fidelidade, incluindo transições de informação entre registradores para memória cache e criação de pipelines na CPU, a performance pode ser, facilmente, mil vezes menor (JONES, 2006). A emulação de hardware, entretanto, também tem vantagens, por exemplo, com ela é possível rodarmos um sistema operacional guest sem qualquer modificação ou adaptação. 2.2.2 Virtualização Completa A virtualização completa, também conhecida como "virtualização nativa", é outro método utilizado para a virtualização. Esse modelo usa uma máquina virtual através da mediação entre o sistema operacional hospedeiro (host) e o guest4. A palavra "mediação" é utilizada, pois o VMM faz a troca entre o sistema operacional virtualizado e o hardware do equipamento. A virtualização completa é mais rápida que a emulação de hardware, mas a performance também é menor do que a do mesmo sistema operacional rodando nativamente. Nesse aspecto, a grande vantagem da virtualização completa é que o sistema operacional pode rodar sem modificações e a desvantagem é que a máquina guest não pode rodar em host de arquitetura diferente. 3 Tipo de máquina virtual em que o monitor é implementado entre o hardware e os sistemas convidados (guest system). 4 Tipo de máquina virtual em que o monitor é implementado como um processo de um sistema operacional real, denominado sistema anfitrião (host system) 24 Um grande obstáculo para a virtualização completa foi o fato de que, em dezessete instruções específicas dos processadores da plataforma x86, geravam erros quando essa camada de interpretação era criada, o que fazia o sistema operacional guest gerar erros críticos durante sua execução Baruchi (2008). Esses erros variavam desde informações no sistema operacional, até a finalização inesperada da aplicação. Assim, essas dezessete instruções foram apontadas como um importante marco para a criação do primeiro ambiente de virtualização completa da plataforma x86, o VMware Workstation, cuja primeira edição ocorreu em 1999. 2.2.3 Paravirtualização A paravirtualização é uma técnica que tem poucas semelhanças com a virtualização completa. Esse método usa o hypervisor para acesso compartilhado ao hardware do equipamento, e também integra códigos de virtualização dentro do sistema operacional nativo, agregando, nele, as funções de gerenciamento do hypervisor. Baruchi (2008) explica que por meio da paravirtualização, o hypervisor é criado como uma camada abaixo do sistema operacional, o qual por sua vez, multiplexa o acesso dos guests ao hardware do equipamento. Assim, o próprio sistema operacional nativo (e, nesse caso, de gerenciamento) é transformado em máquina virtual5. Dessa maneira, uma vez que os sistemas operacionais sejam adaptados, a interação entre as máquinas virtuais e a máquina física é otimizada, o que aumenta o desempenho. Porém, a grande desvantagem desse modelo continua sendo a dependência da alteração do sistema operacional de gerenciamento e dos guests, para que possam interagir com o hypervisor ao invés do hardware físico. 5 Segundo SIQUEIRA (apud BARUCHI, 2008), este modelo como hypervisor obtém preferência para os ambientes virtualizados, pois, os hóspedes sabem perfeitamente que rodam em um ambiente virtual. Para isso, os guests precisam ser corrigidos, o que só é possível conseguir em sistemas de código aberto 25 2.2.4 Virtualização de Instruções (Instruction Set Virtualization) Outro aspecto mais recente da virtualização é chamado Instruction Set Virtualization (Virtualização de Instruções). Nesse modelo, um conjunto de instruções virtuais é traduzido para uma instrução física destinada à camada de hardware do equipamento. Assim, com o código original sendo executado dentro de uma máquina virtual, a tradução ocorre do primeiro (set de instruções) para um segundo seguimento de código, efetuando a mediação entre a aplicação e o sistema operacional,um exemplo recente desse modelo é utilizado no processador Crusoe, da Transmeta, (empresa que criou esse processador). A arquitetura desse processador implementa tradução binária com o nome Code Morphing. O mesmo processo também é utilizado para a execução de binários de diferentes arquiteturas em um sistema operacional de outra plataforma, como, por exemplo, para rodar binários de um sistema Linux plataforma PowerPC, em um Linux plataforma x86, com o software “nspluginwrapper”. 2.3 FERRAMENTAS DE VIRTUALIZAÇÃO As ferramentas de virtualização, conhecidas como Máquinas Virtuais (Virtual Machine - VM), são softwares que representam as funcionalidades de um hardware (LAURENO et al., 2006). Os recursos dessas VMs, referentes à memória, processador etc., são virtualizados quando em execução em um computador. Dessa forma, os recursos do computador ficam divididos em vários ambientes de execução. As Máquinas Virtuais podem executar softwares tanto como sendo servidores como clientes. Entretanto, o sistema de virtualização não depende apenas do software, é necessário que o hardware seja capaz de suportar o processo de virtualização. Esse processo é uma tecnologia que cria uma camada de software que faz uma comunicação direta com o hardware, fazendo com que haja a possibilidade de que mais de um sistema operacional seja executado em um mesmo computador. Atualmente, existem várias ferramentas que permitem o processo de virtualização. A seguir, apresenta-se duas ferramentas de virtualização bastante utilizadas nos dias de hoje. 26 2.3.2 VMWare Workstation VMware Workstation é uma máquina virtual da VMware feita para desktops que permite a utilização de um sistema operacional dentro de outro. É executado como um programa dentro de um sistema operacional hospedeiro, o qual é responsável pela abstração dos dispositivos disponibilizados para o sistema operacional que será executado dentro da máquina virtual. Essa Virtual Machine é como um aplicativo visto pelo sistema anfitrião, ou seja, cria um hypervisor que tem a capacidade de traduzir o sistema guest para o host. Essa ferramenta é utilizada em ambientes de desenvolvimento, no qual se necessita testar uma aplicação em várias plataformas; em testes de sistemas operacionais, por exemplo, podemos usar para executar o Windows dentro do Linux, ou vice-versa, um de seus usos mais comuns; dentre outras aplicações. A Figura 3 apresenta a tela da ferramenta que mostra o sistema operacional Windows sendo executado no sistema hospedeiro Linux. Figura 3: Tela da ferramenta VMWare executando o SO Windows. 27 2.3.2 Virtual Box O VirtualBox é um software da Oracle e possui versões tanto para Windows quanto para Linux, MacOS X e outros. Assim como o VMWare, o VirtualBox é uma máquina virtual bastante utilizada, cujo objetivo é virtualizar sistemas para que se possa testar programas sem que a máquina física seja afetada. Uma das vantagens do VirtualBox é o fato de ele ter interfaces bem definidas, o que torna mais fácil o controle de várias interfaces de uma só vez, além de ter uma série de recursos extras disponíveis. A Figura 4 apresenta a tela da utilização da ferramenta, pronta para fazer a instalação do sistema operacional visitante. Figura 4: Tela da ferramenta VirtualBox. . 28 3 EXPERIMENTOS E RESULTADOS 3.1 DESCRIÇÃO DO AMBIENTE Para executar a comparação dos sistemas operacionais anfitriões, foi instalado na máquina física o sistema operacional CentOS 6 Linux 64 bits, com kernel 2.6.32, Windows 2008 SP2 Standard X64, e 8 GB de memória RAM, sendo que dessa memória, 4 GB foram destinados inteiramente para a máquina virtual em execução. Para o teste não ter problemas de divergências com a utilização de várias máquinas virtuais diferentes, cada máquina virtual foi executada individualmente. O processador utilizado para essa execução foi um Intel Core 2 Quad Q9550S, sendo disponibilizados apenas dois núcleos para as máquinas virtuais. Foram utilizados dois HDs de 640 GB, um para cada sistema operacional, destinando 40 GB para cada máquina virtual, num total de oito máquinas, sendo quatro com Linux Debian 6.0.3 e quatro com Windows 2008 SP2 Standard X64. As máquinas virtuais foram configuradas em um ambiente de produção padronizado em que as tarefas designadas foram iguais para cada servidor virtualizado, simulando uma situação real. Essas tarefas tiveram a finalidade de testar o desempenho de cada máquina virtual com softwares para benchmark, codificação de vídeo, compactação de arquivos e codificação de áudio. Ressalta-se que todos os sistemas operacionais tiveram suas atualizações (update) processadas até dia 10 de novembro de 2011, quando os testes começaram a ser efetuados. 3.2 ANÁLISE DE DESEMPENHO Cada máquina virtualizada foi submetida a testes de processamento, de I/O e de conectividade, a fim de se analisar a performance de cada uma como um todo. As tarefas submetidas foram: Compactação de arquivo no formato 7z Codificação de vídeo com o codec XVid; Análise de performance geral com o software LMBench; Análise de performance geral com software SiSoftware Sandra. Os testes de performance individuais – a codificação de vídeo, codificação do áudio, compressão de dados, análise de desempenho com o LMBench e 29 SiSoftware Sandra – foram realizados com o sistema operacional host em IDLE19, evitando, assim, a influência nos testes de cada uma delas. 3.3 SOBRE O LMBENCH A execução do LMBench versão 3 Alpha 9, nas máquinas virtuais, testou os seguintes itens em cada uma delas: Operações com números do tipo integer - inteiro; Operações com números do tipo float – ponto flutuante; Operações com números do tipo double – números duplos; Latência de comunicação local; Não é objetivo desse documento o detalhamento completo de cada um dos subtestes realizados, visto que pode ser obtido em uma máquina com o sistema operacional Linux que possua o LMBench instalado, através do comando man lmbench. O LMBench foi executado em cada máquina virtual até a obtenção do resultado. Os resultado escritos (.txt) devolvidos pelo LMBench, em cada host, constam como apêndice neste trabalho. A versão utilizada era a última disponível nos repositórios da distribuição adotada pelo grupo, e apesar de ser uma versão Alpha, não foi demonstrado qualquer sinal de instabilidade durante toda a realização dos testes citados. 3.3.1 Operações com Números Inteiros (Integer) Esse teste mede a latência das operações com números inteiros, na máquina virtual, com os operadores aritméticos Integer Addiction (ADD) , Integer Multiply (MUL), Integer Division (DIV) e Integer Modal (MOD) e o operador lógico binário Integer Bit (XOR). A Figura 5 representa o comparativo de tempo, em nanosegundos, para a realização de cada uma das operações descritas utilizando números inteiros. Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. Como se pode observar na Tabela 1 e na Figura 5, apenas no operador Integer Multiply (MUL) o Windows (Apêndices A e B) se equipara ao desempenho do Linux (Apêndices C e D), com o virtualizador VirtualBox. Em todos os demais, os 30 valores dos operadores do Linux foram inferiores aos do Windows, tanto com o virtualizador VMWare, quanto com o VirtualBox, isto é, o sistema anfitrião Linux obteve melhor resultado no teste Integer. 12,00 10,00 8,00 6,00 4,00 2,00 0,00 Interger Division Interger Mod Windows VirtualBox Interger Bit Windows VmWare Interger Multiply Linux VirtualBox Interger Addiction Linux VmWare Figura 5: Operação com números inteiros Integer Division Integer Mod Integer Bit Integer Multiply Integer Addiction Windows VirtualBox VmWare 8,1700 10,3300 9,6700 10,8400 0,3900 0,5000 0,1100 0,1500 0,2000 0,2500 Linux VirtualBox VmWare 7,4800 7,3500 7,8700 7,7400 0,3700 0,3600 0,1100 0,1100 0,1800 0,1800 Tabela 1: Resultado dos testes com números A tabela 1, mostra os valores em nanosegundos das operações com números inteiros em cada virtualizador. 3.3.2 Operações com Números Floats Esse teste mede a latência das operações com números fracionados, representados como pontos flutuantes (Float), na máquina virtual, com os operadores aritméticos Float Addiction (ADD) , Float Multiply (MUL), Float Division 31 (DIV), além do Float Bogomflops6 do Linux. A Figura 6 representa o comparativo de tempo, em nanosegundos, para a realização de cada uma das operações descritas utilizando números fracionados (tipo float). Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. Como mostra a Tabela 2, o sistema anfitrião Windows (Apêndices A e B) apresentou pior desempenho (valores inferiores) que o Linux (Apêndices C e D), com os dois virtualizadores. 9,00 8,00 7,00 6,00 5,00 4,00 3,00 2,00 1,00 0,00 Float Division Float BogomFlops Windows VirtualBox Windows VmWare Float Multiply Linux VirtualBox Float Addiction Linux VmWare Figura 6: Operação com números do tipo float Float Division Float BogomFlops Float Multiply Float Addiction Windows VirtualBox VmWare 8,0300 7,7800 4,5700 6,0500 2,0300 2,0100 1,3100 1,5100 Linux VirtualBox VmWare 5,6900 5,5600 4,4200 4,3200 1,4800 1,4300 1,1400 1,0800 Tabela 2: Resultado dos testes com números fracionários A tabela 2 mostra os valores em nanosegundos das operações com números fracionários de cada máquina virtual. 3.3.3 Operações com Números Double 6 Bogomflot é a aglutinação de Bogo (teste do kernel do Linux), mais m (mega - 106), mais flop (pontos flutuantes por segundo). 32 Esse teste mede a latência das operações com números double, representados como pontos flutuantes com precisão dupla, na máquina virtual, recorrendo aos operadores aritméticos Double Addiction (ADD), Double Multiply (MUL), Double Division (DIV), além do Double BogoMflops do Linux. A Figura 7 representa o comparativo de tempo, em nanosegundos, para a realização de cada uma das operações descritas utilizando números dobrados (tipo double). Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. Também nesse teste, como demonstrado na Tabela 3, o sistema anfitrião Windows (Apêndices A e B) foi superado pelo sistema anfitrião Linux (Apêndices C e D), com os dois virtualizadores. 14,00 12,00 10,00 8,00 6,00 4,00 2,00 0,00 Double Division Double BogomFlops Windows VirtualBox Windows VmWare Double Multiply Linux VirtualBox Double Addiction Linux Vmware Figura 7: Operação com números double Double Division Double BogomFlops Double Multiply Double Addiction Windows VirtualBox VmWare 12,0900 11,8000 7,4900 10,1200 2,5300 2,5100 1,4300 1,5100 Linux VirtualBox Vmware 8,6400 8,3800 7,3700 7,1800 1,8300 1,7900 1,1000 1,0700 Tabela 3: Resultado dos testes com números double A tabela 3 mostra os valores em nanosegundos das operações com números dobrados de cada máquina virtual 33 3.3.4 Latência para a Comunicação Local Esse teste mede a latência das operações com os protocolos de rede TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Foram testados ambos os protocolos e ainda realizados os testes de chamada remota de procedimento usando TCP (RPC/TCP) e usando (RPC/UDP). A Figura 8 representa o comparativo de tempo, em microsegundos, para a realização de cada uma das operações descritas. Quanto menor o resultado obtido, maior eficiência do sistema anfitrião. Foi verificado que com o virtualizador VirtualBox, em todos os testes de latência, o sistema anfitrião Windows (Apêndice A) obteve melhor resultado, sendo até 40% melhor que o Linux (Apêndice C). Já com o virtualizador VMware Workstation, em quase todos os testes, o Linux (Apêndice D) obteve melhor desempenho; somente o de TCP o sistema Windows (Apêndice B) teve melhor resultado, como pode ser verificado na Tabela 4. 300,0 250,0 200,0 150,0 100,0 50,0 0,0 RPC/TCP RPC/UDP Windows VirtualBox TCP Windows VmWare Linux VirtualBox UDP Linux VmWare Figura 8: Teste de Latência comunicação local 34 Windows VirtualBox VmWare 190,2122 56,2373 145,2927 33,8821 174,0352 44,3202 170,7215 20,2098 RPC/TCP RPC/UDP TCP UDP Linux VirtualBox VmWare 266,9244 48,1200 224,4395 19,4773 252,2860 86,3218 194,0536 15,2951 Tabela 4: Resultado do teste de latência de memória A tabela 4 mostra os valores em micro segundos dos testes de latência memória em cada virtualizador 3.4 SOBRE O SISOFTWARE SANDRA 2012 Foi utilizado o software SisSoftware Sandra 2012 (System ANalyser, Diagnostic and Reporting Assistant), o qual é um programa de diagnóstico e benchmark. A versão utilizada foi a última disponível no site oficial do fabricante. Nas máquinas virtuais Windows e Linux, com o referido software, foram realizados os seguintes testes: Testes de processamento da CPU; Testes com máquinas virtuais; Testes com o controlador de memória, Testes de Disco; Teste de Rede Local. Considerou-se não ser conveniente detalhar cada um dos subtestes realizados face ao grande número deles, o que dificultaria a análise do estudo, por torná-lo extenso e prolixo. Pelo mesmo motivo, não se incluiu ao trabalho o resultado escrito (.txt) devolvido pelo SiSoftware Sandra em cada host. Com relação à descrição dos testes, a mesma pode ser obtida em uma máquina com o sistema operacional Windows que possua o SiSoftware Sandra instalado, através do help do software. O SiSoftware Sandra foi instalado em cada máquina virtual, separadamente, até a obtenção do resultado. Após cada teste, reinicializou-se o sistema para que a memória dele (sistema) fosse limpa, evitando, assim, que uma máquina virtual provocasse algum efeito na outra. 35 3.4.1 Testes de processamento da CPU Foram realizados testes de processamento da CPU, em que a melhor eficiência do sistema operacional anfitrião e demonstrada quanto maior o resultado do teste. Executou-se os testes abaixo: Dhrystone ALU, que testa a performance aritmética com inteiros; Whetstone SSE3, que testa a performance aritmética de pontos flutuantes utilizando instruções SSE3; Multi-MediaInteger, que testa operações com inteiros, utilizando instruções multimídia SS3; Multi-MediaFloat, que testa operações de ponto flutuante float, utilizando instruções multimídia SS2; Multi-Media Double, que testa operações de ponto flutuante double, utilizando instruções multimídia SS2; Multi-CoreEfficiencyInter-Core Bandwidth, que realiza o teste de eficiência da utilização de múltiplas CPUs. Como se pode observar na Tabela 5, com o virtualizador VirtualBox, o sistema anfitrião Windows superou discretamente – > 0,03 GB/s – o Linux. Da mesma forma, com o virtualizador VMWare, o desempenho do Windows foi melhor, revelando 2,69 GB/s contra 1,21 GB/s do Linux. Nos demais testes, o sistema anfitrião Linux obteve melhor resultado, conforme fica evidente na Figura 9. 36 30,0 25,0 20,0 15,0 10,0 5,0 0,0 Dhrystone ALU (GIPS) Whetstone SSE3 (GFLOPS) Multi-Media Integer x8 SSSE3 (GIPS) WINDOWS VIRTUALBOX Multi-Media Float x8 SSE2 (GFLOPS) WINDOWS VMWARE Multi-Media Double Multi-Core Efficiency x4 SSE2 (GFLOPS) Inter-Core Bandwidth (GB/s) LINUX VIRTUALBOX LINUX VMWARE Figura 9: Teste de processador WINDOWS LINUX VIRTUALBOX VMWARE VIRTUALBOX VMWARE Dhrystone ALU (GIPS) 23,57 24,75 24,79 25,28 Whetstone SSE3 (GFLOPS) 16,73 18,43 17,62 19,00 Multi-Media Integer x8 SSSE3 (GIPS) 16,41 25,16 17,15 26,00 Multi-Media Float x8 SSE2 (GFLOPS) 15,84 16,83 16,92 17,32 Multi-Media Double x4 SSE2 (GFLOPS) 8,21 8,73 8,78 9,00 Multi-Core Efficiency Inter-Core Bandwidth (GB/s) 1,23 2,69 1,20 1,21 Tabela 5: Resultado dos testes de processador A tabela 5 mostra os valores com seus respectivos tempos dos testes em cada máquina virtual. 3.4.2 Testes com máquinas virtuais Os testes foram realizados utilizando-se máquinas virtuais em JAVA 7update 1 e .NET 4.0, além dos testes aritméticos, com pontos flutuantes e multimídia, totalizando dez testes. Nesses testes, tem-se a melhor eficiência quanto maior o resultado. Aqui também o sistema anfitrião Linux obteve melhor resultado. O Windows teve melhor desempenho em três testes. Com o virtualizador VMWare, obteve 37,62 GIPS e 7,14 MPix/s nos testes Dhrystone Java e Multi-MediaInteger Java, respectivamente, contra 36,65 GIPS e 7,00 MPix/s do Linux. Com o virtualizador 37 VirtualBox, apresentou 1,00 GLOPS contra 12,23 GLOPS do Linux no teste Whetstone Java. Os resultados estão discriminados na Tabela 6 e melhor visualizados na Figura 10.. , 40,0 35,0 30,0 25,0 20,0 15,0 10,0 5,0 0,0 Dhrystone .NET (GIPS) Whetstone .NET Multi-Media Integer Multi-Media Float Multi-Media Double Dhrystone Java (GFLOPS) .NET (MPix/s) .NET (MPix/s) .NET (MPix/s) (GIPS) Whetstone Java Multi-Media Integer Multi-Media Float Multi-Media Double (GLOPS) Java (MPix/s) Java (MPix/s) Java (MPix/s) WINDOWS VIRTUALBOX WINDOWS VMWARE LINUX VIRTUALBOX LINUX VMWARE Figura10: Teste virtual machine WINDOWS LINUX VIRTUALBOX VMWARE VIRTUALBOX VMWARE Dhrystone .NET (GIPS) 4,18 5,39 5,50 5,50 Whetstone .NET (GFLOPS) 11,10 11,36 11,67 12,00 Multi-Media Integer .NET (MPix/s) 9,36 9,40 9,79 10,00 Multi-Media Float .NET (MPix/s) 2,52 2,60 2,76 2,81 Multi-Media Double .NET (MPix/s) 4,79 4,87 5,10 5,18 Dhrystone Java (GIPS) 34,14 37,62 37,23 36,65 Whetstone Java (GLOPS) 13,00 13,68 12,23 14,00 Multi-Media Integer Java (MPix/s) 6,92 7,14 7,35 7,00 Multi-Media Float Java (MPix/s) 5,18 5,30 6,30 5,46 Multi-Media Double Java (MPix/s) 4,84 5,00 5,00 5,07 Tabela 6: Resultado dos testes de máquina virtual A tabela 6 mostra o resultado em seus respectivos tempos dos testes de cada máquina virtual 38 3.4.3 Testes com o controlador de memória Esses testes foram feitos com a largura de banda da memória utilizando-se operações com inteiros e pontos flutuantes. Nos testes Integer Memory Bandwidth e Float Memory Bandwidth, com números inteiros e números float (pontos flutuantes), respectivamente, quanto maior o resultado, melhor é a eficiência. Não houve diferença significativa entre os sistemas anfitriões testados. O sistema anfitrião Windows mostrou melhor desempenho, em ambos os testes, com o virtualizador VMWare; ao passo que o sistema anfitrião Linux teve melhor resultado com o virtualizador VirtualBox, como está descrito na Tabela 7 e representado na Figura 11. 6,80 6,60 6,40 6,20 6,00 5,80 5,60 VIRTUALBOX VMWARE VIRTUALBOX WINDOWS VMWARE LINUX Integer Memory Bandwidth B/F SSE2/128 (GB/s) Float Memory Bandwidth B/F SSE2/128 (GB/s) Figura 11: Controle de memória WINDOWS VIRTUALBOX VMWARE LINUX VIRTUALBOX VMWARE Integer Memory Bandwidth B/F SSE2/128 (GB/s) 6,53 6,07 6,62 Float Memory Bandwidth B/F SSE2/128 (GB/s) 6,52 6,08 6,63 Tabela 7: Resultado dos testes de controle de memória 6,00 6,00 39 A tabela 7 mostra em seus respectivos tempos os resultado dos testes em cada máquina virtual. 3.4.4 Testes de Disco No teste de disco, verificou-se uma leitura sequencial através do disco, utilizando ou não o sistema de arquivo do sistema em operação, e verificou-se, também, o teste de acesso randômico no disco. No primeiro caso -leitura sequencial utilizando ou não o sistema de arquivo – quanto maior o resultado do teste, melhor a eficiência do sistema anfitrião. Já no teste de acesso randômico do disco, quanto menor o resultado, melhor a eficiência do sistema anfitrião. O teste de disco foi bem interessante porque cada sistema anfitrião– Linux e Windows – apresentou uma particularidade. No teste de leitura sequencial, tanto com sistema de arquivo ou não, utilizando o virtualizador VirtualBox, o sistema anfitrião Linux foi um pouco melhor, com 89,00 MB/s contra 80,63 MB/s do Windows (sem sistema de arquivo) e 146,00 MB/s do Linux, contra 110,56 MB/s do Windows (com sistema de arquivo). No entanto, no acesso randômico, com o virtualizador VirtualBox, sem sistema de arquivo, o desempenho do Linux é melhor (7,46ms contra 9,52 msdo Windows); enquanto o desempenho do Windows foi superior, no caso de ter sistema de arquivo, com 96µs contra 236 µsdo Linux. Na utilização do virtualizador VMWare Workstation, sem sistema de arquivo, o Windows apresentou desempenho melhor, tanto no teste leitura sequencial como na leitura randômica: 104,65 MB/s contra 43,17 MB/s do Linux (sequencial); e 7,80 ms contra 7,80 ms do Linux. Já no teste com sistema de arquivo, o Linux foi altamente superior ao Windows, seja no teste sequencial (347% melhor) quanto randômico (3993% melhor). No primeiro caso (sequencial), o Linux obteve 368,22 MB/s contra 82,24 MB/s do Windows; no segundo (randômico), o Linux apresentou 171 µs contra 7000 µs do Windows. Os detalhes dos testes podem ser conferidos na Tabela 8 e visualizados na Figura 12. 40 400,00 350,00 300,00 250,00 200,00 150,00 100,00 50,00 0,00 Physical Disks Read Drive Physical Disks Read Random File Systems Drive Score (MB/s) Score (MB/s) Access Time (ms) WINDOWS VIRTUALBOX WINDOWS VMWARE LINUX VIRTUALBOX File Systems Random Access Time (µs) LINUX VMWARE Figura 12: Testes de disco WINDOWS VIRTUALBOX VMWARE LINUX VIRTUALBOX VMWARE Physical Disks Read Drive Score (MB/s) 80,63 104,65 89,00 Physical Disks Read Random Access Time (ms) 9,52 7,80 7,46 File Systems Drive Score (MB/s) 110,56 82,24 146,00 File Systems Random Access Time (µs) 96 7000 236 Tabela 8: Resultado dos testes de disco 43,17 7,87 368,22 171 A tabela 8 mostra em seus tempos respectivos, os resultados dos testes em cada máquina virtual. 3.4.5 Teste de Rede Local O teste de rede local foi realizado em todas as máquinas virtuais que utilizavam Windows. Fez-se os testes de largura de banda (Data Bandwidth) e latência na rede local (Data Latency). Nos testes de largura de banda, quanto maior o resultado obtido melhor a eficiência do sistema anfitrião; já nos testes de latência, quanto menor o resultado obtido, melhor a eficiência do sistema anfitrião. Pode-se conferir na Tabela 9 assim como na Figura 13 que, nos testes realizados com os dois virtualizadores (VirtualBox e VWWARE), o sistema anfitrião Linux teve melhor desempenho. 41 Foi interessante verificar o sofrível desempenho do virtualizador VirtualBox nos testes de rede: no teste Data Bandwidth, teve 8,24 MB/s contra 68,84 MB/s do VMWare (>60,6 MB/s); e no teste Data Latency 332 µs contra 115 µs, respectivamente (<217 µs). 700,00 588 600,00 500,00 400,00 332 300,00 174 200,00 100,00 115 68,84 59,91 8,24 2,92 0,00 VIRTUALBOX VMWARE VIRTUALBOX WINDOWS VMWARE LINUX Data Bandwidth (MB/s) Data Latency (µs) Figura 13: Redes locais WINDOWS LINUX VIRTUALBOX VMWARE VIRTUALBOX VMWARE Data Bandwidth (MB/s) 2,92 59,91 8,24 68,84 Data Latency (µs) 588 174 332 115 Tabela 9: Resultado do teste de rede local. A tabela 9 mostra em seus respectivos tempos os resultados dos testes em cada máquina virtual. 3.5 COMPACTAÇÃO DE ARQUIVOS A compactação de arquivos foi realizada com 1.2 GB de dados (Para efetuar o teste de compactação de arquivos, reuniu-se documentos do Word, Powerpoint e Pdf, perfazendo 1,2 GB de dados. Esses dados foram usados tanto no sistema operacional Windows quanto Linux. No Windows foi utilizado o software PeaZip 4.1 X64 no formato 7z, com nível de compressão normal e com método de compressão LZMA2, que utiliza multithreading. No Linux, foi utilizado o software p7zip 9.04 X64 no formato 7z com a syntax "a -t7z -r -m0=LZMA2 -mx=5". Utilizou-se o comando 42 time do Linux para verificar o tempo do processo. Quanto menor o tempo utilizado, melhor o desempenho no teste. 0 20 40 60 80 100 120 140 160 Tempo em segundos Windows VirtualBox 146 Windows VmWare 154 Linux VirtualBox 149 Linux VmWare 145 Figura 14: Compactação de arquivo usando Windows A Figura 14, acima, mostra os testes de compactação de arquivos tendo o Windows como máquina virtualizada. Nesse caso, com o VirtualBox, o sistema anfitrião Windows teve melhor desempenho, com 3 segundos a menos que o sistema anfitrião Linux. No caso do WMWare, o sistema anfitrião Linux foi 9 segundos mais rápido que o Windows no mesmo teste. Na Figura 15, a seguir, mostra-se os testes de compactação de arquivos tendo o Linux como máquina virtualizada. O resultado foi similar ao teste apresentado no gráfico 10. Com o VirtualBox, o sistema anfitrião Windows foi 2 segundos mais rápido que o Linux, e, com o VMWare, o Linux superou o Windows em 159 segundos. Portanto, nota-se que com o VirtualBox houve uma pequena perda nos dois sistemas chegando no máximo a 3%. Já com VMware Workstation, os testes apresentaram maior diferença no Windows foram 6% e no Linux a inacreditáveis 53%. 43 0 50 100 150 200 250 300 350 Tempo em Segundos Windows VirtualBox 150 Windows VmWare 304 Linux VirtualBox 152 Linux VmWare 145 Figura 15: Compactação de arquivo usando Linux 3.6 CODIFICAÇÃO DE ÁUDIO Foi realizada a codificação de áudio com o CD do João Bosco “Dá licença meu senhor”, extraído as faixas para WAV com Windows Media Player e feito a mesclagem das dez primeiras faixas, com o software WAV Joiner, chegando a um arquivo de 457 MB. O software de codificação de audio LAME foi usado tanto no Windows, na versão 3.99.1; quanto no Linux, na versão 3.98.4; ambos de 64 bits. A syntax do comando foi "-b 160 --nores". Ressalta-se que o resultado do teste é melhor quando menor o tempo em segundos para codificar o mesmo arquivo de áudio. Na Figura 16, verificou-se que com o VirtualBox nos testes na plataforma Windows, o sistema anfitrião Linux compactou os 457 GB em 92 segundos, isto é, o Linux. foi 8% mais rápido que o sistema anfitrião Windows, o qual fez a mesma tarefa em 99 segundos. Com o virtualizador VMware Workstation, na plataforma Windows, o sistema com anfitrião Linux foi significativamente melhor, compactando o áudio em 91 segundos contra 116 segundos do sistema anfitrião Windows, superando-o em 22%. 44 0 20 40 60 80 100 120 Tempo em Segundos Windows VirtualBox 99 Windows VmWare 116 Linux VirtualBox 92 Linux VmWare 91 Figura 16: Codificação de áudio usando Windows A Figura 17 abaixo, demonstra que com o VirtualBox ,nos testes na plataforma Linux, o sistema anfitrião Windows compactou os 457 GB em 123 segundos contra os 144 segundos do sistema anfitrião Linux para realizar a mesma tarefa. Com o virtualizador VMware Workstation, na plataforma Linux, o sistema com anfitrião Linux foi discretamente melhor, compactando o arquivo de áudio em 118 segundos contra 124 segundos do sistema anfitrião Windows. 45 0 20 40 60 80 100 120 140 160 Tempo em Segundos Windows VirtualBox 123 Windows VmWare 124 Linux VirtualBox 144 Linux VmWare 118 Figura 17: Codificação de áudio usando Linux 3.7 CODIFICAÇÃO DE VÍDEO Esse teste foi realizado codificando-se um vídeo com 9 minutos utilizando o DVD ANIMATRIX com os capítulos “O segundo renascer partes I e II” extraído com o software DVDDecypter 3.5.4.0 tendo o tamanho de 643 MB que continha somente vídeo sem áudio, este convertido para o formato XVid. No vídeo, utilizou-se o software AviDemux 2.5.4, no Linux, e VirtualDub 1.9.11, no Windows. A versão do codec XVid utilizado no Windows foi a 1.3.2; e 1.2.4 no Linux. Nas duas plataformas, utilizou-se o contêiner AVI, sendo os programas configurados para operar em multithreading. Quanto menor o tempo em segundos para codificar um vídeo sem áudio de mesmo tamanho, melhor é o resultado quanto ao desempenho do sistema anfitrião. Na Figura 18, verifica-se que com o VirtualBox, nos testes na plataforma Linux, o sistema anfitrião Linux compactou os 643 MB de vídeo sem áudio em 496 segundos contra 410 segundos do sistema anfitrião Windows, que teve, portanto, um desempenho bem superior. Por outro lado, com o virtualizador VMware Workstation 46 na plataforma Linux, o sistema com anfitrião Linux foi melhor, compactando o mesmo arquivo em 363 segundos contra 389 segundos do sistema anfitrião Windows. 0 50 100 150 200 250 300 350 400 450 500 Tempo em Segundos Windows VirtualBox 410 Windows VmWare 389 Linux VirtualBox 496 Linux VmWare 363 Figura 18: Codificação de vídeo no Linux Nos testes na plataforma Windows, a Figura 19 mostra que o sistema anfitrião Linux teve um desempenho melhor com os dois virtualizadores. Com o VirtualBox, o Linux compactou os 643 MB GB em 606 segundos e o sistema anfitrião Windows fez o mesmo trabalho em 706 segundos. Com o virtualizador VMware Workstation, na plataforma Windows, o sistema com anfitrião Linux foi ainda superior, compactando o vídeo em 600 segundos contra 708. Constatou-se, assim, que, no VirtualBox, com os mesmos testes para plataforma Linux, que o sistema anfitrião Windows foi melhor em 18% sobre o sistema Linux; já nos testes na plataforma Windows, o Linux como anfitrião foi melhor 15%. Quando no VMware Workstation, em ambas as plataformas testadas, o 47 sistema anfitrião Linux foi melhor chegando a superar o sistema anfitrião Windows em 16% nos testes realizados na plataforma Windows. 0 100 200 300 400 500 600 700 Tempo em Segunds Windows VirtualBox 706 Windows VmWare 708 Linux VirtualBox 606 Linux WmWare 600 Figura 19: Codificação de vídeo usando Windows 800 48 4 CONSIDERAÇÕES FINAIS A análise do desempenho dos sistemas anfitriões Windows Server 2008 x64 e Linux CentOS 6 x64, rodando virtualizadores VirtualBox e VMWare Workstation, com as máquinas virtuais Windows Server 2008 x64 e Linux Debian 6.0.3 x64, mostrou resultados interessantes. Nos testes do LMBench, o sistema anfitrião Linux apresentou desempenho superior na maioria dos casos, com ambos os virtualizadores. Apenas no teste de latência de comunicação local que o sistema anfitrião Windows apresentou melhor performance com o VirtualBox. O mesmo ocorreu quando os testes do software Sandra foram aplicados, em que o sistema anfitrião Linux mostrou maior eficiência nos testes de processamento da CPU, com máquinas virtuais, de disco e de Rede Local. O sistema anfitrião Windows comportou-se discretamente melhor no teste com o controlador de memória utilizando VMWare; com o VirtualBox o sistema anfitrião Linux teve melhor desempenho também nesse teste. No teste de compactação de arquivos, com o VirtualBox, o sistema anfitrião Windows foi o melhor; já no WVWare, de novo sobressai o sistema anfitrião Linux. NTanto nos testes de codificação de áudio quanto nos testes de codificação de vídeo, o sistema anfitrião Linux somente foi superado quando utilizado o virtualizador VirtualBox com a máquina virtualizada Linux. De forma geral, então, percebeu-se a expressiva superioridade do desempenho do sistema anfitrião Linux na quase totalidade dos testes realizados com os virtualizadores escolhidos. Para quem utiliza máquinas virtuais no âmbito profissional, testes como os realizados neste trabalho, ajudam a otimizar o uso dos recursos utilizados e dar maior celeridade na condução das tarefas. Entretanto, vale ressaltar que esse tipo de análise requer conhecimento especializado em manipulação de máquinas virtuais, na operação de sistemas operacionais de servidor e de programas de benchmark. Além disso, recomenda-se que seja utilizada uma máquina robusta (como sistemas com quad cores ou melhores, 8 GB para que possa ser alocado memória suficiente para as maquinas virtualizadas não havendo lentidão pela falta da mesma e discos de 7200 rpm ou 49 SSD para que o desempenho do disco não atrapalhe o teste) e softwares originais, o que demandam recursos financeiros substantivos. Para além dos aspectos materiais, que, embora difíceis, foram superados, este estudo exigiu dedicação, empenho, e muitas horas ao lado da máquina, zelando pela boa realização dos testes. Pelo exposto, reconhece-se, principalmente, a validade do exercício que se tornou a prova final para ser recebido o título de bacharel em Ciência da Computação. Ademais, diante das questões apresentadas e discutidas, espera-se ter contribuído para uma maior reflexão diante deste tema, que outros trabalhos possam ser elaborados para um vasto enriquecimento de ideias e objetivos para aqueles que escolherem seguir neste campo de estudos. 50 REFERÊNCIAS BARUCHI, João Henrique. Comparativo entre ferramentas de virtualização. Trabalho de Conclusão de Curso. Faculdade de Jaguariúna. 2008. CHIUEH , N.; BARHAM, P.. Máquinas virtuais – 2006. Disponível em: http://www.guiadohardware.net/dicas/maquinas-virtuais-introducao.html - Acesso em: 10 mai. 2009 COELHO, Fábio Azeredo. CALZAVARA, Gustavo Santos. DI LUCIA, Ricardo. Trabalho de Redes de Computadores I – Professor Otto Duarte. Disponível em <http://www.gta.ufrj.br/grad/09_1/versaofinal/virtualizacao/conceitos%20chave.html>. Acesso em 5/11/2011. JONES, M. T. Virtual Linux. An overview of virtualization methods, architectures, and implementations. IBM: 2006. Disponível em: <http://www128.ibm.com/developerworks/linux/library/l-linuxvirt/?ca=dgr-lnxw01VirtualLinux>.Acesso em: 1º. ago. 2009. LAUREANO, M. Máquinas Virtuais e emuladores. Conceitos,Técnicas e Aplicações. (e-Book). São Paulo, 2006. Novatec Editora. LOPES, A.; LAZARINO, O. VMWARE Inside in INFO n. 248/2006 (pag. 126-127) Revista INFO, São Paulo – 2006. MICROSOFT, 2007 Microsoft Virtual Server 2005. http://www.microsoft.com/downloads/ Acessado em: 30/10/2011 Disponível em: NETWORK WORLD 2007 Os oito principais desafios da virtualização em data centers Disponível em: httphttp://pt.scribd.com/doc/68899889/virtualizacao-de-datacenter/ - Acessado em: 23/10/2011 SCALZO, Bert et all. Database Benchmarking Practical methods for Oracle & SQL Server. Kittrell, NC: RAMPANT, 2007. SILVA, Diogo Ezídio et all. Virtualização como alternativa para ambiente de servidores. Trabalho de Conclusão de Curso. Faculdade de Tecnologia SENAI de Desenvolvimento Gerencial – FATESG. Goiânia, 2008. TANENBAUM, A. S.; WOODHULL, A. S. Sistemas Operacionais Projeto e Implantação 2. Edição (e-Book) Bookman Editora, Rio de Janeiro – 2006. 51 TORRES, G.; LIMA, C. Como Funciona a Tecnologia de Virtualização da Intel 2007 Disponível em: http://www.clubedohardware.com.br/artigos/1144 - Acessado em: 25/10/2011 52 APÊNDICES 53 APÊNDICE A: SAÍDA DE EXECUÇÃO DO LMBENCH COM O SISTEMA ANFITRIÃO WINDOWS NA MÁQUINA VIRTUALBOX Process fork+/bin/sh -c: 9352.2366 microseconds integer bit: 0.39 nanoseconds integer add: 0.20 nanoseconds integer mul: 0.11 nanoseconds integer div: 8.17 nanoseconds integer mod: 9.67 nanoseconds int64 bit: 0.37 nanoseconds uint64 add: 0.20 nanoseconds int64 mul: 0.26 nanoseconds int64 div: 17.17 nanoseconds int64 mod: 15.98 nanoseconds float add: 1.31 nanoseconds float mul: 2.03 nanoseconds float div: 8.03 nanoseconds double add: 1.43 nanoseconds double mul: 2.53 nanoseconds double div: 12.09 nanoseconds float bogomflops: 4.57 nanoseconds double bogomflops: 7.49 nanoseconds integer bit parallelism: 3.08 integer add parallelism: 3.12 integer mul parallelism: 4.00 integer div parallelism: 1.84 integer mod parallelism: 2.41 int64 bit parallelism: 3.00 int64 add parallelism: 3.01 int64 mul parallelism: 4.00 int64 div parallelism: 1.41 int64 mod parallelism: 1.51 float add parallelism: 3.67 float mul parallelism: 5.42 float div parallelism: 1.58 double add parallelism: 3.55 double mul parallelism: 6.98 double div parallelism: 1.15 File /var/tmp/lmbench/XXX write bandwidth: 53575 KB/sec Pagefaults on /var/tmp/lmbench/XXX: 17.6683 microseconds UDP latency using localhost: 170.7215 microseconds TCP latency using localhost: 174.0352 microseconds RPC/udp latency using localhost: 145.2927 microseconds RPC/tcp latency using localhost: 190.2122 microseconds connect: Cannot assign requested address connect: Cannot assign requested address 54 APÊNDICE B: SAÍDA DE EXECUÇÃO DO LMBENCH COM O SISTEMA ANFITRIÃO WINDOWS NA MÁQUINA VMWARE Process fork+/bin/sh -c: 2807.0000 microseconds integer bit: 0.50 nanoseconds integer add: 0.25 nanoseconds integer mul: 0.15 nanoseconds integer div: 10.33 nanoseconds integer mod: 10.84 nanoseconds int64 bit: 0.50 nanoseconds uint64 add: 0.25 nanoseconds int64 mul: 0.35 nanoseconds int64 div: 22.16 nanoseconds int64 mod: 21.69 nanoseconds float add: 1.51 nanoseconds float mul: 2.01 nanoseconds float div: 7.78 nanoseconds double add: 1.51 nanoseconds double mul: 2.51 nanoseconds double div: 11.80 nanoseconds float bogomflops: 6.05 nanoseconds double bogomflops: 10.12 nanoseconds integer bit parallelism: 2.87 integer add parallelism: 3.01 integer mul parallelism: 4.00 integer div parallelism: 1.85 integer mod parallelism: 2.26 int64 bit parallelism: 2.56 int64 add parallelism: 2.98 int64 mul parallelism: 4.00 int64 div parallelism: 1.41 int64 mod parallelism: 1.24 float add parallelism: 3.00 float mul parallelism: 4.01 float div parallelism: 1.34 double add parallelism: 3.00 double mul parallelism: 5.00 double div parallelism: 1.20 File /var/tmp/lmbench/XXX write bandwidth: 83081 KB/sec Pagefaults on /var/tmp/lmbench/XXX: 5.1249 microseconds UDP latency using localhost: 20.2098 microseconds TCP latency using localhost: 44.3202 microseconds RPC/udp latency using localhost: 33.8821 microseconds RPC/tcp latency using localhost: 56.2373 microseconds TCP/IP connection cost to localhost: 52.2959 microseconds 55 APÊNDICE C: SAÍDA DE EXECUÇÃO DO LMBENCH COM O SISTEMA ANFITRIÃO LINUX NA MÁQUINA VIRTUALBOX Process fork+/bin/sh -c: 8975.3937 microseconds integer bit: 0.37 nanoseconds integer add: 0.18 nanoseconds integer mul: 0.11 nanoseconds integer div: 7.48 nanoseconds integer mod: 7.87 nanoseconds int64 bit: 0.37 nanoseconds uint64 add: 0.18 nanoseconds int64 mul: 0.25 nanoseconds int64 div: 16.07 nanoseconds int64 mod: 15.77 nanoseconds float add: 1.14 nanoseconds float mul: 1.48 nanoseconds float div: 5.69 nanoseconds double add: 1.10 nanoseconds double mul: 1.83 nanoseconds double div: 8.64 nanoseconds float bogomflops: 4.42 nanoseconds double bogomflops: 7.37 nanoseconds integer bit parallelism: 2.88 integer add parallelism: 3.11 integer mul parallelism: 4.00 integer div parallelism: 1.85 integer mod parallelism: 2.28 int64 bit parallelism: 2.57 int64 add parallelism: 3.01 int64 mul parallelism: 4.01 int64 div parallelism: 1.41 int64 mod parallelism: 1.24 float add parallelism: 3.02 float mul parallelism: 4.00 float div parallelism: 1.34 double add parallelism: 3.01 double mul parallelism: 5.01 double div parallelism: 1.20 UDP latency using localhost: 194.0536 microseconds TCP latency using localhost: 252.2860 microseconds RPC/udp latency using localhost: 224.4395 microseconds RPC/tcp latency using localhost: 266.9244 microseconds TCP/IP connection cost to localhost: 55.8020 microseconds 56 APÊNDICE D: SAÍDA DE EXECUÇÃO DO LMBENCH COM O SISTEMA ANFITRIÃO LINUX NA MÁQUINA VMWARE integer bit: 0.36 nanoseconds integer add: 0.18 nanoseconds integer mul: 0.11 nanoseconds integer div: 7.35 nanoseconds integer mod: 7.74 nanoseconds int64 bit: 0.36 nanoseconds uint64 add: 0.18 nanoseconds int64 mul: 0.25 nanoseconds int64 div: 15.80 nanoseconds int64 mod: 15.42 nanoseconds float add: 1.08 nanoseconds float mul: 1.43 nanoseconds float div: 5.56 nanoseconds double add: 1.07 nanoseconds double mul: 1.79 nanoseconds double div: 8.38 nanoseconds float bogomflops: 4.32 nanoseconds double bogomflops: 7.18 nanoseconds integer bit parallelism: 2.87 integer add parallelism: 3.09 integer mul parallelism: 4.00 integer div parallelism: 1.85 integer mod parallelism: 2.27 int64 bit parallelism: 2.56 int64 add parallelism: 3.00 int64 mul parallelism: 4.00 int64 div parallelism: 1.41 int64 mod parallelism: 1.24 float add parallelism: 3.01 float mul parallelism: 4.02 float div parallelism: 1.34 double add parallelism: 3.01 double mul parallelism: 5.02 double div parallelism: 1.21 File /var/tmp/lmbench/XXX write bandwidth: 243084 KB/sec UDP latency using localhost: 15.2951 microseconds TCP latency using localhost: 86.3218 microseconds RPC/udp latency using localhost: 19.4773 microseconds RPC/tcp latency using localhost: 48.1200 microseconds TCP/IP connection cost to localhost: 54.2828 microseconds