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.
Download

Alocaç ˜ao Autonômica de Recursos para Máquinas Virtuais