Avaliação do Desempenho da Migração de Máquinas Virtuais em Xen Guilherme Piegas Koslovski , Márcio Parise Boufleur , Andrea Schwertner Charão 1 Laboratório de Sistemas de Computação (LSC) Curso de Ciência da Computação – Universidade Federal de Santa Maria (UFSM) Campus UFSM – 97105-900 – Santa Maria – RS – Brasil {guilherm, boufleur, andrea}@inf.ufsm.br Resumo. No contexto do gerenciamento de sistemas computacionais, ferramentas de virtualização são vantajosas pois possibilitam executar múltiplos sistemas operacionais em um mesmo computador hospedeiro, permitindo satisfazer diferentes necessidades de usuários e aplicações. Além disso, a independência de hardware obtida com a virtualização permite que uma máquina virtual em execução migre entre computadores, sem interromper os processos em execução. A fim de explorar avanços recentes nesta área, este trabalho apresenta uma avaliação do mecanismo de migração do monitor de máquinas virtuais Xen. Para isso, analisou-se seu desempenho em diferentes casos tı́picos de sistemas em rede, buscando reproduzir, em outra plataforma de software e hardware, os resultados divulgados pelos desenvolvedores da ferramenta. Nossos resultados confirmam a eficiência do mecanismo de migração de máquinas virtuais de Xen, oferecendo subsı́dios para administradores de sistemas interessados em explorar esta ferramenta de virtualização. 1. Introdução A virtualização de recursos computacionais aparece como um tema recorrente em diversas áreas da computação. No contexto do gerenciamento de sistemas, a abstração oferecida pela utilização de máquinas virtuais permite que diversos sistemas operacionais executem sobre uma mesma arquitetura, compartilhando seus recursos de hardware e software de forma transparente. Em um ambiente virtualizado, as tarefas de gerenciamento, escalonamento e alocação dos recursos disponı́veis são executadas por um Monitor de Máquinas Virtuais (MMV). Este monitor oferece uma interface individual para cada máquina virtual, permitindo desta forma uma execução transparente e independente de uma arquitetura especı́fica. Dentre os monitores de máquinas virtuais existentes, o sistema Xen [Barham et al. 2003] destaca-se por permitir a migração de máquina virtual entre computadores, sem a necessidade de interromper seus sistemas e processos em execução. A migração de máquinas virtuais é uma ferramenta vantajosa para administradores de sistemas, permitindo por exemplo a transferência de servidores de um computador para outro, para fins de manutenção ou distribuição de carga. O mecanismo de migração foi incorporado a Xen recentemente [Clark et al. 2005] e, portanto, existem poucos resultados experimentais sobre o desempenho de tal recurso. Desta forma, este trabalho tem por objetivo contribuir para a avaliação do desempenho da migração de máquinas virtuais em Xen, analisando aspectos relevantes como tempo total de migração e tempo de indisponibilidade dos serviços em execução sobre uma máquina virtual migrante. Em particular, buscou-se reproduzir os resultados publicados pelos autores do mecanismo de migração [Clark et al. 2005], utilizando-se outra plataforma de hardware e software. Esta abordagem de repetição de experimentos foi utilizada em outro trabalho de avaliação de Xen [Clark et al. 2004] e justifica-se como uma importante forma de transferência de tecnologia e de ampliação de resultados experimentais. Este artigo está organizado da seguinte forma: na seção 2 descreve-se o funcionamento e as principais caracterı́sticas de um monitor de máquinas virtuais, enquanto na seção 3 apresenta-se o mecanismo de migração de máquinas virtuais em Xen. A principal contribuição deste artigo encontra-se na seção 4, onde apresenta-se a metodologia e os resultados da avaliação de desempenho realizada sobre a migração das máquinas virtuais em Xen. Na seção 5 apresenta-se as considerações finais sobre o trabalho desenvolvido. 2. Monitores de máquinas virtuais A virtualização de recursos computacionais é um conceito que foi bastante difundido no inı́cio da década de 70 [Goldberg 1974], permitindo o compartilhamento e melhor aproveitamento do poder computacional dos mainframes existentes. Atualmente, fatores como aumento de desempenho dos computadores e utilização de ambientes interligados impulsionaram novamente a utilização de ambientes virtualizados. Virtualizar um recurso significa oferecer uma camada entre os programas e os recursos virtualizados, permitindo que cada programa acesse de forma individual a arquitetura existente, sem a necessidade do conhecimento dos demais processos em execução. A tarefa de gerenciar estas máquinas virtuais é feita por um sistema MMV, responsável pelo escalonamento e alocação dos recursos. Um MMV oferece, aos sistemas em execução sobre suas máquinas virtuais, um ambiente eficiente e semelhante à arquitetura original do computador, permitindo a execução normal do software virtualizado. A eficiência de um monitor é medida de acordo com a intrusividade necessária para interceptar e manipular as instruções virtualizadas. Os monitores de máquinas virtuais podem ser classificados de acordo com a sua implementação, sendo divididos em monitores de virtualização hospedada ou virtualização clássica [Smith and Nair 2005]. Na primeira implementação, o monitor é instalado sobre um sistema operacional hospedeiro, e suas máquinas virtuais são executadas sobre essa camada de software oferecida. Um exemplo desse modelo de implementação é utilizado pelo sistema VMware [Sugerman et al. 2001], que permite a virtualização e execução de sistemas operacionais através da utilização de tradução binária em tempo de execução. Na implementação de virtualização clássica, o monitor de máquinas virtuais é instalado diretamente sobre o hardware, permitindo que a execução do monitor ocorra com o nı́vel mais alto de privilégio. Desta forma todas as interrupções e chamadas de sistema solicitadas pelos sistemas operacionais virtualizados devem ser interceptadas e manipuladas pelo monitor. Este modelo de implementação apresenta uma limitação perante aos computadores atuais que utilizam arquiteturas semelhantes à Intel IA-32, onde um sistema operacional, embora virtualizado, ainda consegue executar instruções em um nı́vel de maior privilégio. Xen [Barham et al. 2003] é um monitor de máquinas virtuais implementado com virtualização clássica e que utiliza a técnica de paravirtualização para contornar o problema arquitetural e oferecer a virtualização de recursos em arquiteturas da famı́lia Intel x86. Utilizando paravirtualização, a interface virtual apresentada para o sistema operacional difere em alguns pontos da interface real do computador, sendo necessária a adaptação de parte do sistema operacional virtualizado. Um exemplo de adaptação é a alteração do nı́vel de privilégio de execução, já que o sistema operacional virtualizado não executará mais nenhuma comunicação direta com o hardware. Utilizando a técnica de paravirtualização, o monitor Xen consegue efetuar uma virtualização completa, não necessitando a alteração dos programas em execução sobre o sistema operacional virtualizado. 3. Migração em Xen A virtualização oferecida pelo monitor Xen resulta em uma máquina virtual independente do hardware existente, que pode ser encapsulada e migrada entre computadores interligados em rede. Assim, a migração em Xen permite migrar uma instância completa de um sistema operacional em execução, incluindo todos os seus processos internos. Esta abordagem de migração é uma ferramenta útil na administração de sistemas formados por vários computadores potencialmente heterogêneos. Em particular, este recurso permite lidar facilmente com falhas e interrupções para manutenção do sistema, pois serviços crı́ticos podem ser dinamicamente migrados de um servidor para outro. Além disso, a migração pode auxiliar na distribuição dinâmica de carga entre computadores, permitindo um melhor aproveitamento dos recursos computacionais disponı́veis. Durante o processo de migração de um sistema operacional é necessário que o monitor de máquinas virtuais em execução no computador de destino ofereça no mı́nimo o mesmo conjunto de recursos oferecidos no computador de origem. As seções seguintes descrevem os pontos crı́ticos que influenciam no resultado deste processo, descrevendo as soluções adotadas pelo mecanismo de migração implementado em Xen. 3.1. Migração de arquivos e conexões de rede A implementação atual de Xen não utiliza nenhum método de migração de sistemas de arquivos, supondo que os sistemas operacionais virtualizados empreguem um sistema de compartilhamento de arquivos e diretórios, tal como NFS (Network File System). Esta solução permite que os sistemas operacionais utilizem um sistema de arquivos remoto, que conseqüentemente não será migrado junto com a máquina virtual. Durante a migração, as conexões de rede do sistema operacional devem permanecer ativas, sem a interrupção dos serviços disponibilizados. Para migrar o sistema operacional e manter o mesmo endereço de rede de suas interfaces virtuais a implementação do monitor Xen optou por enviar um ARP reply [Plummer 1982] informando que o endereço IP correspondente foi movido para uma nova localização. Neste modelo de implementação, não é necessário a execução de nenhuma etapa de redirecionamento de pacotes, diminuindo a dependência residual entre a máquina virtual migrada e o computador de destino. 3.2. Migração da memória principal A transferência dos dados localizados na memória principal é uma etapa importante no processo de migração, pois permite que o sistema operacional migrado mantenha ativo todos os seus processos, sem a necessidade de reinı́cio após a migração. Fatores como tempo total de migração e tempo de indisponibilidade do serviço devem ser considerados pelo monitor de máquinas virtuais na escolha da forma de implementação. Em uma migração efetuada unicamente por demanda, onde os dados são transferidos de acordo com a sua utilização, o tempo total de migração resultante é muito alto, interferindo diretamente no desempenho dos serviços. Já a migração através de uma etapa única de stop-and-copy, onde a execução da máquina virtual é interrompida enquanto os dados são transferidos, resulta em um tempo de indisponibilidade elevado. Buscando efetuar uma migração eficiente, Xen implementa o processo de live migration [Clark et al. 2005], onde uma máquina virtual é migrada em iterações e combina os dois modelos de implementação citados. Na fase inicial de pré-cópia é utilizada a reserva de largura de banda, para permitir que os serviços oferecidos pelo sistema operacional continuem em execução. Nas fases seguintes, a transferência dos dados é realizada por demanda, onde somente os dados alterados durante o perı́odo da última iteração são transferidos. Durante as iterações, o algoritmo de live migration busca identificar uma condição onde a suspensão da máquina virtual e a ativação no computador de destino resulte em um tempo de indisponibilidade mı́nimo. Caso não seja possı́vel identificar uma condição satisfatória para a migração e o número de iterações ocorridas seja alto, a execução da máquina virtual é suspensa para que a migração seja concluı́da, evitando que o tempo total de migração resultante seja elevado. 3.3. Etapas do processo de live migration O monitor Xen optou por implementar o processo de live migration em etapas para permitir a execução de uma migração segura que possua um mı́nimo de tolerância a falhas. De acordo com as decisões de implementação referentes à migração dos recursos locais e memória principal, a migração em um ambiente virtualizado com o monitor Xen ocorre em cinco etapas principais. As duas etapas iniciais do processo consistem em uma comunicação entre os computadores de origem e destino, onde ocorre uma verificação e reserva de recursos. Em um primeiro momento, o monitor em execução no computador de origem verifica se os recursos utilizados pela máquina virtual estão disponı́veis no computador de destino para posteriormente efetuar a solicitação da reserva de uma máquina virtual no computador de destino com o mesmo conjunto de recursos necessários. Na terceira etapa, o processo de transferência dos dados alocados na memória principal é inicializado, ocorrendo através de iterações. Na primeira iteração a memória utilizada pela máquina virtual no computador de origem é totalmente transferida, sem interromper a execução do sistema operacional. Nas iterações posteriores, apenas o conjunto alterado de dados é transferido. Nas duas etapas finais ocorre a conclusão da migração e ativação da máquina virtual no computador de destino. O recebimento da imagem do sistema operacional é confirmado, ocasionando a suspensão da execução no computador de origem e o inı́cio da execução na nova máquina virtual. Por fim, o ARP reply é enviado informando que o endereço IP foi movido. A migração do sistema operacional efetuada pelo mecanismo de live migration oferece um mı́nimo de tolerância a falhas pois em todas as etapas existe no mı́nimo uma imagem completa do sistema operacional. Caso a execução de alguma etapa seja abortada, os dados já transferidos são descartados a execução normal da máquina virtual original é retomada. 4. Avaliação de desempenho Os testes apresentados nesta seção tiveram como objetivo avaliar o desempenho da migração dos sistemas operacionais em um ambiente virtualizado utilizando o monitor Xen. Nesta avaliação, as principais métricas consideradas foram o tempo de indisponibilidade de um serviço, o tempo de resposta de um servidor virtualizado e tempo total de migração. Todas estas métricas influenciam diretamente na qualidade dos serviços em execução. No artigo que originalmente apresenta o mecanismo de migração em Xen [Clark et al. 2005], estas métricas foram obtidas em uma plataforma de experimentação composta por duas máquinas servidoras Dell PE-2650 interligadas por uma rede Gigabit Ethernet. Cada máquina possuı́a dois processadores Xeon a 2 GHz e 2 GB de memória principal. No presente trabalho, buscou-se verificar se resultados compatı́veis poderiam ser obtidos em uma plataforma de hardware com configurações mais modestas. Desta forma, foi criado um ambiente de experimentação utilizando cinco estações Compaq Pentium 4, com memória de 512MB, cache de 512KB, utilizando o sistema operacional Ubuntu Linux versão 5.10. Das cinco estações, três foram usadas para hospedar as máquinas virtuais, uma como servidor de arquivos NFS e outra utilizada para métricas externas, quando necessário. Para interligar os computadores, utilizou-se uma rede FastEthernet a 100Mb/s. Neste ambiente de experimentação realizou-se uma seqüência de experimentos visando avaliar aspectos crı́ticos na migração de máquinas virtuais. Primeiramente, efetuouse uma avaliação sobre a taxa de transferência de um arquivo entre uma máquina virtual e o servidor de arquivos. Em seguida, analisou-se o tempo de migração de um servidor Web sobrecarregado. Também avaliou-se a migração de um servidor de jogos, que constitui um caso em que a baixa latência e o tempo de indisponibilidade são aspectos importantes. 4.1. Taxa de transferência de um arquivo Na figura 1, apresenta-se a taxa de transferência de um arquivo de 512MB sendo transferido de uma máquina virtual enquanto a mesma é migrada para outro hospedeiro. Um processo servidor aceitava requisições em uma porta na máquina virtual, enquanto um processo cliente executando em outra estação requisitava um arquivo e anotava a quantidade de dados transferidos, bem como o intervalo de tempo, durante a transação. A curva possui formato semelhante àquela obtida pelos autores do mecanismo de migração de Xen [Clark et al. 2005]. Em nosso experimento, no entanto, observamos um tempo de negação de resposta um pouco maior, devido ao fato de utilizarmos uma rede a 100Mb/s. Figura 1. Taxa de transferência de um arquivo de 512MB A taxa de transferência se mantém constante até o inı́cio da migração, que se dá no vigésimo segundo, onde ocorre uma queda na taxa, devido à reserva de banda utilizada pelo mecanismo de live migration para efetuar a migração. Do quinquagésimo segundo ao quinquagésimo sétimo segundo, podemos perceber uma queda brusca na taxa de transferência, revelando-se o tempo de parada da máquina virtual e realocação da mesma no hospedeiro de destino. 4.2. Migração de um servidor Web Este cenário de teste representa a migração de um servidor de páginas Web em execução sobre um sistema operacional virtualizado. O benchmark http load [Laboratories ] foi utilizado para simular a conexão de 700 usuários em um servidor executando Apache Web Server 2.0. A execução de um servidor Web exige um grande número de acessos a memória em um reduzido intervalo de tempo, além de uma quantidade considerável de requisições através da rede. Estes fatores influenciam diretamente no tempo de migração de uma máquina virtual. A figura 2 apresenta as vinte e oito iterações necessárias para concluir a migração do servidor, apresentando a taxa de transferência (em verde) e a taxa em que os dados são alterados na memória principal (em azul) ao longo de cada iteração. Na iteração inicial é transferido um volume grande de informações, representando a fase de pré-cópia utilizada pelo live migration. Durante este processo é possı́vel observar a interferência da reserva de banda sobre o desempenho final do servidor de páginas. Após o estágio inicial da migração, o tempo de cada iteração diminui, para auxiliar na identificação do conjunto mı́nimo de dados alterados durante o tempo decorrido. A identificação do conjunto mı́nimo de dados é um importante fator para o mecanismo de live migration, já que o tempo total de indisponibilidade é diretamente proporcional ao tempo necessário para transferir esse volume de dados. Embora o algoritmo de migração utilize várias iterações para buscar este conjunto mı́nimo, o número de acessos a memória permaneceu alto, chegando a um momento em que a suspensão do serviço e a conclusão da migração é apropriada, considerando o tempo total de migração como um fator determinante. Figura 2. Migração de um servidor Web 4.3. Migração de um servidor de baixa latência A avaliação da latência durante a migração de uma máquina virtual é importante nos casos em que uma demora no tempo de resposta pode comprometer a computação final. Para avaliarmos o comportamento da latência em uma máquina virtual, utilizamos um servidor de jogos Quake 2. Nesta avaliação, utilizou-se uma máquina virtual com 128MB de memória servindo 3 jogadores simultâneos. Foram utilizados pacotes de 64KB a uma taxa de amostragem de 1 pacote por 100ms. Figura 3. Tempo de resposta do servidor Conforme a figura 3, a realocação da máquina virtual se inicia no décimo segundo, ocasionando uma pequena queda no tempo de resposta dos pacotes. O tempo de resposta aumenta nos 15 segundos seguintes, devido à reserva de banda. No vigésimo terceiro segundo, há uma nova queda na taxa de transferência, referente à parada da máquina no servidor de origem e a seguinte inicialização no servidor de destino. Ao final da avaliação, não verificou-se a perda de nenhum pacote e do ponto de vista dos jogadores, não foi percebida alteração nenhuma na jogabilidade. 5. Conclusão Este trabalho investigou algumas métricas relevantes referentes à migração de sistemas operacionais em execução sobre um ambiente virtualizado. Com o conjunto de testes realizados, pôde-se confirmar que a sobrecarga imposta para efetuar a migração e manter os serviços ativos é baixa, mesmo em uma plataforma com recursos modestos. De fato, métricas como a reserva de banda e o tempo necessário para desativação da máquina virtual e ativação no computador de destino mostraram não comprometer o desempenho final dos serviços, o que torna viável a adoção do mecanismo de migração de Xen na plataforma considerada. Desta forma, confirma-se a utilização de migração de máquinas virtuais em ambientes virtualizados como uma importante ferramenta para administradores de sistemas, auxiliando na manutenção e distribuição de carga entre os computadores do ambiente. Referências Barham, P., Dragovic, B., Fraser, K., Hand, S., Harris, T., Ho, A., Neugebauer, R., Pratt, I., and Warfield, A. (2003). Xen and the art of virtualization. In Proc. 19th ACM Symposium on Operating Systems Principles (SOSP ’03), pages 164–177, Bolton Landing, USA. ACM. Clark, B., Deshane, T., Dow, E., Evanchik, S., Finlayson, M., Herne, J., and Matthews, J. N. (2004). Xen and the art of repeated research. In USENIX Annual Technical Conference, FREENIX Track, pages 135–144. USENIX. Clark, C., Fraser, K., Hand, S., Hansen, J. G., Jul, E., Limpach, C., Pratt, I., and Warfield, A. (2005). Live migration of virtual machines. In Proc. 2nd Symposium on Networked Systems Design and Implementation (NSDI ’05), Boston, USA. Usenix. Goldberg, R. (1974). Survey of virtual machine research. IEEE Computer, 7(6):34–45. Laboratories, A. http load - multiprocessing http test client. Plummer, D. C. (1982). Ethernet Address Resolution Protocol: Or converting network protocol addresses to 48 bit Ethernet address for transmission on Ethernet hardware. RFC 826 (Standard). Smith, J. E. and Nair, R. (2005). The architecture of virtual machines. IEEE Computer, 38(5):32–38. Sugerman, J., Venkitachalam, G., and Lim, B.-H. (2001). Virtualizing I/O devices on VMware workstation’s hosted virtual machine monitor. In Proc. 2001 Usenix Annual Technical Conference, pages 1–14. Usenix Assoc.