FACULDADE DE TECNOLOGIA SENAI DE DESENVOLVIMENTO GERENCIAL - FATESG CURSO SUPERIOR EM TECNOLOGIA EM REDE DE COMPUTADORES Diogo Ezídio da Silva Gilberto Lima de Oliveira Leandro de Sousa Rangel Lucas Timm Florão VIRTUALIZAÇÃO COMO ALTERNATIVA PARA AMBIENTE DE SERVIDORES Goiânia 2008 Diogo Ezídio da Silva Gilberto Lima de Oliveira Leandro de Sousa Rangel Lucas Timm Florão VIRTUALIZAÇÃO COMO ALTERNATIVA PARA AMBIENTE DE SERVIDORES Trabalho de Conclusão de Curso – TCC apresentado á Faculdade de Tecnologia SENAI DE Desenvolvimento Gerencial – FATESG, para a obtenção do título de Graduado em Tecnologia em Redes de Computadores. Orientador: Prof. Msc. Mauricio Severich Goiânia 2008 CURSO SUPERIOR EM TECNOLOGIA EM REDE DE COMPUTADORES Diogo Ezídio da Silva Gilberto Lima de Olivera Leandro de Sousa Rangel Lucas Timm Florão Virtualização como alternativa para ambiente de servidores Trabalho de Conclusão de Curso – TCC apresentado á Faculdade de Tecnologia SENAI DE Desenvolvimento Gerencial – FATESG, para a obtenção do título de Graduado em Tecnologia em Redes de Computadores. Aprovada em _______ de _____________________________ de 2008 Banca Examinadora Professor Msc. Maurício Severich Professor Msc. Rafael Leal Martins Professora Msc. Ana Flávia Marinho de Lima Garrati Dedicamos este trabalho de conclusão de curso a todos os nossos familiares que nos apoiaram, à FATESG por ter acreditado no Curso Superior em Tecnologia em Rede de Computadores e ao orientador, Professor que, com dedicação e conhecimento, orientou-nos no decorrer deste trabalho. Agradecemos, primeiramente a DEUS, que nos deu saúde e disposição nestes anos, aos colegas que contribuíram e incentivaram para realização desse trabalho e também aos professores que com sabedoria nos acompanharam nesses anos em que decorreu o curso e, em especial ao nosso orientador que nos acompanhou em todas as etapas desse trabalho. Também aos amigos e a família pela compreensão de nossa ausência para a elaboração do mesmo. “Uma mente que se abre a uma nova idéia jamais volta ao seu tamanho original”. (Albert Einstein) RESUMO Este trabalho apresenta uma visão geral da virtualização para uso em servidores. A virtualização perante a tecnologia da informação consiste em utilizar um único host físico para a criação de dois ou mais sistemas operacionais que funcionam simultaneamente. Neste documento, a virtualização foi utilizada para criação de um ambiente computacional de servidores comparando três softwares utilizados para tal finalidade: O Xen, Vmware Server e Linux KVM. Testes foram realizados visando obter resultados práticos da virtualização de servidores como forma de diminuir custos em TI através do melhor aproveitamento de hardware, bem como o detalhamento de informações sobre esta tecnologia que se torna a cada dia mais presente no cenário de TI das grandes empresas. PALAVRAS-CHAVE: Virtualização, Xen, VMware, Linux ABSTRACT This paper shows a general visualization of virtualization for servers’ use. The virtualization at the Information Technology scene is consisted in the use from a single physichal host to install and creation of two or more operational systems that runs simultaneously. In this document, the virtualization was used to simulate a server data-center comparing three softwares commonly used to this end: Xen, VMware Server and Linux KVM. Tests was ran to take practical results of server virtualization, as a way to reduce IT coasts and to get a better hardware utilization, also the technical information about this technology, which everyday becomes more and more present on the IT scene of big employments. KEY-WORDS: Virtualization, Xen, Vmware, Linux LISTA DE ILUSTRAÇÕES Figura 1: Emulação de Hardware..............................................................................22 Figura 2: Virtualização Completa ..............................................................................23 Figura 3: Hypervisor ..................................................................................................24 Figura 4: Instruction Set Virtualization.......................................................................25 Figura 5: Linux KVM..................................................................................................31 LISTA DE GRÁFICOS Gráfico 1 - Comparativo de Processos......................................................................41 Gráfico 2 - Operações com Inteiros...........................................................................42 Gráfico 3 - Operações com Floats.............................................................................43 Gráfico 4 - Operações com Doubles .........................................................................44 Gráfico 5 - Context Switching ....................................................................................45 Gráfico 6 - Latência de Comunicação Local..............................................................46 Gráfico 7 - Latência de Sistema de Arquivos ............................................................47 Gráfico 8 - Largura de Banda para Comunicação Local ...........................................48 Gráfico 9 - Comparativo de Latência de memória .....................................................49 Gráfico 10 - Média de Latência de Memória..............................................................50 Gráfico 11 - Transferência de Arquivos em NFS.......................................................52 Gráfico 12 - Codificação de vídeo .............................................................................53 Gráfico 13 - Connection Times para 100 requisições por rajada...............................55 Gráfico 14 - Porcentagem de Requisições por Tempo..............................................56 Gráfico 15 - Connection Times para 200 requisições por rajada...............................58 Gráfico 16 - Porcentagem de Requisições por Tempo..............................................59 LISTA DE ABREVIATURAS SIGLAS E SÍMBOLOS AMD - Advanced Micro Devices ARM – Advanced Risc Machine BARE METAL – Software instalado diretamente em hardware BSD – Berkeley Software Distribution CPU – Central Processing Unit CTSS - Compatible Time-Share System DMA – Direct Memmory Access DOUBLE – Número de tamanho duplo FLOAT – Número fracionado (com ponto flutuante) HCL - Hardware Compatible List - Lista de Hardware Compatível I/O – Input/Output IDC – International Data Corporation INTEGER – Número inteiro Intel VT – Intel Virtualization Technology KVM – Kernel-based Virtual Machine MIPS – Microprocessor without interlocked pipeline stages MIT – Massachusetts institute of Technology MRTG – Multi-Router Traffic Grapher NFS – Network File System PAE – Phisical Addressing Extentions POWER – Power Optimization Enhanced Risc PowerPC - Power Optimization With Enhanced RISC - Performance Computing Pseudo-Hardware – Hardware visualizado pela máquina virtual. QEMU-DM – QEMU Device-Manager SCSI - Small Computer Systems Interface - Interface para Sistemas de Pequenos Computadores SMB – Service Message Blocks SMP - Symmetric multiprocessing - Multi Processamento Simétrico. SNMP – Simpe Network Manage Ment Protocol SPARC – Scalable Processor Architecture USB - Universal Serial Bus VMM – Virtual Machine Monitor Vmotion – Migração viva VT - Intel Virtualization Technology – Tecnologia de Virtualização Intel SUMÁRIO SUMÁRIO .................................................................................................................12 1 INTRODUÇÃO......................................................................................................15 1.1 OBJETIVO..........................................................................................................16 2 METODOLOGIA...................................................................................................17 2.1 DETALHAMENTO TEÓRICO.............................................................................17 2.2 AMBIENTE DE TESTES REALIZADOS.............................................................17 3 VIRTUALIZAÇÃO.................................................................................................18 3.1 A ORIGEM DA VIRTUALIZAÇÃO ......................................................................18 3.1.1 Visão Histórica da Virtualização ..................................................................18 3.1.2 A Virtualização na Plataforma X86...............................................................19 3.2 A IMPORTÂNCIA DA VIRTUALIZAÇÃO ............................................................20 3.3 TIPOS DE VIRTUALIZAÇÃO .............................................................................21 3.3.1 A Emulação de Hardware .............................................................................21 3.3.2 A Virtualização Completa .............................................................................22 3.3.3 A Paravirtualização .......................................................................................24 3.3.4 Instruction Set Virtualization – Virtualização de Instruções .....................25 4 IMPLEMENTAÇÕES PARA VIRTUALIZAÇÃO ...................................................27 4.1 QEMU.................................................................................................................27 4.2 XEN ....................................................................................................................28 4.2.1 Sistemas Operacionais Suportados ............................................................29 4.2.2 Hardware requerido ......................................................................................30 4.3 LINUX KVM ........................................................................................................30 4.3.1 Componentes do KVM ..................................................................................32 4.3.2 Gerenciamento ..............................................................................................32 4.4 VMWARE SERVER............................................................................................33 4.4.1 Novos recursos no VMware Server 2 ..........................................................33 4.5 VMWARE ESX SERVER....................................................................................34 4.5.1 VMware ESXi .................................................................................................35 4.6 VMWARE WORKSTATION................................................................................35 4.7 SUN XVM, ..........................................................................................................35 4.7.1 Suporte a guests ...........................................................................................36 4.8 QUADRO COMPARATIVO DAS FERRAMENTAS ............................................36 5 EXPERIMENTOS E RESULTADOS.....................................................................38 5.1.1 Descrição do Ambiente ................................................................................38 5.1.2 Análise de Desempenho...............................................................................38 5.2 LMBENCH ..........................................................................................................39 5.2.1 Manipulação de Processos ..........................................................................40 5.2.2 Operações com Números Inteiros ...............................................................41 5.2.3 Operações com Números fracionários (Floats) .........................................42 5.2.4 Operações com Números Dobrados (Double)............................................44 5.2.5 Context Switching – Troca de Contexto......................................................45 5.2.6 Latência para Comunicação Local ..............................................................46 5.2.7 Latência de sistema de arquivos .................................................................46 5.2.8 Largura de banda para comunicação local.................................................47 5.2.9 Latência de Memória.....................................................................................48 5.2.10 Média de Latência de Memória ....................................................................49 5.3 TRANSFERÊNCIA DE ARQUIVOS ...................................................................50 5.3.1 SMB ................................................................................................................51 5.3.2 NFS .................................................................................................................51 5.4 CODIFICAÇÃO DE VÍDEO.................................................................................52 5.5 BENCHMARK DE SERVIDOR WEB..................................................................53 5.5.1 100 requisições por rajada ...........................................................................54 5.5.2 200 requisições por rajada ...........................................................................57 6 CONSIDERAÇÕES FINAIS..................................................................................60 6.1 DIFICULDADES ENCONTRADAS.....................................................................61 6.2 LIMITAÇÕES......................................................................................................62 6.3 EXPERIMENTOS FUTUROS.............................................................................62 6.4 CONCLUSÕES ..................................................................................................63 REFERÊNCIAS BIBLIOGRÁFICAS.........................................................................64 ANEXO A: ARQUIVO DE CONFIGURAÇÃO PARA INSTALAÇÃO COM XEN .....66 ANEXO B: ARQUIVO DE CONFIGURAÇÃO APÓS A INSTALAÇÃO COM XEN..67 ANEXO C: CRIAÇÃO DE MÁQUINA VIRTUAL COM KVM ....................................68 ANEXO D: REDE BRIDGE DO QEMU-KVM............................................................69 ANEXO E: SAÍDA DE EXECUÇÃO DO LBENCH NO KVM ....................................70 ANEXO F: SAÍDA DE EXECUÇÃO DO LBENCH NO XEN.....................................72 ANEXO G: SAÍDA DE EXECUÇÃO DO LBENCH NO VMWARE SERVER............74 ANEXO H: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO KVM........76 ANEXO I: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO XEN..........77 ANEXO J: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO VMWARE 78 ANEXO K: SAÍDA DE EXECUÇÃO DO AB NO KVM..............................................79 ANEXO L: SAÍDA DE EXECUÇÃO DO AB NO XEN...............................................81 ANEXO M: SAÍDA DE EXECUÇÃO DO AB NO VMWARE SERVER .....................83 ANEXO N: SAÍDA DE EXECUÇÃO DAS CÓPIAS DE ARQUIVO POR NFS..........85 15 1 INTRODUÇÃO Através de uma definição livre, virtualização é o processo de executar vários sistemas operacionais em um único equipamento. Uma máquina virtual é um ambiente operacional completo que se comporta como se fosse um computador independente. Com a virtualização, um servidor pode manter vários sistemas operacionais em uso. Segundo GOLDEN & SCHEFFY (2008), a criação de um ambiente data center demanda recursos, que devem ser bem direcionados. A cada servidor adquirido é necessária a adequação do espaço físico, verificação do circuito elétrico de alimentação e recabeamento nos ativos de rede, assim como a avaliação do custo do equipamento com gasto de energia e manutenção por toda a sua vida útil. Porém, uma vez estabelecido um ambiente de servidores, as circunstâncias podem levar a necessidade de ampliação do mesmo, o que pode gerar transtornos caso não sejam analisados os itens acima. Através da virtualização, esta ampliação pode ser obtida sem a necessidade real da aquisição de novo equipamento em hardware. Como conseqüência, haveria a possibilidade de colocar vários servidores virtuais em operação na mesma máquina física, usando os recursos de hardware de forma otimizada e equilibrada. Assim, pode-se economizar gastos com energia, refrigeração e espaço físico. Atualmente, muitos data centers possuem servidores que utilizam apenas 10 ou 15% da capacidade total de processamento. Em outras palavras, 85 ou mais de 90% de toda a capacidade de cada servidor está em desuso. Entretanto, ainda que um servidor esteja com baixa utilização de recursos, ele continua ocupando espaço físico e desperdiçando energia elétrica, gerando os mesmos custos operacionais que os de uma máquina com 100% de utilização em tempo total. (GOLDEN & SCHEFFY, 2008, p. 3) A primeira e mais óbvia vantagem da virtualização é a redução de custos. Com apenas uma máquina que possua os recursos suficientes é possível montar uma estrutura com vários servidores virtuais, dispensando a aquisição de várias máquinas. Operacionalmente também há vantagens, pois a administração se torna centralizada e o tempo total de manutenção é inevitavelmente reduzido. (SIQUEIRA, 2007, p. 4) 16 O pensamento de GOLDEN & SCHEFFY (2008) assinala também estar de acordo com a proposição de SIQUEIRA (2007), quando cita que além de uma grande conquista na redução de custos em data centers, a virtualização oferece a oportunidade de reduzir largamente o custo com a administração dos sistemas, pois reduzirá a quantidade de equipamentos físicos que necessitam de administração. Várias tarefas associadas a administração dos servidores (como a instalação de sistemas operacionais, aplicação de patches e a realização de backups) continuarão existindo em ambientes virtualizados, mas poderão desaparecer nos servidores físicos. A virtualização proporciona novos recursos não convencionais, como a migração em tempo real, que permite que um sistema virtualizado mude seu host hospedeiro sem comprometer a produção, recurso imprescindível para ambientes críticos com requerimento de alta disponibilidade. 1.1 OBJETIVO A realização deste trabalho tem como objetivo principal explorar a virtualização de servidores como forma de obter melhor aproveitamento de hardware, comparando três softwares para tal finalidade: VMware Server, Xen Hypervisor e Linux KVM. 17 2 METODOLOGIA A construção do trabalho ocorreu através do levantamento bibliográfico a respeito da origem, histórico e tipos existentes de virtualização, e de vários softwares utilizados com essa finalidade. Destes softwares, foram escolhidos três para experimentação e avaliação de desempenho. Eles foram testados individualmente em cada modalidade. Assim, a construção do trabalho foi feita em duas etapas principais, descritas abaixo: 2.1 DETALHAMENTO TEÓRICO Foram identificados conceitos teóricos sobre o assunto, bem como o histórico da virtualização desde sua primeira utilização. Promoveu-se os levantamentos de informações técnicas sobre alguns tipos de virtualização, alguns softwares utilizados atualmente para virtualizar e o comparativo de suas vantagens e desvantagens. 2.2 AMBIENTE DE TESTES REALIZADOS Os experimentos foram realizados em um ambiente de produção, para o qual foram criadas máquinas virtuais utilizando os softwares VMware Server, Xen Hypervisor e Linux KVM, nas quais serão executados testes com diferentes tipos de cargas simulando o uso prático das mesmas. Mais detalhes sobre o ambiente, consulte o item 5.1.1 Descrição do Ambiente. 18 3 3.1 VIRTUALIZAÇÃO A ORIGEM DA VIRTUALIZAÇÃO O grande foco da virtualização, atualmente, é a chamada “virtualização de servidores”, ou a hospedagem de múltiplos e independentes sistemas operacionais em um único computador físico. Esta seção discorre sobre as raízes deste procedimento. 3.1.1 Visão Histórica da Virtualização O conceito de virtualização é antigo: Data os anos 60, com o uso mais precoce realizado no antigo IBM 7044 CTSS (Compatible Time-Share System – Sistema Compatível com Compartilhamento de Tempo); Segundo JONES (2006) este equipamento foi denominado "Projeto Atlas", oriundo de um estudo realizado em conjunto com o MIT (Massachusetts Institute of Technology – Instituto de Tecnologia do Massachusetts), a Ferranti Ltd. e a University of Manchester (universidade de Manchester), no qual foi utilizado um mainframe IBM 704 M44/44X com implementação de chamadas supervisoras. O sistema operacional deste mainframe (na época chamado "Supervisor") executava duas máquinas virtuais, uma para o sistema e uma para execução de programas, servindo de base para outros computadores que viriam após ele. Assim, com base nesta tecnologia, em 1966 foi lançado o mainframe IBM System/360 modelo 67, onde o hardware do equipamento era inteiramente acessado através de uma interface chamada VMM (Virtual Machine Monitor). O VMM funcionava diretamente no hardware básico do equipamento, permitindo então a execução de máquinas virtuais. Cada máquina virtual poderia ser uma nova instância do mesmo sistema operacional base em prévia execução. 19 Com essa funcionalidade, o antigo termo "Supervisor" foi então denominado "Hypervisor". Ou seja, um software que provê ambiente de virtualização para o sistema operacional rodando acima dele. No início da década de 70, a IBM anunciou a série de mainframes System/370, e em 1972 anunciou o sistema operacional VM/370, que permitia a criação de múltiplas máquinas virtuais para os mainframes desta série. O VM/370 foi atualizado em conjunto com toda a linha de mainframes da IBM, e hoje é conhecido como IBM z/VM, um dos sistemas operacionais para os mainframes da série System/Z, e mantém compatibilidade total com os aplicativos desenvolvidos ainda para o System/370. 3.1.2 A Virtualização na Plataforma X86 Segundo a VMware Inc. (2008), a virtualização perdeu forças nas décadas de 80/90 devido a criação de novas aplicações cliente/servidor e do declínio da plataforma mainframe. Devido ao alto custo inicial de um mainframe, empresas passaram a adquirir servidores de plataforma x86 de acordo com a demanda que precisavam. A larga ascensão da plataforma Linux nos servidores, assim como a adoção do sistema operacional Windows em desktops e posteriormente em alguns servidores nos anos 90, acabaram por consolidar a plataforma x86 como 1 alternativa viável para uso na virtualização. (VMware Inc. 2008) Os mainframes tinham grande capacidade de processamento, o que não existia no início da ascensão da plataforma x86. Os servidores x86 também não eram projetados com foco em virtualização, como os mainframes foram nas décadas passadas (e são até os dias atuais). Assim, de acordo com a IDC (International Data Corporation, [1999?] apud VMware Inc, 2008) em cada implementação de algum servidor x86 típico, o teto de uso das CPUs acaba entre 10 a 15% da capacidade total deste servidor. Isso acontecia porque, para cada servidor x86, geralmente 1 Conteúdo disponível no endereço http://www.vmware.com/overview/history.html 20 utilizava-se uma única determinada aplicação, visando garantir boa margem de risco contra problemas que possam comprometer a produção. Segundo GOLDEN & SCHEFFY (2008), a virtualização quebra o molde “uma aplicação, um servidor”, pois veio para suportar várias aplicações em um só sistema físico. Então, em 1999, a VMware Inc. introduziu a virtualização na plataforma x86 como uma maneira mais eficiente para utilizar o equipamento desta plataforma, aproveitando servidores x86 de propósito geral para prover uma estrutura compartilhada de hardware oferecendo isolamento completo, mobilidade e liberdade de escolha para sistemas operacionais em ambientes de servidores. 3.2 A IMPORTÂNCIA DA VIRTUALIZAÇÃO De uma perspectiva empresarial, existem muitas razões para utilizar a virtualização, principalmente na chamada “Consolidação de Servidores”. Ao virtualizar determinado número de sistemas sub-utilizados em um único servidor físico, você economizará espaço em estrutura física, espaço em disco, refrigeração, energia e centralizará o gerenciamento. Para determinar quais servidores podem ou não ser virtualizados, deve-se fazer uma avaliação de recursos utilizando-se de ferramentas como MRTG2 ou Cacti3 (ambos utilizam SNMP4) para monitorar a performance e o uso de recursos em cada servidor. Uma vez virtualizado, deve ser feito um acompanhamento, verificando se o novo servidor físico também ficará sobrecarregado, é possível migrar determinado servidor virtual para outro servidor físico com o mesmo em produção – sem necessidade de reboot. Assim, pode ser feito o balanceamento de carga entre vários servidores físicos hospedeiros sem afetar o funcionamento das máquinas virtuais. 2 MRTG: Multi-Router Traffic Grapher. Software utilizado para gerar gráficos de determinados equipamentos. 3 CACTI: Software utilizado para geração de gráfico e monitoramento de equipametnos. 4 SNMP: Simple Network Management Protocol, Protocolo Simples para Gerenciamento de Redes. Protocolo utilizado para obter informações de dispositivos que o suportem para utilização por outras aplicações. 21 A virtualização também é importante ao analisarmos a redundância em data centers, item importantíssimo 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), bastaria migrar 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. Exemplo, se todas as fontes de um servidor queimarem ao mesmo tempo, todas as máquinas virtuais dele desligarão. Ou, se acontecer alguma falha nos discos do servidor – ou na storage de armazenamento -, todas máquinas virtuais poderão ser corrompidas. 3.3 TIPOS DE VIRTUALIZAÇÃO A virtualização é um conceito amplo e existem vários usos e categorias para efetuá-la. As principais maneiras serão abordadas nesta seção. 3.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 overheads5, prejudicando o desempenho do sistema operacional guest6. Nesse método, todo o hardware de uma máquina virtual é criado via software no sistema hospedeiro para emular o hardware proposto, conforme exibido na Figura 1. Ou seja, até o processador da máquina virtual precisa ser criado via software, o que é feito geralmente feito em assembly. 5 6 Overhead: Diferença de performance gerando latência no sistema operacional guest Guest: Sistema operacional convidado. 22 Figura 1: Emulação de Hardware Segundo GOLDEN & SCHEFFY (2008), a complexidade da técnica fere o desempenho do guest. E, segundo JONES (2006), para emulações de altafidelidade, incluindo transições de informação entre registradores para memória cache e criação de pipelines na CPU, a performance pode ser, facilmente, 1000 vezes menor. Mas, a emulação de hardware também tem vantagens, Por exemplo, usando emulação de hardware, é possível rodar um sistema operacional guest sem qualquer modificação ou adaptação. 3.3.2 A Virtualização Completa A virtualização completa, também conhecida como "virtualização nativa", é outro método utilizado para virtualização. JONES (2006) cita que esse modelo usa uma máquina virtual através da mediação entre o sistema operacional hospedeiro (host) e o guest conforme mostrado na Figura 2. A palavra "mediação" é utilizada, pois o VMM faz a troca entre o sistema operacional virtualizado e o hardware do equipamento. 23 Figura 2: Virtualização Completa Segundo JONES (2006), 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. A grande vantagem da virtualização completa é que o sistema operacional pode rodar sem modificações. A desvantagem é que a máquina guest não pode rodar em host de arquitetura diferente. Segundo à VMware Inc. (2008), um grande obstáculo para a virtualização completa foi o fato de que, 17 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. Esses erros variavam desde informações no sistema operacional até a finalização inesperada da aplicação. Assim, essas 17 instruções foram apontados pela mesma empresa como um importante marco para a criação do primeiro ambiente de virtualização completa da plataforma x86, o VMware Workstation em sua primeira versão, lançado em 1999. 24 3.3.3 A 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, como exibido na Figura 3. GOLDEN & SCHEFFY (2008) cita que através da paravirtualização, o hypervisor é criado como uma camada abaixo do sistema operacional, que por sua vez, multiplexa o acesso dos guests ao hardware do equipamento. Assim, o próprio sistema operacional nativo (e, neste caso, de gerenciamento) é transformado em máquina virtual. Figura 3: Hypervisor Segundo SIQUEIRA (2007), este modelo como hypervisor obtém preferência para os ambientes virtualizados, pois, os hóspedes sabem perfeitamente 25 que rodam em um ambiente virtual. Para isso, os guests precisam ser corrigidos, o que só é possível de conseguir em sistemas de código aberto7. 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 deste 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. 3.3.4 Instruction Set Virtualization – Virtualização de Instruções Outro aspecto mais recente da virtualização é chamado Instruction Set Virtualization (Virtualização de Instruções). Neste modelo, segundo JONES (2006), 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 conforme exibido na Figura 4. Figura 4: Instruction Set Virtualization Um exemplo recente deste modelo é utilizado no processador Crusoe, da Transmeta. A arquitetura implementa tradução de binários com o nome Code 7 Código Aberto: Programas que possuem o código de fonte disponível para verificação e/ou estudo. 26 Morphing. O mesmo processo também é utilizado para 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”. 27 4 IMPLEMENTAÇÕES PARA VIRTUALIZAÇÃO Foram analisados os aspectos relevantes de vários softwares utilizados para virtualização. Os softwares descritos a seguir, foram escolhidos por serem largamente utilizados na virtualização para desktop (com usuários que desejam testar outros sistemas operacionais e simularem ambientes) e também para virtualização de servidores. Eles pertencem a distintas categorias, conforme está descrito a seguir: 4.1 QEMU O QEmu é dos virtualizadores mais complexos hoje existentes, mas que suporta várias maneiras de execução. Por padrão, é um emulador de hardware (e sofre com a baixa performance), mas também suporta emulação de processadores de outras arquiteturas, como ARM, MIPS, Sparc e PowerPC. Em modo de emulação de um computador x86, o QEMU disponibiliza os seguintes componentes de hardware: - Chipset Intel i440FX/PIIX3 - Placa de vídeo Cirrus 446 PCI - Teclado e mouse PS/2 - 2 PCI IDEs com suporte a CD-Rom - Disquete 3 ½ polegadas - Porta serial - Placa de som Creative SoundBlaster 16, ENSONIQ AudioPCI ES1370 Yamaha YM3812. - Suporte a USB. Ele também pode ser apenas um emulador de binários, e nesse modelo é chamado “User Mode Emulation”. Dessa forma, ele pode permitir que um binário 28 compilado para Linux em plataforma x86 rode em plataforma PowerPC, por exemplo. Outras funcionalidades são agregadas a ele com o módulo KQEMU, que garante maior aceleração ao host em execução quando este é um x86. 4.2 XEN O Xen é um hypervisor que trabalha tanto em modo de paravirtualização como em modo de virtualização completa. Está localizado abaixo do sistema operacional. Ele permite que os recursos de hardware de uma máquina sejam dinamicamente distribuídos entre as máquinas virtuais. E nele, as máquinas virtuais são denominadas Domains.8 O próprio sistema operacional nativo (que é utilizado para gerenciamento) é referenciado como um Domain. Ao contrário do VMware Workstation/Server, em modo de paravirtualização, ele não tenta virtualizar completamente as chamadas do sistema operacional guest para a camada de hardware. Assim, partes do sistema operacional guest são modificadas para trabalharem em interação direta com ele, ao invés do hardware nativo do equipamento, conforme descrito em Xen Interfaces’ Manual. Por isso, o Xen em modo paravirtualizado não disponibiliza pseudo9 hardware para a máquina virtual. Nada é exibido nos comandos lspci e lsusb; No comando dmesg, os dispositivos xenblk, xen_mem e xenfb apenas indicam que o kernel foi preparado para integração direta com o hypervisor. Quando utilizada a virtualização completa no Xen, o hardware encontrado na máquina virtual é criado através da modificação do software QEMU, e o hardware disponibilizado para o sistema operacional guest é o mesmo exibido por este, exceto o processador. 8 9 Domains: Nomenclatura adotada no Xen para denominar suas máquinas virtuais. Pseudo-Hardware: Hardware visualizado pela máquina virtual. 29 Em ambos os casos, o pseudo-hardware exportado para as máquinas virtuais (CPU, memória, rede e dispositivos de bloco) é gerado através de uma interface de controle utilizada para gerenciamento no Xen. Assim, para a abstração de hardware das máquinas virtuais (nos dois modos), fica em constante execução o daemon xend na máquina de gerenciamento. O acesso a essa interface de controle é restrito: Ela pode ser acessada por uma única máquina virtual privilegiada, conhecida como Domain 0 (Domínio 0). As operações como a criação de um novo domínio, desligamento e até migração de um domínio em execução para outro host físico, são disparadas diretamente pelo Domain 0 (máquina de gerenciamento) para o hypervisor através do comando xm, que executa a solicitação. O Domain 0 é criado automaticamente quando o sistema executa o boot10. Durante isso, o Xen agrega os privilégios de gerenciamento para este domínio, de modo que ele possa interagir diretamente com o hypervisor executando, também, as tais tarefas administrativas. 4.2.1 Sistemas Operacionais Suportados Segundo o Manual do Usuário do Xen a paravirtualização permite uma performance excelente durante o processo de virtualização, uma vez que a arquitetura x86 só recebeu aperfeiçoamentos (instruções específicas) para tal uso a partir de 2006. Então, para executar um domínio em modo de paravirtualização, é necessário que o sistema operacional seja portado para o Xen. Atualmente, os sistemas operacionais portados para o Xen são o Linux, NetBSD e o Solaris. Esses sistemas podem ser executados no Xen em modo paravirtualizado. Para utilizar virtualização completa no Xen, é necessário o suporte para virtualização via hardware. Esse suporte é garantido pelas instruções VT nos processadores Intel e SVM nos processadores da AMD. Existindo essas extensões, 10 Boot: Processo de inicialização do sistema. 30 é possível que o Xen crie Domains sem necessidade alguma de modificação do sistema operacional, podendo assim ser instalado qualquer outro guest. 4.2.2 Hardware requerido Atualmente, o Xen roda nos computadores da plataforma x86, sendo necessário algum processador P6 (de sexta geração), como um Pentium Pro, Celeron, Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon (Duron), Athlon 64 e Opteron. Multi-processamento é suportado, e existem portes em andamento para as plataformas Intel IA64 (processador Itanium) e Power (processadores PowerPC e POWER). O Xen, por padrão, suporta até de 4GB de memória RAM em modo de execução 32 bits. Como é uma quantidade pequena para os servidores nos dias atuais, existe o suporte para as extensões PAE11, da Intel, que permite que sistemas operacionais x86 de 32bits possam endereçar até 64GB de memória Ram. O Xen 3.0 também suporta as arquiteturas x86/64 bits. 4.3 LINUX KVM Segundo a Qumranet Inc, desenvolvedora do KVM, adicionando a capacidade de virtualização no kernel Linux, é possível aproveitar todo o código já escrito do para a criação de um ambiente de virtualização completo nativo. Integrado ao kernel, o KVM automaticamente suporta todos os dispositivos de hardware que funcionam com Linux. Com o VMM integrado ao kernel, e não abaixo dele (exemplo do Xen), cada máquina virtual é um processo normal no sistema operacional, acessada 11 PAE: Phisical Addressing Extensions. Extensões de Endereçamento Físico. 31 através do módulo KVM, módulo este que executará o papel de hypervisor, como exibido na figura 5. Figura 5: Linux KVM Um processo normal, rodando em Linux, possui dois modos de execução: Kernel Mode (modo kernel) e User Mode (modo usuário). Porém, por uma máquina virtual precisar de mais prioridade do que um processo normal, e por ser, também, bem mais complexa que um aplicativo comum, é adicionado um terceiro modo de execução: O guest mode (modo Convidado). Na terminologia KVM, os guests são máquinas virtuais comuns, e o privileged-guest é a máquina destinada ao gerenciamento, equivalente ao Dom0 do Xen. Uma das vantagens ao modelo com um hypervisor tradicional é que o KVM é um sistema enxuto e minimalista. Sua programação consiste em apenas alguns milhares de linhas de código. E, como módulo do kernel, é possível manipulá-lo em tempo de execução, como se fosse um dispositivo qualquer. Seus guests tem acesso a todo sistema de memória através de chamadas de hardware ou 32 mesmo de DMA12 (DMA: Direct Memmory Access - Acesso direto a memória). E, o acesso dos guests ao resto do hardware é ilimitado. Assim como o Xen, o KVM também utiliza o QEMU para promover a abstração de hardware na máquina virtual. Assim, exceto o processador, o hardware simulado é o mesmo do QEmu 4.3.1 Componentes do KVM Os dois componentes principais do KVM são explicados abaixo: - Um driver de dispositivos para gerenciamento do hardware virtualizador. Este driver trabalha utilizando o dispositivo /dev/kvm. - Um componente no user-space para emulação do hardware de um PC comum. Para isso, é utilizada uma versão modificada do QEMU. O QEmu modificado roda como processo no sistema, e cria uma camada de hardware para a máquina virtual, mapeando a memória física e as chamadas do kernel (especificamente do módulo KVM) para a execução do guest. O I/O das máquinas virtuais é diretamente derivado do QEMU, onde existe o suporte a todos os tipos de imagem de disco que o mesmo oferece. 4.3.2 Gerenciamento A partir do ponto que uma máquina virtual é simplesmente um processo, todas as ferramentas de gerenciamento de processo do sistema Linux são reaproveitadas. É possível pausar, desligar e restaurar uma máquina virtual diretamente com o comando kill (ou usando os atalhos de teclado, como CTRL + C e 12 DMA: Direct Memmory Access - Acesso direto a memória. Provê acesso a memória sem a necessidade de interrupção da CPU. 33 CTRL + Z), assim como é possível verificar a alocação de recursos com o comando top. 4.4 VMWARE SERVER Segundo o VMware Server Product Datasheet, o mesmo é instalado como aplicação no topo de um sistema operacional host, seja ele Windows ou Linux, e cria um hypervisor que traduz as chamadas do sistema guest para o host. Os recursos de um mesmo servidor físico são tratados e distribuídos uniformemente entre todas as máquinas virtuais. O pseudo-hardware virtual criado pelo VMware para abstração dos guests constituído dos seguintes ítens: - Placa de rede AMD PCnet32 Accelerated - Placa de som Ensoniq ES1371 WDM - Controladora SCSI a escolher (LSI Logic ou BusLogic) - Chipset Intel 430VX O VMware também instala drivers adicionais no sistema operacional guest e host para otimizar o acesso dos recursos nas máquinas físicas e virtuais. Na máquina guest, esses drivers são conhecido como VMware Tools, e conclui a instalação dos dispositivos faltantes (driver de vídeo, por exemplo). 4.4.1 Novos recursos no VMware Server 2 Com o VMware Server 2, novos recursos foram adicionados; Ele oferece suporte aos sistemas operacionais Windows Server 2008, Windows Vista, RedHat Enterprise Linux 5 e Ubuntu 8.04. Foi acrescentado o suporte aos sistemas operacionais 64 bits (caso o hardware seja 64 bits) para Linux de mesma arquitetura. 34 Foi incluída, também, uma nova interface web para gerenciamento das máquinas virtuais. E este serviço de virtualização, oferecido pelo VMware Server, também pode ser acessado através do software VMware Virtual Infrastructure Client, que unifica o acesso a plataformas de virtualização da mesma empresa. O VMware Server também oferece recursos para que as máquinas virtuais possam ter até 8GB de memória RAM, 10 interfaces de rede virtuais, USB 2.0 e duas opções de discos SCSI. 4.5 VMWARE ESX SERVER Segundo o VMware ESX 3.5 Product Datasheet, o VMware ESX Server foi criado para possibilitar a criação de um ambiente de TI virtual, dinâmico e otimizado; Ele é um sistema operacional, baseado no kernel Linux, que cria uma camada de abstração para acesso aos recursos do sistema (processadores, memórias, storages13 e dispositivos de rede) por máquinas virtuais. Por ser um sistema operacional completo, o VMware ESX é instalado diretamente no hardware (bare-metal14) do servidor, e traz consigo seu hypervisor (denominado VMkernel), que provê os recursos para execução das máquinas virtuais. Assim, ele precisa ser acessado através do software VMware Virtual Infrastructure Client para que possam ser criadas as configurações no mesmo servidor; 13 Storage: Equipamento que agrega determinadas quantidades de HDs de alta perfomance para serem acessados através do meio externo, muitas vezes através de múltiplos servidores; 14 Bare-metal: “Metal nu” (tradução livre); Instalado diretamente no equipamento; 35 4.5.1 VMware ESXi Com base no VMware ESX, a VMware lançou a versão gratuita do produto, o VMware ESXi Server; O ESXi não possui os recursos de VMotion (live migration) nem suporte da empresa, mas pode ser utilizado gratuitamente. Recursos adicionais, como o próprio VMotion, podem ser comprados adicionalmente e inseridos no VMware ESXi. O VMware ESXi também possui uma versão embbeded15 chamada VMware ESXi Small Footprint, de apenas 32MB, que está sendo integrada em várias placas mães de servidores de terceiros, fabricados por empresas parceiras da VMware. 4.6 VMWARE WORKSTATION Solução de virtualização para desktops da VMware, o mesmo é instalado como aplicação no topo de um sistema operacional host, seja ele Windows ou Linux, e cria um hypervisor que traduz as chamadas do sistema guest para o host, tal qual ao VMware Server. Porém, esta versão é utilizada para desenvolvimento e para testes de aplicativos locais, e não para uso em produção. 4.7 SUN XVM, O xVM (anteriormente chamado "Virtualbox") é um virtualizador completo, que utiliza partes do QEMU e do BOCHS como base para seu funcionamento (incrementando outros recursos), e é destinado a virtualização de sistemas operacionais na plataforma x86. Atualmente o Sun xVM roda nativamente nos sistemas operacionais Windows, Linux, Mac OS X e OpenSolaris. 15 Embedded: Embarcado; 36 O xVM também suporta tecnologias de virtualização via hardware, tanto da Intel (Intel VT) quanto da AMD (AMD-V). A utilização dessas tecnologias de virtualização é opcional para cada maquina virtual, podendo ser incluída/removida facilmente. Porém, ela é necessária nos seguintes casos: - Ao virtualizar um sistema operacional raro, como o IBM OS/2, que desde sua concepção (apesar de descontinuado desde 1996) utiliza instruções complexas da plataforma x86 que não são suportadas com virtualização diretamente em software. - Ao virtualizar um sistema operacional guest com suporte a 64 bits. 4.7.1 Suporte a guests O xVM pode executar todos os sistemas operacionais x86 como por exemplo DOS, Windows (todas as versões para x86) , FreeBSD, OpenBSD, Linux e Solaris. 4.8 QUADRO COMPARATIVO DAS FERRAMENTAS O quadro a seguir exibe uma comparação entre as ferramentas utilizadas na virtualização destacando as principais características de cada uma delas. 37 FERRAMENTA DESENVOLVEDOR QEmu XEN Hypervisor VMware Server VMware ESX/ESXi Server: Linux KVM 16 Fabrice Bellard Citrix Technologies VMware Inc. VMware Inc. RedHat17 PLATAFORMA SISTEMAS OPERACIONAL OPERACIONAIS SUPORTADOS -Windows -MS Dos -Linux e Unix x86, PowerPc (FreeBSD, NetBSD, Solaris) - etc. -Linux -NetBSD x86 -Solaris -Windows -Linux x86 -Windows -Unix TECNOLOGIAS UTLIZADAS Emulação de Hardware e Virtualização Completa Paravirtualização e Virtualização completa Virtualização Completa x86 -Linux -Windows -Unix Paravirtualização16 e Virtualização completa x86 -Linux, -Windows -Unix (FreeBSD e Solaris) Virtualização Completa18 A Paravirtualização no VMware ESX/ESXi se aplica apenas a guests com sistema Linux. RedHat: A RedHat adquiriu a Qumranet, desenvolvedora original do KVM em 4 de setembro de 2008. 18 Está sendo adicionado recurso de paravirtualização ao KVM. 17 38 5 EXPERIMENTOS E RESULTADOS 5.1.1 Descrição do Ambiente Foi instalado na máquina física o sistema operacional CentOS 5.2 Linux 64 bits, com kernel 2.6.18, e 3GB de memória Ram, sendo que desta memória, 1GB foi destinado inteiramente para a máquina virtual em execução. Devido a divergências de cada uma das tecnologias, cada máquina virtual foi executada individualmente. O processador utilizado foi um Intel Core 2 Duo E6420, sendo disponibilizados apenas um núcleo para as máquinas virtuais. Foi utilizada uma partição com 49GB em um HD de 160GB, destinando 8GB para cada máquina virtual. As tarefas designadas para cada servidor virtualizado, na criação de um ambiente de produção, foram máquinas virtuais configuradas adequadamente com as finalidades de testar o desempenho individual com softwares para benchmark, codificação de vídeo e testes com aplicativos simulando servidores reais. 5.1.2 Análise de Desempenho Cada máquina foi submetida a testes de processamento, de I/O e de conectividade, analisando a performance de cada uma como um todo. As tarefas submetidas foram: a) Codificação de vídeo utilizando o software Transcode; b) Análise de performance geral com o software LMBench. c) Transferência de arquivo com 4GB via NFS (cliente Linux) e SMB (cliente Windows); d) Inundação de requisições simultâneas para o servidor web utilizando o software AB (Apache Benchmark). 39 Todos os testes do tipo cliente/servidor realizados (transferência de arquivos e benchmark com AB) foram executados a partir de outro host na rede, utilizando o sistema operacional Microsoft Windows XP SP3 para transferência de arquivos via SMB, e o sistema operacional Fedora Linux versão 8 para transferência de arquivos por NFS. A inundação de requisições para os servidores Apache de cada máquina virtual, realizada pelo AB, também foi feita a partir deste host Linux. A rede entre as duas máquinas foi estabelecida através de um switch Encore 3NH908, operando a 100Mbps em modo full duplex. Os testes de performance individuais (como a codificação de vídeo e análise de desempenho com o LMBench) foram realizados com o sistema operacional host em IDLE19, evitando assim a influencia nos testes de cada uma delas. 5.2 LMBENCH A execução do LMBench versão 3 Alpha, nas máquinas virtuais testou os seguintes itens em cada uma delas: - Manipulação de Processos; - 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; - Context Switching – Troca de Contexto; - Latência de comunicação local; - Latência em sistema de arquivos (e manipulação destes) e memória virtual; - Largura de banda para comunicação local; - Latência de memória. 19 IDLE: Stand-By. Equipamento em espera sem aplicação específica em operação. 40 O detalhamento completo de cada um dos subtestes realizados pode ser obtido, em uma máquina com o sistema operacional Linux que possua o LMBench instalado, através do comando man lmbench, e não é o objetivo deste documento. O LMBench foi executado por aproximadamente 26 horas em cada máquina virtual até a obtenção do resultado. O resultado escrito devolvido pelo LMBench em cada host está anexo neste documento. 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. 5.2.1 Manipulação de Processos O Gráfico 1 abaixo representa o comparativo entre o tempo de manipulação de processos em cada máquina virtual. Quanto menor o resultado obtido, maior a eficiência do virtualizador. 41 Gráfico 1 - Comparativo de Processos 5.2.2 Operações com Números Inteiros O Gráfico 2 representa o comparativo de tempo para 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. 42 Gráfico 2 - Operações com Inteiros 5.2.3 Operações com Números fracionários (Floats) O Gráfico 3 representa o comparativo de tempo para 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. 43 Gráfico 3 - Operações com Floats 44 5.2.4 Operações com Números Dobrados (Double) O Gráfico 4 representa o comparativo de tempo para 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. Gráfico 4 - Operações com Doubles 45 5.2.5 Context Switching – Troca de Contexto O Gráfico 5 abaixo representa o comparativo de tempo para realização de troca de contexto em cada uma das operações descritas. Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. Gráfico 5 - Context Switching 46 5.2.6 Latência para Comunicação Local O Gráfico 6 representa o comparativo de latência para comunicação local. Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. Gráfico 6 - Latência de Comunicação Local 5.2.7 Latência de sistema de arquivos O Gráfico 7 representa o comparativo de sistema de arquivos. Quanto menor o resultado obtido, maior a eficiência em cada máquina virtual. 47 Gráfico 7 - Latência de Sistema de Arquivos 5.2.8 Largura de banda para comunicação local O Gráfico 8 representa o comparativo entre a largura de banda para comunicação local de cada máquina virtual. Quanto maior o resultado obtido, maior a eficiência em cada virtualizador. 48 Gráfico 8 - Largura de Banda para Comunicação Local 5.2.9 Latência de Memória O Gráfico 9 representa o comparativo entre a latência de memória de cada máquina virtual. Quanto menor o resultado obtido, maior a eficiência em cada virtualizador. 49 Gráfico 9 - Comparativo de Latência de memória 5.2.10 Média de Latência de Memória O Gráfico 10 representa o comparativo entre a latência média de memória de cada máquina virtual. Este dado é exibido imediatamente após a finalização da execução do LMBench. Quanto menor o resultado obtido, maior a eficiência em cada virtualizador. 50 Gráfico 10 - Média de Latência de Memória 5.3 TRANSFERÊNCIA DE ARQUIVOS Foi realizada cópia de uma imagem de DVD com 4GB através de um host de rede, utilizando NFS (cliente Linux) e posteriormente Samba (cliente Windows). 51 5.3.1 SMB Utilizando o Samba não houve diferença de performance entre os três virtualizadores. A imagem foi transferida do servidor virtualizado para o cliente Windows físico em 12 minutos. 5.3.2 NFS Ocorreu diferença de tempo ao realizar a transferência da mesma imagem de DVD a partir do servidor virtualizado para o cliente Linux físico. O Gráfico 11 demonstra o tempo que cada uma das ferramentas demorou para realizar a cópia do arquivo. O log da STDOUT20 durante a transferência do arquivo está anexo neste documento. 20 STDOUT: Fluxo padrão de saída de texto no sistema operacional Linux. Exibido na tela por padrão. 52 Gráfico 11 - Transferência de Arquivos em NFS 5.4 CODIFICAÇÃO DE VÍDEO Foi realizada a codificação de um vídeo com 55 minutos e 439MB, alterando a resolução para 800x362 e convertendo para o formato DivX utilizando o software transcode. Houve diferença de performance entre os virtualizadores, e o log da STDOUT está anexo neste documento. 53 Gráfico 12 - Codificação de vídeo 5.5 BENCHMARK DE SERVIDOR WEB O AB faz parte da suíte Apache Web Server, e é recomendado para realização de benchmarks de servidores web. Utilizando-o, foram realizadas duas sessões de testes no servidor Apache de cada máquina virtual: Ambas com o total de 200.000 requisições. Porém, na primeira sessão foram disparadas 100 54 solicitações simultâneas por rajada, e na segunda sessão, 200 solicitações simultâneas por rajada. 5.5.1 100 requisições por rajada Os Gráficos 13 e 14 comparam os tempos obtidos durante a realização da primeira sessão dos testes com o AB. Quanto menor a quantidade de tempo para atendimento de cada requisição, melhor a eficiência do virtualizador. Os logs com as STDOUTs das sessões dos três virtualizadores, que originaram os gráficos, estão anexos no documento. Na análise a seguir, o gráfico 13 e 15 (Connection Times) analisa os seguintes aspectos: - Connect: Tempo estimado gasto para começar a atender a conexão. - Proccessing: Tempo estimado gasto para realizar o processamento de cada uma das conexões. - Waiting: Tempo de espera gasto entre o último bit de requisição ser enviado do cliente, e o primeiro bit de resposta do servidor ser disparado para atendê-lo. - Total: Tempo total para atender a requisição. Gráfico 13 - Connection Times para 100 requisições por rajada Gráfico 14 - Porcentagem de Requisições por Tempo 57 5.5.2 200 requisições por rajada Os Gráficos 15 e 16 agora comparam os tempos obtidos durante a realização da segunda sessão dos testes com o AB. Quanto menor a quantidade de tempo para atendimento de cada requisição, melhor a eficiência do virtualizador. Os logs com as STDOUTs das sessões dos três virtualizadores, que originaram os gráficos, também estão anexos no documento. O detalhamento de cada modalidade foi citado no item 5.5.1. Gráfico 15 - Connection Times para 200 requisições por rajada Gráfico 16 - Porcentagem de Requisições por Tempo 60 6 CONSIDERAÇÕES FINAIS O VMware Server 2 obteve desempenho equilibrado nas modalidades testadas pelo LMBench, mas demonstrou excelente performance ao trabalhar com arquivos grandes em rede. O mesmo também possui a melhor interface de administração, que pode ser acessada através do browser e garante a mesma funcionalidade do VMware Virtual Infrastructure Client, aplicação desktop da VMware Inc. para gerenciamento unificado das plataformas da empresa. O KVM apresentou uma grande diferença entre os resultados obtidos para uso em produção e através da comparação de desempenho. Ele se sobressaiu em quase todas as modalidades do LMBench mas deixou a desejar no uso em produção, demorando mais tempo que os outros virtualizadores em quase todos os testes realizados, principalmente no que tange a comunicação em rede. Este problema aparenta ser causado pelo legado de rede contido no código do QEMU, utilizado para criação de dispositivos na máquina virtual. Porém, por ser o mais recente de todas as ferramentas testadas, mostrou estar no caminho certo para obter boa competência no futuro. A versão utilizada do Xen foi a 3.0.3, a última disponível no repositório da distribuição escolhida pelo grupo para realização dos testes. A última versão do Xen é a 3.3.0, que segundo o lançamento oficial, realizou grande avanço na parte de comunicação de rede e I/O. Os resultados alcançados poderiam ser diferentes caso a versão utilizada fosse a mais recente. Porém, esta versão ainda não foi considerada estável pelos desenvolvedores da distribuição adotada pelo grupo, e por isso não foi utilizada. Apesar disso, o Xen obteve os melhores resultados para uso em produção comparado as outras ferramentas. 61 6.1 DIFICULDADES ENCONTRADAS Os testes originalmente foram planejados utilizando configurações de hardware virtual diferentes das apresentadas neste documento: Cada máquina virtual, de acordo com o projeto original, funcionaria com dois processadores lógicos, onde os resultados apresentados seriam diferentes dos expostos neste documento. Porém, o KVM demonstrou não suportar corretamente as máquinas virtuais com mais de um processador, e com a máquina virtual uma vez configurada para utilizar dois processadores lógicos (SMP21), a mesma se tornava instável e imprópria para uso comum, uso em produção e para realização de qualquer outro teste. De modo que, quando a máquina virtual não carregava incorretamente o sistema operacional, o sistema guest travava devolvendo o chamado Kernel Panic após alguns minutos de uso banal. O Kernel Panic é a falha irrecuperável de um sistema operacional Unix ou Linux. Ela, geralmente, é apresentada em caso de falha de hardware (nesse caso, virtual) ou exceção não tratada pelo sistema operacional. Este comportamento foi relatado utilizando tanto a distribuição oficial adotada (CentOS Linux 5.2 com kernel 2.6.18) quanto em outra distribuição sem finalidades acadêmicas e inapropriada para testes realizados (Fedora 9 com kernel 2.6.25). Por esse motivo, os testes que já haviam sido realizados com dois processadores tanto no VMware Server quanto no Xen, foram descartados visando a imparcialidade da comparação entre todas as ferramentas. Após o downgrade de processador nas máquinas virtuais do Xen e do VMware Server, os testes foram refeitos e a máquina virtual executada pelo KVM funcionou perfeitamente, sem nenhuma das instabilidades antes apresentadas. 21 SMP: Symmetric Multi-Proccessing - Multi-processamento simétrico, procedimento que utiliza duas ou mais CPUs. 62 O planejamento inicial deste documento também previa a utilização do VMware ESXi Server como ferramenta da VMware Inc. em substituição ao VMware Server. Porém, o VMware ESXi Server tem como exigência uma lista de hardware compatível (HCL22) homologada pela empresa, e não foi possível a execução do VMware ESXi Server no equipamento utilizado nos testes, pelo fato do hardware pelo possuído pelo grupo ter pouquíssima similaridade com o exigido para o produto. Por este motivo, foi utilizado o VMware Server 2 representando as ferramentas da VMware Inc., e que se demonstrou bastante estável durante toda a bateria de testes que o grupo realizou. 6.2 LIMITAÇÕES Devido ao hardware utilizado para o ambiente de teste ser um computador montado da plataforma x86, só foram testadas ferramentas que funcionam na referida plataforma. Existem outras ferramentas de virtualização para uso específico, de propriedade de empresas como a Sun e a IBM. Como, por exemplo, os Conteiners e Zones, do sistema operacional Solaris, ou as LPars do sistema operacional AIX. 6.3 EXPERIMENTOS FUTUROS Fica para um próximo experimento a realização dos mesmos testes utilizando um servidor de marca compatível com a HCL dos produtos VMware ESX Server e VMware ESXi Server, da VMware Inc., que são mais apropriados que o VMware Server para a utilização em data-centers. 22 HCL:Hardware Compatible List – Lista de Hardware Compatível. 63 6.4 CONCLUSÕES Após abordada a origem da virtualização, foram realizados testes de desempenho em máquinas virtuais análogas em hardware e software, mantendo sua diferença apenas no virtualizador: Xen, VMware Server e Linux KVM. Os resultados obtidos denotaram, para a maioria das modalidades testadas, a proximidade de desempenho entre cada uma das ferramentas de virtualização utilizadas neste documento. Isso demonstra que, com o atual avanço no suporte à virtualização via hardware através das extensões Intel VT e AMD-V, e que são utilizadas pelos três virtualizadores, a proximidade entre as três ferramentas é bastante evidente. Ambas as ferramentas analisadas se sobressaíram em determinados testes, e o grupo elegeu ao Xen como melhor custo x benefício para virtualização de servidores dentre os analisados. Porém, cabe ao administrador de sistemas escolher a que mais lhe aprouver. 64 REFERÊNCIAS BIBLIOGRÁFICAS APR Soluções. Disponível em: http://www.compaq.com.br/pyme/solucoes/apr_solucoes_01.html. Acesso em: 21set.2008. ATLAS Computer (Manchester). Disponível em: http://en.wikipedia.org/wiki/Atlas_Computer_(Manchester). Acesso em: 30 set.2008. CAMBRIDGE, U.K. A State of Xen: Virtualization from PDAs to Super Computers. [2008]. Disponível em: <http://citrix.com/English/NE/news/news.asp?newsID=1680834>. Acesso em: 12 nov.2008. GOLDEN, Bernard; SCHEFFY, Clark. Virtualization for Dummies, Sun AMD Special Edition. Indianapolis: Wiley Publishing INC, 2008. GOMES, Lee. VMware Brings Freedom of Choice to Your Desktop. [1999]. Disponível em: <http://www.vmware.com/company/news/articles/wsj_1.html>. Acesso em: 14 out.2008. HADDON, Tom. Hardware emulation with QEMU. [2005]. Disponível em: <http://www.linux.com/feature/49225>. Acesso em: 06 out.2008. JONES, M. Tim. Virtual Linux. [2006]. Disponível em: <http://www128.ibm.com/developerworks/linux/library/l-linuxvirt/?ca=dgr-lnxw01Virtual-Linux>. Acesso em: 01ago.2008. KVM kernel-based Virtualization driver. Disponível em: http://docs.huihoo.com/kvm/kvm-white-paper.pdf. Acesso em: 21 set.2008. MOREIRA, Daniela. Virtualização: rode vários sistemas operacionais na mesma máquina. [2006]. Disponível em: <http://idgnow.uol.com.br/computacao_corporativa/2006/08/01/idgnoticia.2006-0731.7918579158/IDGNoticiaPrint_view/>. Acesso em: 21 set.2008. NSPLUGINWRAPPER. Disponível em: http://gwenole.beauchesne.info/en/projects/nspluginwrapper. Acesso em: 08 out.2008. OITO principais desafios da virtualização de data centers. Disponível em: http://idgnow.uol.com.br/computacao_corporativa/2007/04/27/idgnoticia.2007-0427.3291222006/IDGNoticiaPrint_view/. Acesso em: 21 out.2008. SINGH, Amit. Na Introduction to Virtualization. [2008]. Diponível em: <http://www.kernelthread.com/publications/virtualization/>. Acesso em: 21 set.2008. 65 SIQUEIRA, Luciano; BRENDEL, Jeans-Chistoph. Linux Pocket Pro – Virtualização. São Paulo: Linux New Media, 2007. SUN xVM Virtualbox. Disponível em: http://download.virtualbox.org/virtualbox/2.0.4/UserManual.pdf. Acesso em: 12 out.2008. VIRTUALIZAÇÃO de Servidores. Disponível em: http://www.intel.com/portugues/business/technologies/virtualization.htm. Acesso em: 21 set.2008. VIRTUALIZATION history. Disponível em: http://www.vmware.com/overview/history.html. Acesso em: 30 set.2008. VMWARE Datasheet ESXI. Disponível em: http://www.vmware.com/files/pdf/vmware_esxi_datasheet.pdf. Acesso em: 12 out.2008. VMWARE Server. Disponível em: http://www.vmware.com/br/pdf/server_datasheet_br.pdf. Acesso em: 12 out.2008. XEN Interface’s Manual. Disponível em: http://www.xen.org/files/xen_interface.pdf . Acesso em: 12 set.2008. XEN Manual do usuário. Disponível em: http://bits.xensource.com/Xen/docs/user.pdf . Acesso em: 12 set.2008. 66 ANEXO A: ARQUIVO DE CONFIGURAÇÃO PARA INSTALAÇÃO COM XEN Tal arquivo de configuração foi usado para instalação CentOS 5.2 no Xen. Primeiramente foram criado os HDs virtuais, com o comando: # dd if=/dev/zero # dd if=/dev/zero count=512 of=/var/xen/Domain1.img bsize=1GB count=8 of=/var/xen/Domain1swap.img bsize=1024 Depois, foi elaborado um arquivo de configuração para efetuar a instalação do CentOS como DomainU paravirtualizado do Xen. kernel = "/mnt/cdrom/xen/vmlinuz" ramdisk = "/mnt/cdrom/xen/initrd.img" memory = "1024" name = "Domain1" disk = ['file:/var/xen/Domain1.img,xvda,w', 'file:/var/xen/Domain1swap.img,xvdb,w'] root = '/dev/xvda1 ro' vif = [ 'bridge=xenbr0' ] vcpus = 2 vfb = [ 'type=vnc, vncunused=1' ] extra = 'video=xenfb' Então, esse arquivo foi salvo com o nome de “Domain1-inst.conf”. Após isso, ele foi inicializado com o comando: # xm create –c Domain1-inst.conf 67 ANEXO B: ARQUIVO DE CONFIGURAÇÃO APÓS A INSTALAÇÃO COM XEN Após instalação do sistema operacional, foi criado um novo arquivo de configuração para o host para que este fosse inicializado. memory = "1024" bootloader = "/usr/bin/pygrub" name = "Domain1" disk = ['file:/var/xen/Domain1.img,xvda,w', 'file:/var/xen/Domain1swap.img,xvdb,w'] root = '/dev/xvda1 ro' vif = [ 'bridge=xenbr0' ] vcpus = 1 vfb = [ 'type=vnc, vncunused=1' ] extra = 'video=xenfb' Então, esse arquivo foi salvo com o nome de “Domain1-post-inst.conf”. Após isso, ele foi startado com o comando: # xm create –c Domain1-post-inst.conf 68 ANEXO C: CRIAÇÃO DE MÁQUINA VIRTUAL COM KVM Procedimento adotado para instalação do CentOS na máquina virtual do Linux KVM. Primeiramente foi ativado o módulo responsável pela virtualização: # modprobe kvm # modprobe kvm_intel Após isso, foram criados os HDs virtuais, com os comandos: # dd if=/dev/zero # dd if=/dev/zero of=/var/kvm/hd01.img bsize=1GB count=8 of=/var/kvm/swap.img bsize=1024 count=512 Por último, foi executado o software com a linha: # QEmu-kvm -usb -hda /var/kvm/hd01.img /var/kvm/swap.img -hdb \ -boot c -net nic \ -net tap,script=/etc/QEmu-kvm-ifup -m 1024 -smp 1 69 ANEXO D: REDE BRIDGE DO QEMU-KVM Criado o script /etc/QEmu-kvm-ifup com a seguinte configuração: #!/bin/sh set -x switch=virbr0 if [ -n "$1" ];then /usr/sbin/tunctl -u `whoami` -t $1 /sbin/ip link set $1 up sleep 0.5s /usr/sbin/brctl addif $switch $1 exit 0 else echo "Error: no interface specified" exit 1 fi Essa configuração bastou para que a máquina virtual KVM adquirisse um IP e comunicação com a rede externa, a mesma da máquina física. 70 ANEXO E: SAÍDA DE EXECUÇÃO DO LBENCH NO KVM L M B E N C H 3 . 0 S U M M A R Y -----------------------------------(Alpha software, do not distribute) Basic system parameters -----------------------------------------------------------------------------Host OS Description Mhz tlb cache mem scal pages line par load bytes --------- ------------- ----------------------- ---- ----- ----- ------ ---KVM.timm. Linux 2.6.18x86_64-linux-gnu 2136 8 128 1.3000 1 Processor, Processes - times in microseconds - smaller is better -----------------------------------------------------------------------------Host OS Mhz null null open slct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---KVM.timm. Linux 2.6.18- 2136 0.38 0.44 1.41 2.36 4.15 0.51 9.58 1066 2960 7714 Basic integer operations - times in nanoseconds - smaller is better ------------------------------------------------------------------Host OS intgr intgr intgr intgr intgr bit add mul div mod --------- ------------- ------ ------ ------ ------ -----KVM.timm. Linux 2.6.18- 0.5000 0.0100 0.2300 16.5 10.3 Basic uint64 operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS int64 int64 int64 int64 int64 bit add mul div mod --------- ------------- ------ ------ ------ ------ -----KVM.timm. Linux 2.6.18Basic float operations - times in nanoseconds - smaller is better ----------------------------------------------------------------Host OS float float float float add mul div bogo --------- ------------- ------ ------ ------ -----KVM.timm. Linux 2.6.18- 1.4800 2.0000 10.2 8.4800 Basic double operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS double double double double add mul div bogo --------- ------------- ------ ------ ------ -----KVM.timm. Linux 2.6.18- 1.4700 2.4900 17.0 15.5 Context switching - times in microseconds - smaller is better ------------------------------------------------------------------------Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ------ ------ ------ ------ ------ ------- ------KVM.timm. Linux 2.6.18- 4.5600 5.0800 4.6800 5.9200 5.4000 5.71000 6.20000 71 *Local* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---KVM.timm. Linux 2.6.18- 4.560 11.1 19.1 23.1 29.6 28.1 34.2 83. *Remote* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------Host OS UDP RPC/ TCP RPC/ TCP UDP TCP conn --------- ------------- ----- ----- ----- ----- ---KVM.timm. Linux 2.6.18File & VM system latencies in microseconds - smaller is better ------------------------------------------------------------------------------Host OS 0K File 10K File Mmap Prot Page 100fd Create Delete Create Delete Latency Fault Fault selct --------- ------------- ------ ------ ------ ------ ------- ----- ------- ----KVM.timm. Linux 2.6.1810.8 5.7202 30.0 13.4 27.5K 3.798 12.1 2.258 *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------------------------Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----KVM.timm. Linux 2.6.18- 1789 911. 1210 2102.2 3353.8 718.3 723.1 2604 842.5 Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) -----------------------------------------------------------------------------Host OS Mhz L1 $ L2 $ Main mem Rand mem Guesses --------- ----------------------------------------KVM.timm. Linux 2.6.18- 2136 1.4740 6.8950 87.2 164.7 x86_64-linux-gnu: lat_mem_rand = 164.651 72 ANEXO F: SAÍDA DE EXECUÇÃO DO LBENCH NO XEN L M B E N C H 3 . 0 S U M M A R Y -----------------------------------(Alpha software, do not distribute) Basic system parameters -----------------------------------------------------------------------------Host OS Description Mhz tlb cache mem scal pages line par load bytes --------- ------------- ----------------------- ---- ----- ----- ------ ---Dom01.tim Linux 2.6.18x86_64-linux-gnu 2136 7 16 1.1700 1 Processor, Processes - times in microseconds - smaller is better -----------------------------------------------------------------------------Host OS Mhz null null open slct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---Dom01.tim Linux 2.6.18- 2136 1.35 1.49 3.44 5.79 4.82 1.27 3.15 755. 2624 5888 Basic integer operations - times in nanoseconds - smaller is better ------------------------------------------------------------------Host OS intgr intgr intgr intgr intgr bit add mul div mod --------- ------------- ------ ------ ------ ------ -----Dom01.tim Linux 2.6.18- 0.8300 0.0200 0.2700 18.7 9.4300 Basic uint64 operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS int64 int64 int64 int64 int64 bit add mul div mod --------- ------------- ------ ------ ------ ------ -----Dom01.tim Linux 2.6.18Basic float operations - times in nanoseconds - smaller is better ----------------------------------------------------------------Host OS float float float float add mul div bogo --------- ------------- ------ ------ ------ -----Dom01.tim Linux 2.6.18- 1.7100 2.1400 10.3 8.7500 Basic double operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS double double double double add mul div bogo --------- ------------- ------ ------ ------ -----Dom01.tim Linux 2.6.18- 1.4600 2.4300 16.6 15.6 Context switching - times in microseconds - smaller is better ------------------------------------------------------------------------Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ------ ------ ------ ------ ------ ------- ------Dom01.tim Linux 2.6.18- 1.5500 3.4200 7.2900 6.9500 8.0500 6.83000 3.46000 *Local* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------- 73 Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---Dom01.tim Linux 2.6.18- 1.550 15.6 37.2 21.6 29.8 25.2 35.9 82. *Remote* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------Host OS UDP RPC/ TCP RPC/ TCP UDP TCP conn --------- ------------- ----- ----- ----- ----- ---Dom01.tim Linux 2.6.18File & VM system latencies in microseconds - smaller is better ------------------------------------------------------------------------------Host OS 0K File 10K File Mmap Prot Page 100fd Create Delete Create Delete Latency Fault Fault selct --------- ------------- ------ ------ ------ ------ ------- ----- ------- ----Dom01.tim Linux 2.6.1815.0 12.0 61.8 27.9 13.3K 1.516 4.18400 4.054 *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------------------------Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----Dom01.tim Linux 2.6.18- 1789 919. 1421 1980.2 3440.3 693.4 699.1 3183 859.5 Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) -----------------------------------------------------------------------------Host OS Mhz L1 $ L2 $ Main mem Rand mem Guesses --------- ----------------------------------------Dom01.tim Linux 2.6.18- 2136 1.4120 6.7260 78.7 145.6 74 ANEXO G: SAÍDA DE EXECUÇÃO DO LBENCH NO VMWARE SERVER L M B E N C H 3 . 0 S U M M A R Y -----------------------------------(Alpha software, do not distribute) Basic system parameters -----------------------------------------------------------------------------Host OS Description Mhz tlb cache mem scal pages line par load bytes --------- ------------- ----------------------- ---- ----- ----- ------ ---VMWARE.ti Linux 2.6.18x86_64-linux-gnu 2136 8 128 1.8800 1 Processor, Processes - times in microseconds - smaller is better -----------------------------------------------------------------------------Host OS Mhz null null open slct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---VMWARE.ti Linux 2.6.18- 2136 0.41 0.57 2.54 3.80 4.74 0.63 2.07 1023 2337 5695 Basic integer operations - times in nanoseconds - smaller is better ------------------------------------------------------------------Host OS intgr intgr intgr intgr intgr bit add mul div mod --------- ------------- ------ ------ ------ ------ -----VMWARE.ti Linux 2.6.18- 0.5500 0.0100 0.2500 19.9 11.1 Basic uint64 operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS int64 int64 int64 int64 int64 bit add mul div mod --------- ------------- ------ ------ ------ ------ -----VMWARE.ti Linux 2.6.18Basic float operations - times in nanoseconds - smaller is better ----------------------------------------------------------------Host OS float float float float add mul div bogo --------- ------------- ------ ------ ------ -----VMWARE.ti Linux 2.6.18- 1.5800 2.1400 10.9 9.2000 Basic double operations - times in nanoseconds - smaller is better -----------------------------------------------------------------Host OS double double double double add mul div bogo --------- ------------- ------ ------ ------ -----VMWARE.ti Linux 2.6.18- 1.6400 2.7100 17.9 16.7 Context switching - times in microseconds - smaller is better ------------------------------------------------------------------------Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ------ ------ ------ ------ ------ ------- ------VMWARE.ti Linux 2.6.18- 4.4300 5.8100 4.8400 5.7900 5.4300 5.63000 5.57000 *Local* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------- 75 Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---VMWARE.ti Linux 2.6.18- 4.430 11.9 22.5 26.3 33.5 32.2 40.9 *Remote* Communication latencies in microseconds - smaller is better --------------------------------------------------------------------Host OS UDP RPC/ TCP RPC/ TCP UDP TCP conn --------- ------------- ----- ----- ----- ----- ---VMWARE.ti Linux 2.6.18File & VM system latencies in microseconds - smaller is better ------------------------------------------------------------------------------Host OS 0K File 10K File Mmap Prot Page 100fd Create Delete Create Delete Latency Fault Fault selct --------- ------------- ------ ------ ------ ------ ------- ----- ------- ----VMWARE.ti Linux 2.6.1829.6 10.8 96.2 370.1 27.4K 0.650 9.38380 2.439 *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------------------------Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----VMWARE.ti Linux 2.6.18- 1663 810. 1071 1968.2 3105.7 718.2 715.0 2909 899.1 Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) -----------------------------------------------------------------------------Host OS Mhz L1 $ L2 $ Main mem Rand mem Guesses --------- ----------------------------------------VMWARE.ti Linux 2.6.18- 2136 1.5300 7.0730 87.9 188.8 76 ANEXO H: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO KVM [root@KVM ~]# date ; transcode -y xvid -j 64,0 -Z 800x368 -i /Compartilhada/michael\ w\ smith\ and\ hillsong\ 2007.avi -o /Compartilhada/final.avi ; date Seg Nov 17 01:55:14 BRST 2008 transcode v1.0.5 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg, 20042008 Transcode Team [transcode] (probe) suggested AV correction -D 0 (0 ms) | AV 0 ms | 0 ms [transcode] auto-probing source /Compartilhada/michael w smith and hillsong 2007.avi (ok) [transcode] V: import format | DivX RIFF data, AVI (V=ffmpeg|A=mp3) [transcode] V: import frame | 480x320 1.50:1 [transcode] V: clip frame (<-) | 480x192 [transcode] V: zoom | 800x368 1.30:1 (Lanczos3) [transcode] V: bits/pixel | 0.245 [transcode] V: decoding fps,frc | 25.000,3 [transcode] V: Y'CbCr | YV12/I420 [transcode] A: import format | 0x55 MPEG layer-3 [22050,16,2] 96 kbps [transcode] A: export format | 0x55 MPEG layer-3 [22050,16,2] 128 kbps [transcode] V: encoding fps,frc | 25.000,3 [transcode] A: bytes per frame | 3528 (3528.000000) [transcode] A: adjustment | 0@1000 [transcode] V: IA32/AMD64 accel | sse2 (sse2 sse mmxext mmx asm C) [transcode] V: IA32/AMD64 accel | using sse2 memcpy [transcode] V: video buffer | 10 @ 800x368 [import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG [import_ffmpeg.so] v0.1.13 (2007-10-09) (video) ffmpeg: MS MPEG4v13/MPEG4/MJPEG [export_xvid4.so] v0.0.6 (2007-08-11) (video) XviD 1.0.x series (aka API 4.0) | (audio) MPEG/AC3/PCM [import_mp3.so] MP3->PCM [import_mp3.so] tcextract -a 0 -i "/Compartilhada/michael w smith and hillsong 2007.avi" -x mp3 -d 0 | tcdecode -x mp3 -d 0 -z 12000 [export_xvid4.so] Neither './xvid4.cfg' nor '~/.transcode/xvid4.cfg' [export_xvid4.so] found. Default settings will be used instead. Audio: using new version Audio: using lame-3.98.2 [encoder.c] Delaying audio (0) [mpeg4 @ 0x2aaaace36410]overreading 9 bitss, EMT: 0:00:30, ( 0| 0| 9) [mpeg4 @ 0x2aaaace36410]concealing 600 DC, 600 AC, 600 MV errors encoding frames [000000-082479], 21.85 fps, EMT: 0:54:59, ( 0| 0| 4) clean up | frame threads | unload modules | cancel signal | internal threads | done [transcode] encoded 82480 frames (0 dropped, 0 cloned), clip length 3299.20 s Seg Nov 17 02:58:09 BRST 2008 You have new mail in /var/spool/mail/root [root@KVM ~]# 77 ANEXO I: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO XEN [root@Dom01 Compartilhada]# date ; transcode -y xvid -j 64,0 -Z 800x368 -i /Compartilhada/michael\ w\ smith\ and\ hillsong\ 2007.avi -o /Compartilhada/final.avi ; date Dom Nov 16 23:47:40 BRST 2008 transcode v1.0.5 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg, 20042008 Transcode Team [transcode] (probe) suggested AV correction -D 0 (0 ms) | AV 0 ms | 0 ms [transcode] auto-probing source /Compartilhada/michael w smith and hillsong 2007.avi (ok) [transcode] V: import format | DivX RIFF data, AVI (V=ffmpeg|A=mp3) [transcode] V: import frame | 480x320 1.50:1 [transcode] V: clip frame (<-) | 480x192 [transcode] V: zoom | 800x368 1.30:1 (Lanczos3) [transcode] V: bits/pixel | 0.245 [transcode] V: decoding fps,frc | 25.000,3 [transcode] V: Y'CbCr | YV12/I420 [transcode] A: import format | 0x55 MPEG layer-3 [22050,16,2] 96 kbps [transcode] A: export format | 0x55 MPEG layer-3 [22050,16,2] 128 kbps [transcode] V: encoding fps,frc | 25.000,3 [transcode] A: bytes per frame | 3528 (3528.000000) [transcode] A: adjustment | 0@1000 [transcode] V: IA32/AMD64 accel | sse2 (sse2 sse mmxext mmx asm C) [transcode] V: IA32/AMD64 accel | using sse2 memcpy [transcode] V: video buffer | 10 @ 800x368 [import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG [import_ffmpeg.so] v0.1.13 (2007-10-09) (video) ffmpeg: MS MPEG4v13/MPEG4/MJPEG [export_xvid4.so] v0.0.6 (2007-08-11) (video) XviD 1.0.x series (aka API 4.0) | (audio) MPEG/AC3/PCM [import_mp3.so] MP3->PCM [import_mp3.so] tcextract -a 0 -i "/Compartilhada/michael w smith and hillsong 2007.avi" -x mp3 -d 0 | tcdecode -x mp3 -d 0 -z 12000 [export_xvid4.so] Neither './xvid4.cfg' nor '~/.transcode/xvid4.cfg' [export_xvid4.so] found. Default settings will be used instead. Audio: using new version Audio: using lame-3.98.2 [encoder.c] Delaying audio (0) [mpeg4 @ 0x37f3fcd410]overreading 9 bitsfps, EMT: 0:00:30, ( 0| 0| 9) [mpeg4 @ 0x37f3fcd410]concealing 600 DC, 600 AC, 600 MV errors encoding frames [000000-082479], 23.61 fps, EMT: 0:54:59, ( 0| 0| 4) clean up | frame threads | unload modules | cancel signal | internal threads | done [transcode] encoded 82480 frames (0 dropped, 0 cloned), clip length 3299.20 s Seg Nov 17 00:45:54 BRST 2008 [root@Dom01 Compartilhada]# 78 ANEXO J: SAÍDA DE EXECUÇÃO DA CODIFICAÇÃO DE VIDEO NO VMWARE [root@VMWARE timm]# date ; transcode -y xvid -j 64,0 -Z 800x368 -i /home/timm/michael\ w\ smith\ and\ hillsong\ 2007.avi -o /home/timm/final.avi ; date Dom Nov 16 12:27:09 BRST 2008 transcode v1.0.5 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg, 20042008 Transcode Team [transcode] (probe) suggested AV correction -D 0 (0 ms) | AV 0 ms | 0 ms [transcode] auto-probing source /home/timm/michael w smith and hillsong 2007.avi (ok) [transcode] V: import format | DivX RIFF data, AVI (V=ffmpeg|A=mp3) [transcode] V: import frame | 480x320 1.50:1 [transcode] V: clip frame (<-) | 480x192 [transcode] V: zoom | 800x368 1.30:1 (Lanczos3) [transcode] V: bits/pixel | 0.245 [transcode] V: decoding fps,frc | 25.000,3 [transcode] V: Y'CbCr | YV12/I420 [transcode] A: import format | 0x55 MPEG layer-3 [22050,16,2] 96 kbps [transcode] A: export format | 0x55 MPEG layer-3 [22050,16,2] 128 kbps [transcode] V: encoding fps,frc | 25.000,3 [transcode] A: bytes per frame | 3528 (3528.000000) [transcode] A: adjustment | 0@1000 [transcode] V: IA32/AMD64 accel | sse2 (sse2 sse mmxext mmx asm C) [transcode] V: IA32/AMD64 accel | using sse2 memcpy [transcode] V: video buffer | 10 @ 800x368 [import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG [import_ffmpeg.so] v0.1.13 (2007-10-09) (video) ffmpeg: MS MPEG4v13/MPEG4/MJPEG [export_xvid4.so] v0.0.6 (2007-08-11) (video) XviD 1.0.x series (aka API 4.0) | (audio) MPEG/AC3/PCM [import_mp3.so] MP3->PCM [import_mp3.so] tcextract -a 0 -i "/home/timm/michael w smith and hillsong 2007.avi" -x mp3 -d 0 | tcdecode -x mp3 -d 0 -z 12000 [export_xvid4.so] Neither './xvid4.cfg' nor '~/.transcode/xvid4.cfg' [export_xvid4.so] found. Default settings will be used instead. Audio: using new version Audio: using lame-3.98.2 [encoder.c] Delaying audio (0) [mpeg4 @ 0x36979cd410]overreading 9 bitsfps, EMT: 0:00:30, ( 0| 0| 9) [mpeg4 @ 0x36979cd410]concealing 600 DC, 600 AC, 600 MV errors encoding frames [000000-082479], 21.42 fps, EMT: 0:54:59, ( 0| 0| 4) clean up | frame threads | unload modules | cancel signal | internal threads | done [transcode] encoded 82480 frames (0 dropped, 0 cloned), clip length 3299.20 s Dom Nov 16 13:31:20 BRST 2008 [root@VMWARE timm]# 79 ANEXO K: SAÍDA DE EXECUÇÃO DO AB NO KVM [root@lima ~]# ab -n 200000 -c 100 http://192.168.1.3/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.3 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.3 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 100 253.772404 seconds 200000 0 0 200001 1048005240 bytes 1008605043 bytes 788.11 [#/sec] (mean) 126.886 [ms] (mean) 1.269 [ms] (mean, across all concurrent requests) 4032.91 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 35.5 0 3001 Processing: 15 125 138.6 123 20016 Waiting: 14 124 110.3 122 20014 Total: 18 126 143.0 123 20016 Percentage of the requests served within a certain time (ms) 50% 123 66% 124 75% 125 80% 126 90% 131 95% 135 98% 160 99% 167 100% 20016 (longest request) [root@lima ~]# ab -n 200000 -c 200 http://192.168.1.3/ 80 This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.3 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.3 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 200 255.577280 seconds 200000 0 0 200000 1048000000 bytes 1008600000 bytes 782.54 [#/sec] (mean) 255.577 [ms] (mean) 1.278 [ms] (mean, across all concurrent requests) 4004.41 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 78 1085.1 0 93000 Processing: 1 175 366.8 161 63855 Waiting: 1 173 337.3 160 63854 Total: 22 253 1173.1 161 105917 Percentage of the requests served within a certain time (ms) 50% 161 66% 163 75% 168 80% 171 90% 176 95% 200 98% 406 99% 3162 100% 105917 (longest request) [root@lima ~]# 81 ANEXO L: SAÍDA DE EXECUÇÃO DO AB NO XEN [root@lima ~]# ab -n 200000 -c 100 http://192.168.1.9/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.9 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.9 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 100 140.361135 seconds 200000 0 0 200000 1048000000 bytes 1008600000 bytes 1424.90 [#/sec] (mean) 70.181 [ms] (mean) 0.702 [ms] (mean, across all concurrent requests) 7291.46 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median Connect: 0 40 303.1 13 Processing: 1 29 31.1 23 Waiting: 0 28 31.0 23 Total: 2 69 304.9 39 max 9017 697 696 9042 Percentage of the requests served within a certain time (ms) 50% 39 66% 45 75% 48 80% 51 90% 59 95% 69 98% 244 99% 290 100% 9042 (longest request) [root@lima ~]# ab -n 200000 -c 200 http://192.168.1.9/ 82 This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.9 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.9 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 200 132.882846 seconds 200000 0 0 200000 1048000000 bytes 1008600000 bytes 1505.09 [#/sec] (mean) 132.883 [ms] (mean) 0.664 [ms] (mean, across all concurrent requests) 7701.80 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 74 396.6 34 21007 Processing: 1 56 61.5 46 3325 Waiting: 0 55 61.3 45 3324 Total: 5 131 400.8 84 21054 Percentage of the requests served within a certain time (ms) 50% 84 66% 91 75% 95 80% 98 90% 110 95% 129 98% 330 99% 3069 100% 21054 (longest request) [root@lima ~]# 83 ANEXO M: SAÍDA DE EXECUÇÃO DO AB NO VMWARE SERVER [root@lima ~]# ab -n 200000 -c 100 http://192.168.1.7/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.7 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.7 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 100 181.613557 seconds 200000 0 0 200000 1048000000 bytes 1008600000 bytes 1101.24 [#/sec] (mean) 90.807 [ms] (mean) 0.908 [ms] (mean, across all concurrent requests) 5635.25 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 32.2 0 3001 Processing: 47 89 173.9 87 31726 Waiting: 47 88 162.3 86 31723 Total: 50 90 176.8 87 31726 Percentage of the requests served within a certain time (ms) 50% 87 66% 89 75% 91 80% 93 90% 100 95% 112 98% 129 99% 141 100% 31726 (longest request) [root@lima ~]# 84 [root@lima ~]# ab -n 200000 -c 200 http://192.168.1.7/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.7 (be patient) Completed 20000 requests Completed 40000 requests Completed 60000 requests Completed 80000 requests Completed 100000 requests Completed 120000 requests Completed 140000 requests Completed 160000 requests Completed 180000 requests Finished 200000 requests Server Software: Server Hostname: Server Port: Apache/2.2.3 192.168.1.7 80 Document Path: Document Length: / 5043 bytes Concurrency Level: Time taken for tests: Complete requests: Failed requests: Write errors: Non-2xx responses: Total transferred: HTML transferred: Requests per second: Time per request: Time per request: Transfer rate: 200 181.529958 seconds 200000 0 0 200000 1048000000 bytes 1008600000 bytes 1101.75 [#/sec] (mean) 181.530 [ms] (mean) 0.908 [ms] (mean, across all concurrent requests) 5637.84 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 54 593.1 0 45001 Processing: 1 125 258.8 117 37988 Waiting: 0 124 237.1 116 33269 Total: 35 179 648.9 117 45176 Percentage of the requests served within a certain time (ms) 50% 117 66% 120 75% 123 80% 125 90% 136 95% 158 98% 321 99% 3115 100% 45176 (longest request) [root@lima ~]# 85 ANEXO N: SAÍDA DE EXECUÇÃO DAS CÓPIAS DE ARQUIVO POR NFS Saída texto do procedimento de transferência de arquivos a partir de um host Linux na rede via NFS no VMware. [root@lima [root@lima Qui Nov 20 Qui Nov 20 [root@lima home]# mount -t nfs 192.168.1.7:/Compartilhada /mnt/nfs home]# date ; cp /home/centos.iso /mnt/nfs/ ; date 01:14:50 BRST 2008 01:21:47 BRST 2008 home]# Saída texto do procedimento de transferência de arquivos a partir de um host Linux na rede via NFS no Xen. [root@lima [root@lima Qua Nov 19 Qua Nov 19 [root@lima home]# mount -t nfs 192.168.1.9:/Compartilhada /mnt/nfs home]# date ; cp /home/centos.iso /mnt/nfs/ ; date 00:40:23 BRST 2008 00:49:37 BRST 2008 home]# Saída texto do procedimento de transferência de arquivos a partir de um host Linux na rede via NFS no KVM. [root@lima [root@lima Sex Nov 21 Sex Nov 21 [root@lima home]# mount -t nfs 192.168.1.3:/Compartilhada /mnt/nfs home]# date; cp /home/centos.iso /mnt/nfs/ ; date 21:29:03 BRST 2008 21:38:33 BRST 2008 home]#