Alocação Autonômica de Recursos para Máquinas Virtuais Baseada em Caracterı́sticas de Processamento Paulo A. L. Rego1 , Emanuel F. Coutinho1,2 , Flávio R. C. Sousa1 , José N. de Souza1 1 Mestrado e Doutorado em Ciência da Computação (MDCC) 2 Instituto UFC Virtual Universidade Federal do Ceará (UFC) – Fortaleza, CE – Brasil {pauloalr,emanuelcoutinho}@lia.ufc.br,{sousa,neuman}@ufc.br Abstract. Cloud computing provides on-demand services with payment based on usage. However, this requires major technological changes, especially in autonomous management because the cloud environment presents a great number and variety of resources. A key aspect is the allocation of resources for virtual machines in a heterogeneous infrastructure. This paper presents an approach to autonomic resource allocation for virtual machines using processing units on the FairCPU architecture. An experiment was conducted and the preliminary results show that the proposed solution keeps the response time expected for the application. Resumo. Computação em nuvem fornece serviços sob demanda com pagamento baseado no uso. Entretanto, esta requer grandes mudanças tecnológicas, principalmente no gerenciamento autonômico, pois o ambiente em nuvem apresenta uma grande quantidade e variedade de recursos. Um aspecto fundamental é a alocação de recursos para as máquinas virtuais em uma infraestrutura heterogênea. Este trabalho apresenta uma abordagem autonômica para a alocação de recursos para máquinas virtuais utilizando unidades de processamento sobre a arquitetura FairCPU. Um experimento foi realizado e os resultados preliminares mostram que a solução proposta conseguiu manter o tempo de resposta esperado para a aplicação. 1. Introdução Computação em nuvem fornece serviços sob demanda com pagamento baseado no uso. Por outro lado, os ambientes de nuvem são inerentemente grandes, complexos, heterogêneos e altamente dinâmicos e os provedores devem tratar questões de qualidade do serviço, disponibilidade e eficiência energética [Sousa et al. 2010]. A computação autonômica é inspirada em sistemas biológicos para lidar com desafios de complexidade, dinamismo e heterogeneidade [Kephart and Chess 2003], caracterı́sticas presentes nos ambientes de computação em nuvem e, assim, fornecer uma abordagem promissora neste contexto [Sousa et al. 2011]. Um problema importante é desenvolver técnicas para consolidar e alocar dinamicamente recursos para máquinas virtuais (MVs) em infraestruturas em nuvem [Rego et al. 2011b]. Em geral, supõe-se que o desempenho das MVs é similar, independente da máquina fı́sica (MF) onde ela está alocada. Esta é uma suposição razoável para um ambiente homogêneo, onde as MFs são idênticas e as MVs estão executando o mesmo sistema operacional e aplicativos. No entanto, em um ambiente de computação em nuvem, espera-se compartilhar um conjunto composto por recursos heterogêneos, onde as MFs podem variar em termos de capacidades de seus recursos e afinidades de dados. Por outro lado, os provedores devem fornecer qualidade de serviço (QoS) para as aplicações executadas nestes ambientes. Para tanto, faz-se necessário desenvolver soluções autonômicas para tratar este problema. Este trabalho apresenta uma abordagem autonômica para a alocação de recursos para MVs, construı́do sobre a arquitetura FairCPU [Rego et al. 2011b], cujo objetivo é padronizar a representação do poder de processamento das MFs e MVs. A abordagem proposta monitora as MVs e interage com a arquitetura FairCPU para aplicar limites na utilização da CPU com o objetivo de garantir o desempenho das aplicações. A Seção 2 destaca a abordagem proposta. A Seção 3 apresenta um experimento utilizando a solução apresentada e, na última seção, as conclusões deste trabalho são apresentadas. 2. Abordagem Proposta A abordagem proposta estende a arquitetura FairCPU, adicionando o conceito de sensor e um loop de controle [Kephart and Chess 2003]. Com isso, pode-se monitorar o ambiente e alocação de recursos de CPU de forma a garantir a QoS das aplicações. A arquitetura FairCPU utiliza unidades de processamento (UPs) para alocar recursos de CPU para as MVs, de forma a garantir que o desempenho da MV seja homogêneo, independente da MF subjacente. A UP é a abstração utilizada para representar o poder de processamento de MFs e MVs, e deve ter um valor constante e conhecido (ex. GFLOPS, MIPS, ou outra métrica) e substitui o valor bruto da quantidade de CPUs, que é o parâmetro utilizado na maioria dos middleware e atuais provedores de IaaS no momento de alocar as MVs. Com a UP representando o poder de processamento efetivo de MVs e MFs é possı́vel abstrair as diferenças entre as MFs da infraestrutura e prover uma alocação homogênea, mesmo estando em um ambiente heterogêneo. Mais detalhes sobre a definição e utilização das UPs podem ser encontrados em [Rego et al. 2011a] e [Rego et al. 2011b]. A relação entre a abordagem proposta e a arquitetura FairCPU pode ser vista na Figura 1. A abordagem é dividida em duas partes: Agente e Controlador Autonômico. O Agente é um componente presente em cada MV e é responsável por coletar e monitorar as aplicações em execução nas MVs. O Controlador Autonômico gerencia e analisa as informações coletadas pelo Agente. Figura 1. Visão Geral da Arquitetura Proposta. Tabela 1. Relação entre a percentagem da CPU e o poder computacional da MF. 1 UP 2 UPs 3 UPs 4 UPs 5 UPs 6 UPs 7 UPs 8 UPs 9 UPs Ci5 41% 81% 118% 162% 218% 260% 305% 354% 400% Essas informações são armazenadas e utilizadas para definir a adição ou remoção de recursos de CPU de forma a garantir a QoS. O Controlador Autonômico utiliza a interface disponı́vel no módulo Cliente da FairCPU, no qual está disponı́vel a função para alterar dinamicamente a quantidade de UPs alocadas para as MVs. O Gerenciador de Limites é o módulo responsável pela aplicação dos limites de uso de CPU. Quando uma nova MV é instanciada, o Daemon invoca o Gerenciador de Limites, que configura quanto da CPU a MV pode utilizar baseado na quantidade de UPs requisitadas para ela. Com isso, as MVs solicitadas pelo usuário terão poder computacional equivalente, independentemente da MF subjacente. 3. Resultados Preliminares Para avaliar a solução proposta, foi realizado um experimento em uma nuvem privada com OpenNebula e FairCPU. Duas MVs foram alocadas em duas MFs diferentes (Intel Corei5-750 e 4 GB de memória), conectadas à mesma rede Gigabit. A primeira MV (2 VCPUs, 4 UPs e 2 GB de memória) foi utilizada para executar o benchmark httperf, enquanto a segunda MV (4 VCPUs, 4 UPs e 2 GB de memória) estava executando o servidor Web Apache e uma aplicação PHP, além do Agente, que monitorava o tempo de resposta através do arquivo de log do Apache. O experimento consistiu na execução do httperf com diferentes cargas de trabalho. As taxas de requisições por segundo utilizadas foram: 25, 50, 75, 100 e 25, nesta sequência, cada uma delas durante um minuto, para simular uma carga de trabalho dinâmica. O Agente monitorava o tempo de resposta do Apache e deveria aumentar a quantidade de UPs alocada para a MV quando o tempo de resposta fosse maior do que 2s, e diminuir a quantidade de UPs quando o tempo de resposta fosse menor do que 200ms. Cada UP equivale a um poder de processamento de 3 GFLOPS e a relação entre a percentagem de CPU da máquina Ci5 e a quantidade de UPs pode ser vista na Tabela 1. A Figura 2 apresenta a variação do tempo de resposta, sem e com a abordagem autonômica em execução. Sem a abordagem autonômica, a MV foi executada com poder de processamento igual a 4 UPs todo o tempo, isso causou um bom tempo de resposta nos dois minutos iniciais e no minuto final, pois, com a carga de trabalho baixa (25 e 50), o tempo de resposta ficou controlado. Entretanto, quando a taxa de requisições por segundo era 75 e 100 (entre os segundos 120 e 240), os recursos de CPU alocados para a MV não eram suficientes, a quantidade de requisições sobrecarregou o servidor Web, o que causou um tempo de resposta muito alto, como pode ser visto no gráfico. Com a abordagem proposta em execução, o tempo de resposta se manteve abaixo de 2s durante quase todo o experimento, pois a quantidade de UPs alocada para a MV é alterada dinamicamente pelo sistema para evitar violação do SLA. Diferente do caso anterior, os dois minutos iniciais e o minuto final possuem mais destaque no gráfico, pois o sistema diminuiu a quantidade de UPs alocada para a MV, o que apesar de ter aumentado o tempo de resposta, o manteve abaixo de 2s. Para manter o SLA durante a carga de trabalho mais alta, o poder de processamento precisou ser aumentado até 9 UPs. Figura 2. Variação do tempo de resposta com e sem o sistema autonômico. A variação da quantidade de UPs da MV com o tempo é apresentada no eixo X. 4. Conclusão Este trabalho apresentou uma abordagem autonômica para a alocação de recursos para MVs baseada em caracterı́sticas de processamento. Esta abordagem foi implementada sobre a arquitetura FairCPU. Avaliou-se a abordagem proposta utilizando uma aplicação Web e uma carga de trabalho dinâmica. Pela análise dos resultados obtidos, foi possı́vel verificar que a abordagem permite alterar dinamicamente e de forma transparente a quantidade de recursos de CPU alocada para a MV, e assim ajustar os recursos às diferentes demandas, a fim de garantir a QoS. Como a penalidade pela violação do SLA é proporcional a QoS fornecida [Sousa et al. 2012], esta possui um impacto significativo no lucro dos provedores e, assim, deve ser evitada. Como trabalhos futuros pretende-se estudar novas estratégias de autonomia para melhorar a alteração da quantidade de UPs alocadas para as MVs, adequando o poder computacional às mudanças na carga de trabalho. Além disso, pretende-se aplicar técnicas de aprendizagem de máquina para criar técnicas preditivas da carga de trabalho. Referências Kephart, J. O. and Chess, D. M. (2003). The vision of autonomic computing. Computer, 36(1):41–50. Rego, P. A. L., Coutinho, E. F., and de Souza, J. N. (2011a). Proposta de workflow para alocação de máquinas virtuais utilizando caracterı́sticas de processamento. In IX Workshop em Clouds, Grids e Aplicações. Rego, P. A. L., Coutinho, E. F., Gomes, D. G., and de Souza, J. N. (2011b). Architecture for allocation of virtual machines using processing features. In 1st International Workshop on Cloud Computing and Scientific Applications (CCSA). Sousa, F. R. C., Moreira, L. O., Macêdo, J. A. F., and Machado, J. C. (2010). Gerenciamento de Dados em Nuvem: Conceitos, Sistemas e Desafios, pages 101–130. In: Simpósio Brasileiro de Banco de Dados, SBBD 2010, 1. ed. SBC, Belo Horizonte. Sousa, F. R. C., Moreira, L. O., and Machado, J. C. (2011). Computação em nuvem autônoma: Oportunidades e desafios. In Proceedings of the I Workshop on Autonomic Distributed Systems, WoSiDA 2011, collocated with SBRC 2011, Campo Grande, MS. Sousa, F. R. C., Moreira, L. O., Santos, G. A. C., and Machado, J. C. (2012). Quality of service for database in the cloud. In International Conference on Cloud Computing and Services Science, CLOSER 2012.