• No results found

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=di/ 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.