5.1 Premissas Básicas
5.3.5 Classes para escalonamento
de processamento. Localmente, cada tarefa mantém informações sobre seus atributos e contabiliza a execução de sua carga computacional. Para realizar esta contabilização, cada tarefa armazena um atributo, denominadolastDataStampque indica a última data em que a tarefa foi manipulada pelo escalonamento.
A classeUserdescreve o modelo adotado para o usuário, responsável pela submissão de aplicações, à nuvem. O usuário possui como principais atributos seus dados de identifi- cação dados pelo seu nome (string) e um identificador único. Outros atributos indicam seu status atual, logado ou não, o número e a família de máquinas virtuais que tem a seu uso, além de oferecer acesso a lista contendo suas máquinas virtuais já instanciadas. Instâncias desta classe também realizam registro do uso da nuvem, para fins de faturamento. No modelo de simulação, instâncias da classeUserpermitem combinar todas as informações entre as tarefas criadas por um usuário, as máquinas virtuais responsáveis pela sua execu- ção, os servidores de processamento ocupados, além de identificar o sítio de origem das aplicações.
Outra funcionalidade oferecida por todas as classes, explorada pelas estratégias de escalonamento, é a possibilidade de iterar sobre todas as instâncias de um determinado tipo. Assim, no momento em que uma atividade de escalonamento é realizada, ela tem acesso a todos sítios, servidores de processamento, máquinas virtuais, BoTs, tarefas e usuários ativos no sistema.
Tabela 11 – Métodos da classeScheduler
Classe Método Entrada Saída Descrição
Scheduler
localSchedule - -
Realiza o compartilhamento do uso dos servi- dores de processamento entre as máquinas virtuais e do poder de processamento das máquinas virtuais entre as tarefas.
nodeSchedule - -
Visita todos os sítios, promovendo o balan- ceamento de carga entre seus servidores de processamento pela migração de máquinas virtuais.
cloudSchedule - -
Visita todos os sítios federados, promovendo o balanceamento de carga entre servidores de processamento de todos os sítios pela migração de máquinas virtuais.
burstSchedule - - Visita todos os sítios, promovendo o envio de carga computacional para a nuvem pública.
vmSelection User*, Task* VM*
Seleciona, dentre as máquinas virtuais de um usuário, qual deverá receber a tarefa indi- cada.
vmMigrationSelection Host* VM*
Seleciona, em um determinado servidor de processamento, qual máquina deve ser mi- grada.
hostSelection Node*, VM* Host*
Seleciona, em um determinado sítio, qual ser- vidor de processamento deve receber uma máquina virtual.
receiverNodeSelection Host* Host*
Seleciona o servidor de processamento que deve receber uma máquina virtual por migra- ção, limitando a seleção entre servidores de processamento do mesmo sítio.
receiverCloudSelection Host* Host*
Seleciona o servidor de processamento que deve receber uma máquina virtual por migra- ção, permitindo a seleção entre servidores de processamento de sítio diferente da origem.
A classeSchedulertem seus métodos apresentados na Tabela 11. Estes métodos são implementados combinando os métodos oferecidos pelas demais classes associadas ao escalonamento de forma a oferecer a estratégia de escalonamento desejada. Esta estratégia de implementação visa simplificar a adição de novos escalonadores sem a necessidade de manipular diretamente o código do simulador. Os métodos que possuem no nome o termoScheduledizem respeito a implementação do escalonamento nos diferentes níveis de processamento oferecidos pela nuvem. Os métodos que possuem o termoSelection oferecem as políticas de seleção de máquinas virtuais e servidores de processamento em caso de alocação de tarefas ou máquinas virtuais ou de migração de máquinas virtuais. Um detalhamento dos métodos de escalonamento desta classe é apresentado na sequência.
O método localScheduling implementa a estratégia de escalonamento interna a cada servidor de processamento. Este método é aplicado a cada um dos servidores de processamento ativos, realizando o compartilhamento de seuscores físicos entre as máquinas virtuais nele abrigada e doscores virtuais das máquinas virtuais entre as tarefas em execução local. O escalonamento local é ativado a cada passo da simulação, garantindo a evolução das tarefas em execução.
O escalonamento de máquinas virtuais entre os servidores de processamento de um sítio é realizada pelo métodonodeScheduling. Sua implementação visa promover a mi- gração de máquinas virtuais entre servidores de processamento de um sítio em prol do balanceamento da carga computacional. Diferente do escalonamento local, o escalona- mento neste nível não é obrigatório, pois o escalonamento adotado pode não realizar balanceamento de carga entre os servidores de processamento de um sítio. Sendo este nível de escalonamento contemplado, ele pode ser disparado em intervalos de tempo, de du- ração fixa ou adaptativa, ou na detecção de uma situação em que um servidor encontra-se sobre ou subcarregado (estratégiassender oureceiver initiated, respectivamente).
O escalonamento no nível da nuvem federada é suportado pelo método cloudScheduling. Este nível de escalonamento possui uma semântica operacional bas- tante semelhante com o escalonamento interno a um sítio e igualmente sua implementação não é obrigatória e disparada em observação ao atendimento a uma condição: intervalo de tempo decorrido ou detecção de sobrecarga ou subutilização de algum servidor de processamento ou sítio. Como observação relevante, salienta-se que, caso exista algum sítio na nuvem pertencente a uma nuvem pública, ou seja, um sítio não federado, o modelo de simulação prevê que este não participa deste nível de escalonamento. No entanto, alguma estratégiareceiver initiated pode contemplar repatriar a execução de máquinas virtuais sobre os servidores da nuvem pública para servidores de processamento dos sítios federados.
O métodoburstScheduling implementa a estratégia de escalonamento que decide pelo uso de recursos de processamento de uma nuvem federada. Também disparado para atender alguma condição observada durante a simulação, só é aplicado para realizar o envio de carga computacional (representada por máquinas virtuais) para a nuvem pública, quando a nuvem federada estiver sem condições de atender a demanda gerada.
Os métodos para as classesVMSelection,HostSelection,MigrationVMSelection eMigrationHostSelectionnão possuem uma interface rígidas. Estas classes são apre- sentadas para auxiliar na organização das políticas de escalonamento a medida em que novas estratégias são desenvolvidas. Novas políticas dependem apenas da introdução de métodos que as implementem, passando a estar disponíveis para compor novas estratégias na implementação dos métodos da classeScheduler.
A classeLoadEvaluator oferece serviços para detecção da carga computacional nos servidores de processamento, apoiando as decisões das políticas de escalonamento. Esta
classe possui, atualmente, apenas dois métodos: overLoaded eunderLoaded. Ambos métodos recebem como parâmetro um sítio e retornam uma lista, ordenada do maior para o menor, de servidores de processamento que estejam sobrecarregados ou subutilizados, respectivamente, segundo algum critério. A exemplo da classe Schedule, um conjunto de classes acessórias pode ser implementada oferecendo diferentes critérios de detecção de carga. A implementação atual estima a carga computacional em função da taxa de utilização doscoresfísicos.