Para construir um sistema autônomo, ou seja, auto-adaptativo, o arcabouço de gerenciamento de capacidade propõe um modo de operação do sistema baseado em controle cíclico, mostrado na Figura 4.1. O seu núcleo é o gerenciador de capacidade, que é chamado periodicamente para alocar a capacidade disponível em cada camada entre as classes de aplicações hospedadas, objetivando maximizar o objetivo de negócio do provedor. O intervalo entre duas intervenções do gerenciador de capacidade é chamado de intervalo de controle.
Ao final de cada intervalo de controle, o gerenciador de capacidade utiliza os parâ- metros do sistema e os requisitos do SLA de cada classe de aplicação (seta 1 na Figura 4.1), juntamente com estimativas da carga de trabalho esperada para cada classe no próximo intervalo (seta 3), para calcular a nova configuração da infra-estrutura de hospedagem para o próximo intervalo (seta 4).
O módulo previsor de carga é responsável por monitorar a carga de trabalho para todas as classes (seta 2). Ele contém armazenamento local (ex.: um banco de dados)
Figura 4.1: Gerenciamento Autônomo de Capacidade (perspectiva de 1 camada)
para registrar a carga passada, utilizando esses dados para caracterizar seu comporta- mento. Um dos vários métodos existentes de previsão de carga [2], tais como médias deslizantes (moving averages), deve ser utilizado para estimar a carga das classes no fu- turo próximo, baseado no comportamento observado no passado. A saída do previsor de carga é a taxa de chegada de requisições por segundo esperada para cada classe i durante o próximo intervalo, denotada λi, e utilizada pelo gerenciador de capacidade (seta 3) no cálculo da configuração da infra-estrutura para o próximo intervalo. O projeto e avaliação desse módulo está fora do escopo desta dissertação.
A nova configuração da infra-estrutura (seta 4) é composta de dois componen- tes. O primeiro e mais importante é a fração da capacidade disponível que deve ser alocada a cada máquina virtual e, conseqüentemente, sua classe i associada. Essa fra- ção é denotada como fi. O segundo parâmetro é a taxa de requisições que deve ser aceita para processamento na infra-estrutura, denotada por λac
i . Caso a capacidade
alocada à classe i seja insuficiente para processar todas as requisições previstas, λac i
será menor que λi para evitar sobrecarga ou violações dos requisitos do SLA. A nova configuração do sistema é composta de fi e λac
i . O primeiro é enviado ao mecanismo
de virtualização, que atualiza o mapeamento dos recursos físicos, e o segundo ao módulo de controle de admissão, que rejeita requisições excessivas.
A duração do intervalo de controle pode ser fixa ou variável, dependendo das características do sistema e da estabilidade das cargas de trabalho das classes hospe- dadas. Se as cargas apresentam grande variabilidade, o gerenciador de capacidade pode ser executado em intervalos regulares com duração na qual a carga não mude significativamente. Por outro lado, se as cargas variam pouco, o gerenciador de capa-
Figura 4.2: Componentes do Gerenciador de Capacidade
cidade pode ser executado sempre que a carga das aplicações tiver mudado signifi- cativamente desde a sua última execução, o que resulta em um intervalo de controle com duração variável. De qualquer forma, sua duração mínima é limitada pelo tempo que o gerenciador de capacidade leva para reconfigurar o sistema.
Os parâmetros de sistema são definidos na Seção 4.1.1 e os requisitos do SLA são definidos juntos do modelo de negócio na Seção 4.2. O gerenciador de capaci- dade, mostrado na Figura 4.2, é composto dos modelo de negócio e desempenho, que são combinados em um modelo de otimização responsável por encontrar a melhor configuração da infra-estrutura.
4.1.1 Parâmetros do Sistema
Os parâmetros do sistema são a utilização máxima planejada para cada máquina virtual, definida como νi, e a média do tempo de serviço das requisições de cada
classe, definida como d∗
i.
A utilização de cada máquina virtual, denotada ρi, é definida como a razão entre
a capacidade de processamento necessária para atender as requisições admitidas e a capacidade de processamento total da máquina virtual [54]. A utilização máxima pla- nejada para cada máquina virtual, νi, limita o valor de ρi. Esse parâmetro é adicionado para evitar que a qualidade do serviço prestado ao cliente seja degradado devido a sobrecarga nos recursos. Essa limitação é necessária e garante estabilidade às má- quinas virtuais, evitando que a média e a variância do tempo de resposta aumentem indefinidamente quando ρi se aproxima de 1.
O tempo de serviço médio de uma requisição da classe i, quando executando à capacidade total da infra-estrutura, é expresso por d∗
i. Todas as requisições de uma
classe i são estatisticamente indistinguíveis, possuindo a mesma demanda média por serviço, d∗
di e levando em consideração que a classe i recebe apenas a fração fi da capacidade da infra-estrutura, temos di=d∗i/ fi.
Os valores de d∗
i podem ser medidos num ambiente de teste pré-produção da
aplicação na infra-estrutura física antes de ser colocada operacional. Como em [99], isso pode ser feito executando a aplicação para uma carga previamente armazenada ou gerada sinteticamente, enquanto as métricas de interesse são monitoradas. De forma similar, d∗
i pode ser inflacionado para levar em consideração sobrecargas de
desempenho fixas impostas pela virtualização [10].
Note que os parâmetros de configuração do sistema e do SLA podem mudar sempre que ocorrerem alterações na infra-estrutura ou nos contratos entre o provedor e seus clientes: adição ou remoção de classes de aplicação na infra-estrutura, mudança de capacidade de uma camada, uma atualização na aplicação hospedada ou mudança nos requisitos de qualidade de serviço. O SLA, formalizado pelo contrato entre o provedor e seus clientes, é discutido na próxima seção.