Cloud Elasticity for HPC Applications: Observing Energy

Transcrição

Cloud Elasticity for HPC Applications: Observing Energy
2015 XLI Latin American Computing Conference (CLEI)
Cloud Elasticity for HPC Applications: Observing
Energy, Performance and Cost
Vinicius Facco Rodrigues, Gustavo Rostirolla, Rodrigo da Rosa Righi,
Cristiano André da Costa, Jorge Luis Victória Barbosa
Applied Computing Graduate Program - Unisinos
Av. Unisinos, 950 – São Leopoldo, RS, Brazil
Email: [email protected], [email protected], {rrrighi,cac,jbarbosa}@unisinos.br
Abstract—Elasticity is one of the most known capabilities
related to cloud computing, being largely deployed using thresholds. In this way, limits are used to drive resource mangement
actions, leading to the following problem statements: How can
cloud users set the threshold values to enable elasticity in their
cloud applications? And what is the impact of the application’s
load pattern in the elasticity? This article answers these questions
for iterative high performance computing applications, showing
the impact of both thresholds and load patterns on application
performance and resource consumption. To accomplish this, we
developed a reactive and PaaS-based elasticity model called
AutoElastic and employed it over a private cloud to execute a
numerical integration application. Here, we are presenting an
analysis of best practices and possible optimizations regarding
the elasticity and HPC pair. Considering the results, we observed
that the upper threshold influences the application time more
than the lower one.
Keywords—Cloud elasticity, high-performance computing, resource management, self-organizing.
I.
I NTRODUÇÃO
O surgimento da computação em nuvem oferece a flexibilidade de gestão dos recursos de uma forma mais dinâmica
devido ao fato de ser usada a tecnologia de virtualização para
abstrair, encapsular e particionar unidades de processamento.
A virtualização possibilita um dos recursos de nuvem mais
conhecidos - a elasticidade de recursos [1], [2]. Através do
princípio de provisionamento sob demanda, o interesse na
capacidade de elasticidade está relacionado aos benefícios que
ela pode proporcionar, o que inclui melhorias no desempenho
das aplicações, melhor utilização de recursos e redução de custos. Quanto ao desempenho, tem-se a possibilidade de alocação
dinâmica de mais recursos na medida que os existentes ficam
saturados. A possibilidade de alocar uma pequena quantidade
recursos no início da aplicação, evitando provisionamento
excessivo, além da necessidade de liberá-los em períodos de
carga moderada, enfatiza a justificativa para a redução de
custos, o que impacta diretamente na economia de energia e
melhor uso de recursos [3].
Alguns esforços recentes focam em explorar a elasticidade em nuvem para serviços Web tradicionais, incluindo
um armazenamento de dados transacional, Web Services com
intenso tráfego de dados e a execução de aplicações no estilo
bag-of-tasks [4]. Basicamente, esse cenário cobre organizações
que buscam evitar quedas nos serviços com provisionamento
fixo para aplicações críticas. A organização típica da elasticidade em tais sistemas utiliza replicação de máquinas virtuais
(VMs) e um distribuidor de tarefas centralizado, que também
exerce a função de balanceamento de carga. Normalmente,
réplicas não se comunicam entre si e a finalização prematura
de alguma delas não significa que o sistema ficará indisponível,
mas sim em uma nova tentativa de requisição do usuário [5].
Embora a solução mencionada seja empregada com sucesso
em aplicações baseadas em um servidor, aplicações científicas
de HPC (High Performance Computing) fortemente acopladas
não podem se beneficiar do uso destes mecanismos. Geralmente, programas desse tipo foram projetados para usar um
número fixo de recursos e não podem explorar elasticidade sem
um suporte adequado. Em outras palavras, a simples adição
de instâncias e a utilização de balanceadores de carga não têm
qualquer efeito nessas aplicações uma vez que eles não são
capazes de detectar e utilizar esses recursos [6]. Tecnicamente,
nos últimos anos, a maioria das aplicações paralelas foram
desenvolvidas utilizando o padrão Message Passing Interface
(MPI) 1.x, que não possui suporte para alterar o número de
processos durante a execução da aplicação [7]. No entanto,
isso mudou com a versão MPI 2.0, porém esse recurso
ainda não é explorado por muitas das implementações MPI
disponíveis [4]. Além disso, é necessário um esforço em nível
de escrita da aplicação, tanto para alterar manualmente o grupo
de comunicadores entre processos quanto para distribuir os
dados para usufruir eficazmente de um diferente número de
processos. Aliado a isso, o desligamento de uma VM rodando
um ou mais processos pode ocasionar a finalização prematura
da aplicação, uma vez que os canais de comunicação entre os
processos são subitamente encerrados.
Visando proporcionar elasticidade em nuvem para aplicações HPC de uma forma eficiente e transparente, esse
artigo apresenta o modelo chamado AutoElastic1 . A eficiência
é abordada considerando-se tempo e utilização de recursos
para atender diferentes modificações na carga de trabalho. A
transparência, por sua vez, é endereçada pelo provisionamento
de elasticidade em nível de middleware. Sendo AutoElastic
um gerente baseado em PaaS (Platform as a Service), o
programador não precisa alterar qualquer linha de código-fonte
do aplicativo para tirar proveito dos novos recursos. O modelo
proposto assume que a aplicação HPC alvo é iterativa, isto é,
tem um laço de execução para distribuição de tarefas. Esta é
uma suposição razoável para a maioria dos programas MPI,
não limitando a aplicabilidade do modelo. As contribuições
de AutoElastic são:
1 http://autoelastic.com
c
978-1-4673-9143-6/15/$31.00 2015
IEEE
2015 XLI Latin American Computing Conference (CLEI)
•
Infraestrutura elástica para aplicações HPC para
prover elasticidade assíncrona, tanto não bloqueando
nenhum processo, quanto instanciando ou consolidando VMs no momento de mudanças no número de
processos, evitando qualquer possibilidade de finalização prematura da aplicação;
•
Levando em consideração o comportamento reativo
de AutoElastic, foi analisado o impacto do uso de
diferentes thresholds superior e inferior e quatro
padrões de carga distintos (constante, crescente,
decrescente e onda) na elasticidade para executar uma
aplicação com o protótipo de AutoElastic.
Este artigo descreve o modelo AutoElastic e seu protótipo,
o qual foi desenvolvido para executar sobre uma nuvem privada
utilizando a plataforma OpenNebula(http://opennebula.org).
Em adição, são apresentados detalhes sobre a implementação
de uma aplicação de integração numérica e uma discussão
sobre o desempenho de AutoElastic nesse contexto. O restante
deste artigo irá primeiramente introduzir os trabalhos relacionados na Seção II. A Seção III descreve AutoElastic
em detalhes juntamente com seu modelo de aplicação. A
metodologia de avaliação e os resultados são discutidos nas
Seções IV e V. Por fim, a Seção VI enfatiza a contribuição
científica do trabalho e destaca vários desafios que podem ser
abordados no futuro.
II.
T RABALHOS R ELACIONADOS
Computação em Nuvem é focada tanto por provedores
com propostas comerciais e middlewares de código aberto,
quanto por iniciativas acadêmicas. Relacionado ao primeiro
grupo, as iniciativas na Web oferecem a elasticidade ou
manualmente quando considerando o ponto de vista do
usuário [8], [9], [10] ou através da pré-configuração de mecanismos para elasticidade reativa [3], [5], [11]. Em particular, no último caso, o usuário deve configurar os thresholds e as ações de elasticidade, o que pode não ser trivial
para um usuário sem experiência em ambientes de nuvem.
Tais sistemas como Amazon EC2 (http://aws.amazon.com),
Nimbus (http://www.nimbusproject.org) e Windows Azure
(http://azure.microsoft.com) são exemplos dessa metodologia. Em particular, Amazon EC2 facilita a alocação e
preparação de VMs mas não a configuração automática
que é um requisito para uma verdadeira plataforma de nuvem elástica. Considerando os middlewares para nuvens privadas, como OpenStack (https://www.openstack.org), Eucalyptus (https://www.eucalyptus.com), OpenNebula e CloudStack
(http://cloudstack.apache.org), a elasticidade é normalmente
controlada manualmente, ou através de linha de comando
ou através de alguma aplicação gráfica disponibilizada pela
plataforma.
Iniciativas de pesquisa acadêmica procuram reduzir lacunas
e/ou aprimorar as abordagens de elasticidade em nuvem.
ElasticMPI propõe elasticidade em aplicações MPI através
da abordagem stop-reconfigure-and-go [4]. Tal ação pode ter
um impacto negativo, especialmente para aplicações HPC
que não têm longa duração. Em adição, a abordagem de
ElasticMPI faz uma alteração no código fonte da aplicação
a fim de inserir políticas de monitoramento. Mao, Li e
Humphrey [12] tratam com auto-escalabilidade alterando o
número de VMs baseando-se em informações da carga de
trabalho. Considerando que o programa possui tempo determinado para concluir cada uma de suas fases, a proposta trabalha
com recursos e VMs para cumprir esses tempos corretamente.
Martin et al. [13] apresentam um cenário típico de requisições
a um serviço de nuvem que trabalha com um balanceador de
carga. A elasticidade altera a quantidade de VMs trabalhadoras
de acordo com a demanda do serviço. Na mesma abordagem
do uso de um balanceador de carga e réplicas, Elastack aparece
como um sistema executando sobre OpenStack para suprir sua
falta de elasticidade [14].
Elasticidade é mais explorada no nível IaaS (Infrastructure
as a Service) como uma abordagem reativa. Nesse sentido,
os trabalhos não são uníssonos quanto ao uso de um simples
threshold para os testes. Por exemplo, é possível notar os
seguintes valores: (i) 70% [15]; (ii) 75% [16]; (iii) 80% [17];
(iv) 90% [14], [18]. Esses valores lidam com limites superiores
que quando excedidos, disparam ações de elasticidade. Além
disso, uma análise do estado da arte em elasticidade permite
apontar algumas fraquezas nas iniciativas acadêmicas, que
podem ser sumarizadas em cinco aspectos : (i) nenhuma
estratégia propõe-se a avaliar se é um pico, quando atinge um
threshold [13], [14]; (ii) necessidade de alteração no código
fonte da aplicação [4], [19]; (iii) necessidade de conhecer
previamente dados da aplicação antes de sua execução, como
tempo de execução esperado para cada componente [4], [20];
(iv) necessidade de reconfigurar recursos com a parada da
aplicação e subsequente recuperação [4]; (v) suposição de que
a comunicação entre as VMs é dada a taxas constantes [21].
Observando os trabalhos mencionados, é possível destacar
três deles que focam elasticidade em nuvem para aplicações
HPC [4], [13], [19]. Eles têm em comum a abordagem do
modelo de programação mestre-escravo. Particularmente, as
iniciativas [4] e [19] são baseadas em aplicações iterativas,
onde há uma redistribuição de tarefas pelo processo mestre a
cada nova fase. Aplicações que não possuem um laço iterativo
não podem ser adaptadas para essa abordagem, pois ele usa
o identificador da iteração como um ponto de reinício da
execução. Em adição, a elasticidade em [19] é gerenciada
manualmente pelo usuário, obtendo dados de monitoramento
utilizando o framework proposto pelos autores. Por fim, a
proposta de solução de Martin et al. [13] é o tratamento
eficaz das requisições de um servidor Web. Ele age como um
delegador criando e consolidando instâncias baseado no fluxo
de requisições que chegam e a carga das VMs trabalhadoras.
III.
AUTO E LASTIC : E LASTICIDADE EM N UVEM PARA
A PLICAÇÕES HPC
Essa seção descreve o modelo AutoElastic, o qual analisa
alternativas para as seguintes sentenças-problema:
1)
2)
Quais mecanismos são necessários para prover elasticidade transparentemente nos níveis de usuário e
aplicação?
Considerando monitoramento de recursos e procedimentos de gerenciamento de VMs, como pode-se
modelar a elasticidade para torná-la viável em aplicações do tipo HPC?
A ideia de AutoElastic é proporcionar elasticidade reativa
de uma forma transparente e fácil para o usuário, que não
2015 XLI Latin American Computing Conference (CLEI)
precisa escrever regras e ações para a elasticidade. Além disso,
os usuários não precisam alterar sua aplicação paralela, não
inserindo chamadas de elasticidade de uma biblioteca particular e nem modificando a aplicação para adicionar/remover
recursos. Considerando a segunda questão acima mencionada,
AutoElastic deve estar ciente da sobrecarga de instanciar uma
VM, levando em conta esse conhecimento para oferecer esse
recurso sem custos proibitivos.
A. Arquitetura
AutoElastic é um modelo de elasticidade em nuvem que
opera no nível PaaS de uma plataforma de nuvem, agindo
como um middleware que permite a transformação de uma
aplicação paralela não elástica em uma elástica. O modelo
funciona com elasticidade automática e reativa em ambas
formas horizontal (gestão de réplicas de VMs) e vertical
(redimensionamento da infraestrutura computacional), proporcionando alocação e consolidação de nós de computação e
máquinas virtuais. Como uma proposta PaaS, AutoElastic
propõe um middleware para compilar uma aplicação mestreescravo iterativa, além de um gerenciador de elasticidade. A
Figura 1 (a) mostra a iteração dos usuários com a nuvem, os
quais precisam concentrar seus esforços somente no código
da aplicação. O Gerenciador esconde do usuário os detalhes
da escrita de regras e ações de elasticidade. A Figura 1 (b)
ilustra a relação entre os processos, máquinas virtuais e nós
computacionais. Considerando o escopo de nuvem, uma nuvem
AutoElastic pode ser definida como segue:
•
Definição 1 - Nuvem AutoElastic: uma nuvem modelada com m recursos computacionais homogêneos
e distribuídos, em que no mínimo um deles (Nó 0)
está sempre ativo. Esse nó é encarregado de executar
uma VM com o processo mestre e outras c VMs com
processos escravos, em que c significa o número de
unidades de processamento (cores ou CPU) dentro de
um nó em particular. O grão de elasticidade para cada
ação se refere a um simples nó. Por fim, a qualquer
momento, o número de VMs executando processos
escravos é igual a n = c ⇥ m.
A Figura 1 apresentada o Gerenciador AutoElastic como
uma aplicação fora da nuvem, mas ele pode ser mapeado
para o primeiro nó, por exemplo. Essa flexibilidade é atingida
utilizando a API (Application Programming Interface) do
pacote de software da nuvem. Levando em consideração que
aplicações HPC são comumente intensivas quanto a CPU [22],
optou-se pela criação de um único processo por VM e c
VMs por nó de computação para explorar seu total potencial.
Essa abordagem é baseada no trabalho de Lee et al. [23], em
que os autores procuram explorar uma melhor eficiência em
aplicações paralelas.
O usuário pode informar um SLA (Service Level Agreement) com a quantidade mínima e máxima de VMs permitida. Caso esse arquivo não for informado, assume-se que a
quantidade máxima de VMs é o dobro da quantidade de VMs
observada no lançamento da aplicação. O fato de que o Gerenciador, e não a aplicação, incrementa ou decrementa o número
de recursos, provê o benefício da elasticidade assíncrona. Aqui,
elasticidade assíncrona significa que a execução da aplicação e
as ações de elasticidade ocorrem simultaneamente, não penalizando a aplicação com a sobrecarga da reconfiguração de recursos (alocação e desalocação). Contudo, esse assincronismo
leva ao seguinte questionamento: Como podemos notificar
a aplicação sobre a reconfiguração de recursos? Para isso,
AutoElastic provê a comunicação entre as VMs e o Gerente
utilizando uma área de memória compartilhada. Outras opções
de comunicação também podem ser possíveis, incluindo NFS,
middleware orientado a mensagens (tais como JMS ou AMQP)
ou também espaço de tuplas (JavaSpaces, por exemplo). O uso
de uma área compartilhada para interação de dados entre VMs
é uma abordagem comum em nuvens privadas [8], [9], [10].
AutoElastic utiliza essa ideia para disparar ações como segue:
•
Gerente escreve na área compartilhada, enquanto a
aplicação lê:
Ação1: há um novo nó computacional com
c máquinas virtuais, cada uma com um novo
processo da aplicação.
Ação2: solicita permissão para consolidação de
um nó computacional e suas máquinas virtuais.
•
Um único processo da aplicação escreve na área
compartilhada, enquanto o Gerente lê:
Ação3: dando permissão para consolidar o nó
requisitado previamente.
Baseado na Ação1, os processos correntes podem iniciar
trabalhando com a nova configuração de recursos (um único
nó com c VMs, cada uma com um novo processo). A Ação2
é relevante pelas seguintes razões: (i) não parando a execução
do processo enquanto procedimentos ou de comunicação ou
de computação estão ocorrendo; (ii) garantindo que a aplicação não será abortada com a súbita interrupção de um ou
mais processos. Em particular, a segunda razão é importante
para aplicações MPI que executam sobre redes TCP/IP, pois
elas comumente interrompem com o término prematuro de
algum de seus processos. A Ação3 é normalmente tomada
pelo processo mestre, que garante que a aplicação está em
um estado global consistente em que processos podem ser
desconectados apropriadamente. Em seguida, os processos
restantes não trocam nenhuma mensagem com o nó dado. É
utilizada uma área compartilhada pois isso facilita a notificação
de todos os processos sobre a adição ou remoção de recursos,
realizando reconfiguração do canal de comunicação de maneira
simples.
AutoElastic oferece elasticidade em nuvem utilizando a
técnica de replicação. Na ação de aumentar a infraestrutura,
o Gerente aloca um novo nó e lança novas máquinas virtuais
nele utilizando um modelo da aplicação. A inicialização de
uma VM é finalizada com a execução de um processo escravo
que irá realizar requisições para o processo mestre. Essa
instanciação de VMs é controlada pelo Gerente e somente após
sua inicialização estar completa, o Gerente notifica os outros
processos através da Ação1. O procedimento de consolidação
aumenta a eficiência de utilização de recursos e também provê
um melhor gerenciamento do consumo de energia. Particularmente, Baliga et al. [24] afirmam que o número de VMs em
um nó não é um fator influente para o consumo de energia,
mas sim o fato de um nó estar ligado ou não.
Como em [11] e [16], o monitoramento de dados é
realizado de forma periódica. Assim, o Gerente AutoElastic
2015 XLI Latin American Computing Conference (CLEI)
Gerente AutoElastic
Aplicação
Ações
Regras
Máquinas
Virtuais
Recursos
Monitoramento
Aplicação
Middleware
AutoElastic
Gerenciamento
de Recursos
M
Aplicação
VM
Mestre
E
E
E
VM0
VMc-1
VMc
E
VM2c-1
E
E
E
E
VM2c
VM3c-1
VM (m-1)c
VMn-1
Recursos
Computacionais
Nó0
Nó1
Nó2
Cloud Front-End
Nuvem AutoElastic
Nó m-1
Rede de Interconexão
Nuvem AutoElastic
(a)
Conexão SSH ou API
suportada pelo
middleware de nuvem
Área
para
Compartilhamento de
dados
Gerente
AutoElastic
Front-End
da Nuvem
M Processo Mestre
S
Processo Escravo
(b)
Fig. 1: Diferentes visões da arquitetura de AutoElastic: (a) passando a aplicação do usuário para a nuvem e compilando com
o Middleware AutoElastic; (b) distribuição de nós, VMs e processos usando a infraestrutura de nuvem do AutoElastic, na qual
cada VM engloba um único processo da aplicação e cada nó executa c VMs, em que c denota o número de CPUs do nó.
obtém a métrica CPU, aplica séries temporais baseando-se em
valores passados e compara a métrica final com os thresholds
superior e inferior. Mais precisamente, é empregada a técnica
de Média Móvel de acordo com as Equações 1 e 2. P C(i)
retorna uma previsão de carga de CPU quando considerando
a execução de n VMs com processos slave na observação
número i do Gerente. Para realizar isso, M M (i, j) informa
a carga de CPU de uma máquina virtual j na observação i. A
Equação 2 utiliza média móvel considerando as z observações
mais recentes da carga de CPU Carga(k, j) da VM j, em que
i z  k  i. Por fim, a Ação1 é disparada se PC for maior
que o threshold superior, enquanto a Ação2 é acionada quando
PC for menor que o threshold inferior.
P C(i) =
em que
M M (i, j) =
para i
n 1
1 X
.
M M (i, j)
n j=0
Pi
k=i z+1
Carga(k, j)
z
(1)
(2)
z.
B. Modelo da Aplicação Paralela
AutoElastic explora paralelismo de dados em aplicações
paralelas iterativas de passagem de mensagens. Em particular,
a atual versão do modelo ainda tem a restrição de operar com
aplicações do estilo de programação mestre-escravo. Embora
trivial, esse estilo é utilizado em várias áreas, tais como
algoritmos genéticos, técnica de Monte Carlo, transformações
geométricas na computação gráfica, algoritmos de criptografia
e aplicações no estilo SETI-at-home [4]. Entretanto, a Ação1
permite que processos já existentes saibam os identificadores
do novos e estabeleçam comunicação com eles. Outra característica é que AutoElastic trata com aplicações que não usam
prazos específicos para concluir cada etapa de processamento.
Como decisão de AutoElastic, a elasticidade deve ser oferecida aos desenvolvedores sem alterar o código da aplicação.
Assim, foi modelado o framework de comunicação analisando
as interfaces tradicionais de MPI 1.x e MPI 2.x. No primeiro, a
criação de processos é dada de forma estática, na qual um programa inicia e termina com o mesmo número de processos. Por
outro lado, MPI 2.0 vai ao encontro das ideias de elasticidade,
uma vez que habilita a criação dinâmica de novos processos e
a conexão deles com os demais já existentes na topologia. As
aplicações paralelas de AutoElastic são projetadas segundo o
modelo MPMD (Multiple Program Multiple Data), no qual o
mestre tem um executável e os escravos outro.
Baseado em MPI 2.0, AutoElastic trabalha com as
seguintes diretivas: (i) publicar uma porta de conexão; (ii)
procurar o servidor a partir de uma porta; (iii) aceitar uma
conexão; (iv) requisitar uma conexão e; (v) realizar uma
desconexão. Diferente da abordagem em que o processo mestre
lança processos (usando a diretiva spawn), o modelo proposto
atua segundo a outra abordagem de MPI 2.0 para o gerenciamento dinâmico de processos: comunicação ponto-a-ponto
com conexão e desconexão no estilo de Sockets. O lançamento
de uma VM acarreta automaticamente na execução de um processo escravo, que requisita uma conexão com o mestre. Uma
aplicação com AutoElastic não necessita seguir a interface MPI
2.0, mas a semântica de cada diretiva mencionada.
A transformação de uma aplicação não elástica em uma
elástica pode ser oferecida através de diferentes caminhos,
todos transparentes para os usuários: (i) implementação de
um programa orientado a objetos utilizando polimorfismo para
sobrescrever o método para gerir a elasticidade; (ii) utilizando
um tradutor de fonte-para-fonte para inserir código após a
diretiva i do código do mestre; (iii) desenvolvimento de um
wrapper em linguagens procedurais para alterar a função da
diretiva i. Independente da técnica, uma região de código
adicional verifica no diretório compartilhado se há novas ações.
Embora o foco inicial de AutoElastic seja aplicações
mestre-escravo, a modelagem iterativa e o uso de diretivas de
MPI 2.0 facilitam a inclusão de processos e o restabelecimento
das conexões para uma nova topologia totalmente arbitrária.
Em nível de implementação, é possível otimizar conexões e
desconexões caso o processo persistir na lista de processos
ativos. Essa atitude é pertinente principalmente sobre conexões
TCP/IP, que usam um protocolo de três vias que sabidamente
pode acarretar sobrecarga em aplicações de alto desempenho.
IV.
M ETODOLOGIA DE AVALIAÇÃO
Para a realização de testes, foi desenvolvida uma aplicação
iterativa para executar na nuvem com diferentes configurações
de padrões de carga e diferentes combinações de thresholds.
Além do tempo de execução da aplicação, a ideia consiste em
2015 XLI Latin American Computing Conference (CLEI)
A aplicação usada nos testes calcula a aproximação para a
integral do polinômio f (x) num intervalo fechado [a, b]. Para
tal, foi implementado o método de Newton-Cotes para intervalos fechados conhecido como Regra do Trapézio Repetida [25].
A fórmula de Newton-Cotes pode ser útil se o valor do
integrando é dada em pontos igualmente espaçados. Considere
a partição do intervalo [a, b] em n subintervalos iguais, cada
qual de comprimento h ([xi , xi+1 ], para i = 0, 1, 2, ..., n 1).
Assim, xi+1 xi = h = b na . Dessa forma, pode-se escrever
a integral de f (x) como sendo a soma das áreas dos n
trapézios contidos dentro do intervalo [a, b] como apresentado
na Equação 3. A Equação 4 demonstra o desenvolvimento de
uma integração numérica de acordo com fórmula de NewtonCotes. Os valores x0 e xs na Equação 4 são iguais a a e
b, respectivamente. Nesse contexto, s representa a quantidade
de subintervalos. Sendo assim, existem s + 1 equações f (x)
simples para se obter o resultado final da integral numérica.
O processo mestre deve distribuir essas s + 1 equações entre
os processos escravos. Logicamente, alguns escravos podem
receber mais trabalho do que outras quando s+1 não é inteiramente divisível pela quantidade de processos escravos. Como
s define a quantidade de sub-intervalos, e consequentemente
a quantidade de equações, para computar a integral, quanto
maior for esse parâmetro, maior é a carga computacional para
atingir o resultado final para uma equação em particular.
Z b
f (x) dx ⇡ A0 + A1 + A2 + A3 + ... + As 1
(3)
a
em que Ai = area do trapezoide i, com i = 0, 1, 2, 3, ..., s 1.
Z b
x
X1
h
f (x) dx ⇡ [f (x0 ) + f (xs ) + 2.
f (xi )]
(4)
2
a
i=1
B. Padrões de Carga de Processamento
A carga de trabalho recebida pelo processo mestre consiste
em uma lista de equações e seus parâmetros, enquanto o retorno é a mesma quantidade de valores de integração numérica.
Buscando analisar o impacto de diferentes configurações de
thresholds na aplicação paralela com diferentes padrões de
carga, o parâmetro s foi utilizado para definir quatro padrões de
carga: Constante, Crescente, Decrescente e Onda. Nesse sentido, para cada conjunto de equações enviadas para processamento para o processo mestre, em cada iteração (uma equação
é selecionada para cálculo) o parâmetro s foi recalculado
individualmente, modelando um determinado padrão de carga.
Por exemplo, s pode ser igual a 1x para a primeira equação,
2x para a segunda, 3x para a terceira e assim por diante para
gerar o padrão Crescente. A Tabela I e a Figura 2 apresentam
respectivamente as funções para o cálculo do valor de s para
a geração de cada padrão de carga e o modelo de entrada de
dados utilizado nos testes, em que s = carga(x). O parâmetro
$iterations na figura significa a quantidade de equações que
serão geradas para o processamento, resultando no mesmo
número de integrações numéricas. Ainda, o polinômio para
cada uma dessas equações é o mesmo devido ao fato de não
haver importância no polinômio selecionado, pois o foco real
TABLE I: Funções para expressar os diferentes padrões de
carga. Em carga(x), x é o índice da equação que será processada.
Carga
Função de Carga
w
2
Constante
carga(x) =
Crescente
carga(x) = x ⇤ t ⇤ z
Decrescente
Onda
Polynomial
$a, $b
load
$iterations
$v, $w, $t, $z
(a)
carga(x) = w (x ⇤ t ⇤
z)
carga(x) = v ⇤ z ⇤
sen(t ⇤ x) + v ⇤ z + w
+;5;x^5;+;x^2;+;x^1
1,10
CONSTANT
10000
0,1000000,0,0
(b)
Parâmetros
t
v
w
-
1000000
-
-
-
-
0.2
500
-
1000000
0.2
500
1
500
0.00125 500000
+;5;x^5;+;x^2;+;x^1
1,10
ASCENDING
10000
0,0,0.2,500
+;5;x^5;+;x^2;+;x^1
1,10
DESCENDING
10000
0,1000000,0.2,500
(c)
(d)
z
+;5;x^5;+;x^2;+;x^1
1,10
WAVE
10000
1,500,0.00125,500000
(e)
Fig. 2: (a) Modelo de arquivo de entrada utilizado nos testes;
(b), (c), (d) e (e) são instâncias do modelo observando as
funções de carga da Tabela I.
A Figura 3 apresenta graficamente uma representação de
cada padrão de carga. O eixo x expressa a iteração (cada
iteração representa uma equação que será calculada, dividida e
distribuída pelo processo mestre), enquanto o eixo y representa
a respectiva carga de processamento para aquela iteração (valor
de s). Novamente, a carga é definida pela quantidade de
subintervalos s entre os limites a e b, que nos experimentos
são 1 e 10, respectivamente. Quanto maior a quantidade de
subintervalos, maior é a quantidade de equações a serem calculadas pelos processos escravos, e consequentemente maior
é a carga de processamento.
10
9
8
7
6
5
4
3
2
1
0
Constante
Crescente
Decrescente
Onda
1
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
9500
10000
A. Aplicação Paralela
são as variações do processamento e não o resultado final da
integração numérica.
Número de subintervalos
[carga(x)] x 100000
analisar a reatividade da elasticidade e os custos em termos de
infraestrutura para atingir um tempo de execução em particular.
Iteração
Fig. 3: Visão gráfica dos padrões de carga.
C. Cenários de Testes e Avaliação
As cargas foram executadas em dois cenários diferentes
considerando a configuração inicial de recursos: (i) iniciando
com 2 nós e (ii) iniciando com 4 nós. Cada carga foi executada
contra cada cenário considerando AutoElastic com a elasticidade habilitada e desabilitada. No caso em que a elasticidade
estava habilitada, todas as cargas foram executadas 25 vezes,
em que 25 é o número total de combinações possíveis entre
os thresholds selecionados. Assumindo as escolhas de diferentes trabalhos, nos quais podem ser encontrados thresholds
2015 XLI Latin American Computing Conference (CLEI)
superiores como 50% [26], 70% [15], [26], 75% [16], 80%
[18], [26] e 90% [14], [26], foram adotados 70%, 75%, 80%,
85% e 90%, enquanto que para os thresholds inferiores foram
adotados 30%, 35%, 40%, 45% e 50%. Particularmente, o
intervalo para os thresholds inferiores foi baseado no trabalho
de Haidari et al. [26], que propõe uma análise teórica com
teoria de filas para observar o desempenho de elasticidade em
nuvem.
Além da perspectiva de desempenho, também foi analisado o consumo de energia a fim de perceber o impacto da
elasticidade. Em outras palavras, o objetivo não é reduzir o
tempo de execução da aplicação utilizando um grande número
de recursos consumindo muito mais energia. Empiricamente,
a Equação 5 é utilizada para estimar o consumo de energia
baseando-se na quantidade de recursos utilizados. Nesse contexto, u expressa a quantidade máxima de VMs que o Gerente
AutoElastic alocou durante a execução do programa. Ainda,
T (i) refere-se ao tempo que a aplicação foi executada utilizando i máquinas virtuais, cada qual com 1 processo escravo.
Levando em consideração a medição de energia (Equação 5) e
o tempo de execução da aplicação, é possível avaliar o custo
Custo multiplicando os dois valores mencionados (Equação
6). O objetivo final consiste em obter um custo melhor
quando AutoElastic executa com a elasticidade habilitada em
comparação com a execução da aplicação com um número fixo
de recursos.
Energia =
u
X
i=1
(i ⇥ T (i))
Custo = Energia ⇥ T empo_Aplic
(5)
(6)
Considerando a infraestrutura de nuvem utilizada, foi configurado um ambiente OpenNebula 4.2 em um cluster com 10
nós homogêneos. Cada nó possui um processador com dois
núcleos de 2.9 GHz e 4 GB de memória RAM, interconectados
em uma rede 100 Mbps.
V.
R ESULTADOS
Esta seção apresenta os resultados obtidos quando executando a aplicação paralela na nuvem considerando dois
cenários: (i) utilizando AutoElastic, habilitando a elasticidade;
(ii) utilizando AutoElastic, apenas para monitoramento e sem
a realização da elasticidade. Particularmente, os valores de
thresholds não são importantes para o segundo cenário, visto
que nenhuma operação de elasticidade é realizada.
A. Impacto dos Thresholds no Tempo de Execução da Aplicação
Com o objetivo de analisar o impacto e possíveis tendências
dos thresholds utilizados, os resultados de todas as execuções
foram organizados nas Figuras 4 e 5. Ambas apresentam o
tempo final de execução da aplicação no cenário em que a
elasticidade estava habilitada e as respectivas combinações de
thresholds. Do ponto de vista de desempenho, foi observado
que o tempo da aplicação não é afetado significantemente
quando o threshold inferior varia (Figura 4 (a) e Figura 5
(a)). Por outro lado, a variação do threshold superior impacta
diretamente no desempenho da aplicação (Figura 4 (b) e
Figura 5 (b)), o qual quanto mais alto for, maior também é o
tempo de execução. A falta de reatividade é a principal causa
desta situação, pois a aplicação executa em estado de sobrecarga durante um longo período quando avaliando thresholds
próximos a 90%. Particularmente, esse comportamento é mais
evidente no padrão de carga Crescente. Neste caso, a carga de
trabalho cresce continuamente e então, um threshold próximo
a 70% pode alocar recursos mais rápido, aliviando a carga da
CPU do sistema rapidamente.
A Tabela II apresenta os resultados dos cenários que
obtiveram os menores e maiores tempos de execução da
aplicação. Em adição, as Figuras 6 e 7 ilustram o desempenho
envolvendo a coluna dos menores tempos obtidos nos cenários
mencionados anteriormente. Cada nó inicia com duas VMs,
cada uma executando um processo escravo em cada um dos
dois cores do nó. Considerando que a aplicação é intensiva
quanto a CPU, as execuções sem elasticidade com 4 nós iniciais superam, em média, em 65% os testes sem elasticidade com
2 nós. Isso explica também os melhores resultados obtidos com
a elasticidade habilitada considerando a configuração inicial
com 2 e 4 nós. Em outras palavras, a possibilidade de alterar
a quantidade de recursos tem um impacto significativo quando
iniciando com uma configuração mais limitada. Por exemplo, a
Figura 6 (a) mostra o padrão de carga Crescente e o incremento
até 12 CPUs (6 nós) com a elasticidade, denotando um ganho
de desempenho de até 31%. Aqui, pode ser observado que a
quantidade de CPU utilizada atinge o total de recursos alocados
rapidamente, demonstrando a característica de intensividade
quanto a CPU da aplicação. Considerando esta figura e o
padrão de carga Decrescente, foram alocadas até 10 CPUs
que vieram a ser pouco utilizadas, sendo liberadas perto do
final da execução da aplicação. Isso ocorre porque AutoElastic
não trabalha com conhecimento prévio da aplicação, agindo
somente com dados capturados em tempo de execução.
B. Consumo de Energia e Custo
As Figuras 8 e 9 apresentam perfis da execução da aplicação, que descrevem o mapeamento de VMs quando são
considerados os menores e maiores tempos apresentados na
Tabela II. O cenário em que se inicia a execução com 2
nós (4 VMs) não apresenta ações de elasticidade no pior
caso quando utilizando o threshold superior igual a 90%.
Isso explica os resultados na parte (b) da Figura 8. Ainda,
com 2 nós iniciais, um threshold superior igual a 70% é
responsável por alocar até 12 VMs na carga Crescente como
pode ser observado na Figura 8 (a). Contrariamente a essa
situação, a Figura 9 mostra menos variação na configuração de
recursos, quando 4 nós (8 VMs) são mantidos na maior parte
do tempo da execução. Como exceção, pode ser observado a
carga Crescente como pior caso, em que um threshold superior
igual a 90% é empregado. A aplicação inicia a redução da
quantidade de VMs de 8, para 6 até 4, utilizando essa última
configuração em 96% do tempo de execução. Embora não seja
superior a uma carga de 90%, não ampliando a infraestrutura,
a alocação de mais recursos nesta situação poderia ajudar tanto
no balanceamento de carga entre as CPUs como reduzindo o
tempo de aplicação.
A Figura 10 apresenta o total de CPU alocada e o total de
CPU utilizada considerando os menores tempos (ver Tabela II)
de ambos cenários com 2 e 4 nós iniciais. Como pode ser
2015 XLI Latin American Computing Conference (CLEI)
Constante
Tempo (segundos)
2400
2300
2200
2100
2000
1900
1800
1700
1600
1500
1400
1300
Tempo (segundos)
Decrescente
Onda
70/30 70/35 70/40 70/45 70/50 75/30 75/35 75/40 75/45 75/50 80/30 80/35 80/40 80/45 80/50 85/30 85/35 85/40 85/45 85/50 90/30 90/35 90/40 90/45 90/50
Thresholds (inferior/superior)
Constante
2400
2300
2200
2100
2000
1900
1800
1700
1600
1500
1400
1300
Crescente
(a)
Decrescente
Crescente
Onda
70/30 75/30 80/30 85/30 90/30 70/35 75/35 80/35 85/35 90/35 70/40 75/40 80/40 85/40 90/40 70/45 75/45 80/45 85/45 90/45 70/50 75/50 80/50 85/50 90/50
Thresholds (inferior/superior)
(b)
Fig. 4: Tendência do tempo de execução da aplicação iniciando com 2 nós variando o threshold inferior (a) e o superior (b).
Tempo (segundos)
Constante
2400
2300
2200
2100
2000
1900
1800
1700
1600
1500
1400
1300
Tempo (segundos)
Decrescente
Onda
70/30 70/35 70/40 70/45 70/50 75/30 75/35 75/40 75/45 75/50 80/30 80/35 80/40 80/45 80/50 85/30 85/35 85/40 85/45 85/50 90/30 90/35 90/40 90/45 90/50
Thresholds (inferior/superior)
Constante
2400
2300
2200
2100
2000
1900
1800
1700
1600
1500
1400
1300
Crescente
Crescente
(a)
Decrescente
Onda
70/30 75/30 80/30 85/30 90/30 70/35 75/35 80/35 85/35 90/35 70/40 75/40 80/40 85/40 90/40 70/45 75/45 80/45 85/45 90/45 70/50 75/50 80/50 85/50 90/50
Thresholds (inferior/superior)
(b)
Fig. 5: Tendência do tempo de execução da aplicação iniciando com 4 nós variando o threshold inferior (a) e o superior (b).
TABLE II: Combinações de thresholds que obtiveram o menor e maior tempo de execução da aplicação para cada padrão de
carga considerando o cenário inicial de recursos e a disponibilidade de elasticidade.
AutoElastic sem
elasticidade
AutoElastic com
elasticidade
Modo
Nós iniciais/
CPUs
2/4
4/8
2/4
4/8
Padrão
de
Carga
Thresholds
Superior
Inferior
Crescente
Constante
Decrescente
Onda
Crescente
Constante
Decrescente
Onda
Crescente
Constante
Decrescente
Onda
Crescente
Constante
Decrescente
Onda
70
70
70
70
70
70
70
70
-
Todos
Todos
50
30
Todos
Todos
30
30
-
Menores tempos
Tempo
Energia
(segundos)
(Equação 5)
1601
1569
1580
1730
1578
1401
1374
1487
2317
2281
2308
2345
1510
1384
1506
1544
11160
11206
12014
12518
11268
11208
14184
14082
9268
9124
9232
9380
12080
11072
12048
12352
Custo
(Equação 6)
Thresholds
Superior
Inferior
17867160
17582214
18982120
21656140
17780904
15702408
19488816
20939934
21473956
20811844
21307456
21996100
18240800
15323648
18144288
19071488
90
85
90
90
90
75
80
90
-
Todos
Todos
Todos
Todos
Todos
Todos
45
50
-
Maiores tempos
Tempo
Energia
(segundos)
(Equação 5)
2354
2305
2334
2383
2348
1435
1538
1987
-
9416
9220
9336
9532
9632
11480
11636
10578
-
Custo
(Equação 6)
22165264
21252100
21790224
22714756
22615936
16473800
17896168
21018486
-
AutoElas
AutoEla
AutoEla
enabling
enabling
AutoElas
enabling
AutoElas
AutoElas
enabling
enabling
enabling
4/84/84/8
4/8
4/84/8
Ascending
Ascending
Ascending
Ascending- Ascending
Ascending
Constant
Constant
Constant
Constant - Constant
Constant
Descending
Descending
Descending
Descending
Descending
- Descending
Wave
Wave
Wave
Wave
Wave
- Wave
-
-----
-
-
-
1510
1510
1510
1510
1510
1510
1384
1384
1384
1384
1384
1384
1506
1506
1506
1506
1506
1506
1544
1544
1544
1544
1544
1544
-----
12080
12080
12080
12080
12080
12080
11072
11072
11072
11072
11072
11072
12048
12048
12048
12048
12048
12048
12352
12352
12352
12352
12352
12352
-
-----
-
-----
-
-----
-
-----
-
-- -- -- -- -
-----
-
-- -- -- -- -
-----
2015 XLI Latin American Computing Conference (CLEI)
TABLE
best
and
thethe
worst
results
toexecute
execute
the
application
of
each
load
in
all
scenarios.
TABLE
The
best
considering
the
time
the
application
load
in
TABLE
TABLE
I:The
I:The
The
best
best
and
and
the
worst
worst
results
results
considering
considering
the
the
time
time
toexecute
toexecute
execute
the
the
application
application
ofeach
of
each
each
load
load
inall
in
allscenarios.
all
scenarios.
scenarios.
TABLE
I:I:I:The
best
and
the
worst
results
considering
the
time
toto
the
application
ofof
each
load
in
all
scenarios.
4HRESHOLD3UPERIOR
AutoElastic without
enabling elasticity
AutoElastic with
elasticity support
Mode
Nodes/
CPUs
Load
Pattern
Ascending
Constant
2/4
4EMPOSEGUNDOS
Descending
Wave
Ascending
Constant
4/8
Descending
Wave
Ascending
Constant
2/4
Descending
Wave
Ascending
Constant
4/8
Descending
Wave
High
70
70
70
70
70
70
70
70
-
Thresholds
Low
4HRESHOLD)NFERIOR
#05$ISPON¤VEL
#055SADA
Best Result
ALL
ALL
4EMPOSEGUNDOS
50
30
ALL
ALL
30
30
-
Time
Energy
1601
1569
1580
1730
1578
1401
1374
1487
2317
2281
2308
2345
1510
1384
1506
1544
11160
11206
12014
12518
11268
11208
14184
14082
9268
9124
9232
9380
12080
11072
12048
12352
High
Thresholds
Low
90
85
4EMPOSEGUNDOS
90
90
90
75
80
90
-
Worst Result
ALL
ALL
ALL
ALL
ALL
ALL
45
50
-
Time
2354
2305
2334
2383
2348
1435
1538
1987
-
Energy
9416
9220
4EMPOSEGUNDOS
9336
9532
9632
11480
11636
10578
-
TABLE 4EMPOSEGUNDOS
I: The best and the worst results4EMPOSEGUNDOS
considering the time to execute4EMPOSEGUNDOS
the application of each load in 4EMPOSEGUNDOS
all scenarios.
(b)
(a)
(c)
(d)
Fig.
5:History
History
ofresource
resource
utilization
ofthe
the
best
times
starting
with
Ascending
without
elasticity,
(b)
Constant
Fig.
Fig.
5:
5:History
History
ofresource
ofresource
resource
utilization
utilization
ofthe
ofthe
the
best
best
times
times
starting
starting
with
with
2nodes:
2nodes:
nodes:
(a)
(a)
Ascending
Ascending
without
without
elasticity,
elasticity,
(b)
(b)
Constant
Constant
Fig.
5:
ofof
utilization
ofof
best
times
starting
with
2 22nodes:
(a)(a)
Ascending
without
elasticity,
Constant
Fig.
6:
Histórico
de
utilização
de recursos
das
execuções
que
obtiveram
os
menores
tempos
iniciadas
com
2 nós(b)apresentadas
Fig.
5:
History
utilization
best
times
starting
with
nodes:
(a)
Ascending
without
elasticity,
(b)
Constant
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
na
Tabela
II.
A
parte
superior
se
refere
à
execução
sem
elasticidade,
enquanto
que
a
parte
inferior
se
refere
à
execução
com
awith
without elasticity, (c) Descending without elasticity, (d) Wave without elasticity, (e) Ascending with elasticity, (f) Constantwith
with
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)(h)
Wave
with
elasticity.
elasticidade
habilitada.
Cada
coluna
representa
um
padrão
de carga: (a) Crescente; (b) Constante; (c) Decrescente; (d) Onda.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
Wave
with
elasticity.
4HRESHOLD3UPERIOR
4HRESHOLD)NFERIOR
#055SADA
#05$ISPON¤VEL
accept/connect
directives.
Particularly,
we
adopted
this
design
can
be
seen
choice
because
the
application
will
accept/connect
accept/connect
directives.
directives.
Particularly,
Particularly,
we
we
adopted
adopted
this
this
design
designcan
can
can
be
seen
seen
abad
abad
bad
choice
choice
because
because
the
the
application
application
will
will
accept/connect
directives.
Particularly,
we
adopted
this
design
be
seen
asas
a aas
choice
because
the
application
will
accept/connect
directives.
Particularly,
we
adopted
this
design
can
bebe
seen
asas
abad
bad
choice
because
the
application
will
decision
because
it
can
be
easily
implemented
in
MPI
2,
which
execute
unnecessarily
with
overloaded
resources
up
to
reach
decision
because
it
can
be
easily
implemented
in
MPI
2,
which
execute
unnecessarily
with
overloaded
resources
up
to
reach
decision
because
it
can
be
easily
implemented
in
MPI
2,
which
execute
unnecessarily
with
overloaded
resources
up
to
reach
decision
because
it
can
be
easily
implemented
in
MPI
2,
which
execute
unnecessarily
with
overloaded
resources
up
to
reach
decision because it can be easily implemented in MPI 2, which
execute unnecessarily with overloaded resources up to reach
offers
programming
style
for
dynamic
process
this
threshold
level.
our
tests,
our
lower
value
this
offers
asockets-based
programming
style
for
dynamic
process
this
threshold
level.
our
tests,
our
lower
value
for
this
offers
a aasockets-based
programming
style
forfor
dynamic
process
threshold
level.
InIn
our
tests,
our
lower
value
forfor
this
offers
asockets-based
sockets-based
programming
style
for
dynamic
processthis
this
threshold
level.
In
our
tests,
our
lower
value
for
this
offers
sockets-based
programming
style
dynamic
process
this
threshold
level.
InIn
our
tests,
our
lower
value
for
this
creation.
Moreover,
considering
the
time
requirements
parameter
was
70%,
which
was
responsible
the
best
results
creation.
Moreover,
considering
the
time
requirements
ofHPC
parameter
was
70%,
which
was
responsible
for
the
best
results
creation.
Moreover,
considering
the
time
requirements
ofof
was
70%,
which
was
responsible
forfor
the
best
results
creation.
Moreover,
considering
the
time
requirements
ofHPC
HPCparameter
parameter
was
70%,
which
was
responsible
for
the
best
results
creation.
Moreover,
considering
the
time
requirements
ofHPC
HPC
parameter
was
70%,
which
was
responsible
for
the
best
results
applications,
we
modeled
framework
toenable
enable
feaover
load
patterns.
applications,
applications,
applications,
we
we
modeled
we
modeled
modeled
a aaframework
aframework
aframework
framework
toto
toenable
toenable
enable
a aanovel
anovel
anovel
novel
feafeafea-over
over
over
allall
load
all
load
load
patterns.
patterns.
patterns.
applications,
we
modeled
novel
feaover
allall
load
patterns.
ture
denoted
asynchronous
elasticity,
where
VM
transferring
or
ture
ture
denoted
denoted
asynchronous
asynchronous
elasticity,
elasticity,
where
where
VM
VM
transferring
transferring
or
or
ture
denoted
asynchronous
elasticity,
where
VM
transferring
or
ture denoted asynchronous elasticity, where VM transferring or
consolidation
happens
with
application
execution.
consolidation
happens
inparallel
parallel
with
application
execution.
consolidation
happens
ininparallel
with
application
execution.
Best Result
Worst Result
consolidation
happens
in
parallel
with
application
execution.
consolidation
happens
with
application
execution.
Nodes/ in parallel
Load
Mode
CPUs
Pattern
High
Wave
-
Thresholds
Low
Time
Energy
1544
12352
High
Thresholds
Low
Time
Energy
-
-
AutoElastic without
enabling elasticity
AutoElastic with
elasticity support
Arelevant
relevant
aspect
ofour
our
work
was
the
analysis
beArelevant
aspect
ofour
work
was
the
analysis
ofthe
beAA
aspect
ofof
work
was
the
analysis
ofof
beArelevant
relevant
aspect
ofour
our
work
was
the
analysis
ofthe
the
aspect
work
was
the
analysis
ofthe
the
be70
ALL
1601be11160
90
ALL
2354
9416
Ascending
haviors
of
both
AutoElastic
and
HPC
application
when
varying
Future
research
concerns
the
study
network,
storage
haviors
of
both
AutoElastic
and
HPC
application
when
varying
Future
research
concerns
the
study
of
network,
storage
haviors
of
both
AutoElastic
and
HPC
application
when
varying
Future
research
study
ofof
network,
storage
Constant
70
ALL
1569
11206
85 concerns
ALLthe
2305
9220
haviors
of
both
AutoElastic
and
HPC
application
when
varying
Future
research
concerns
the
study
of
network,
storage
haviors of both
AutoElastic
and
HPC
application
when
varying
Future
research
concerns
the
study
of
network,
storage
4EMPOSEGUNDOS
4EMPOSEGUNDOS
4EMPOSEGUNDOS
4EMPOSEGUNDOS
2/4
Descending
70
50 the
1580 and
12014
90
ALL
2334
9336
elasticity
parameters
and
load
patterns.
At
a
glance,
the
gain
and
memory
elasticity
to
employ
these
capabilties
in
the
next
elasticity
parameters
and
load
patterns.
At
a
glance,
the
gain
and
memory
elasticity
to
employ
these
capabilties
in
the
next
elasticity
parameters
and
load
patterns.
At
a
glance,
gain
memory
elasticity
to
employ
these
capabilties
in
the
next
elasticity
parameters
and
load
patterns.
At
a
glance,
the
gain
and
memory
elasticity
to
employ
these
capabilties
in
the
next
elasticity parameters and load
the gain
and 12518
memory elasticity
to ALL
employ these
Wave patterns.
70 At a glance,
30
1730
90
2383 capabilties
9532 in the next
with
elasticity
depends
on:
(i)
the
computational
grain
of
the
versions
of
AutoElastic.
Besides
the
used
numerical
integration
with
with
with
elasticity
elasticity
elasticity
depends
depends
depends
on:
on:
(i)
on:
(i)
the
(i)
the
computational
the
computational
computational
grain
grain
grain
of
the
of
of
the
the
versions
versions
versions
of
AutoElastic.
of
of
AutoElastic.
AutoElastic.
Besides
Besides
Besides
the
the
used
the
used
used
numerical
numerical
numerical
integration
integration
integration
70
ALL
1578
11268
90
ALL
2348
9632
Ascending
with elasticity depends on: (i) the computational grain of the
versions of AutoElastic. Besides the used numerical integration
Constant
70
ALL
1401 application
11208 bebe
75
ALL
1435
11480
application;
(ii)
elasticity
reactivity.
ACPU-bound
CPU-bound
application
application
the
evaluate
AutoElastic
functioning,
application;
application;
(ii)
(ii)
elasticity
elasticity
reactivity.
reactivity.
A
ACPU-bound
CPU-bound
application
application
application
application
beuseful
be
useful
useful
the
the
evaluate
evaluate
AutoElastic
AutoElastic
functioning,
functioning,
wewe
application;
(ii)
elasticity
reactivity.
AA
application
useful
the
evaluate
AutoElastic
functioning,
wewe
4/8
application;
(ii)
elasticity
reactivity.
CPU-bound
application
application
be
useful
the
evaluate
AutoElastic
functioning,
we
Descending
70
30
1374
14184
80
45 highly-irregular
1538
11636
can
execute
faster
with
elasticity
when
comparing
elasticity
inted
to
explore
elasticity
on
applications
[25].
can
execute
faster
with
elasticity
when
comparing
elasticity
inted
to
explore
elasticity
on
highly-irregular
applications
[25].
can
execute
faster
with
elasticity
when
comparing
elasticity
inted
to
explore
elasticity
on
highly-irregular
applications
[25].
can
execute
faster
with
elasticity
when
comparing
elasticity
inted
to
explore
elasticity
on
highly-irregular
applications
[25].
Wave
70 comparing
30
1487
1987
10578
can execute faster with elasticity
when
elasticity
inted14082
to explore90elasticity 50
on highly-irregular
applications
[25].
with
a afixed
and
reduced
number
ofresources.
resources.
Considering
this
Finally,
our
plans
also
consider
AutoElastic
with
fixed
and
reduced
number
ofresources.
Considering
this
Finally,
our
plans
also
consider
toextend
AutoElastic
tocover
cover
- resources.
-Considering
2317
9268
-plans
-consider
- extend
Ascending
with
awith
and
reduced
number
ofof
Considering
this
our
plans
also
consider
toto
extend
AutoElastic
tototo
cover
a fixed
and
reduced
number
ofresources.
thisFinally,
Finally,
our
also
toextend
AutoElastic
to
cover
with
afixed
fixed
and
reduced
number
Considering
this
Finally,
our
plans
also
consider
to
extend
AutoElastic
cover
Constant
-a amaximum
- threshold
2281 elasticity
9124 onon
- HPC
- models,
-like
kind
ofapplications,
applications,
we
observed
that
maximum
threshold
elasticity
other
HPC
programming
like
divide-andkind
of
applications,
we
observed
that
a
maximum
threshold
elasticity
on
other
HPC
programming
models,
divide-andkind
of
we
observed
that
other
programming
models,
like
divide-and2/4
kind
of
applications,
we
observed
that
a
maximum
threshold
elasticity
on
other
HPC
programming
models,
like
divide-andkind of applications, we observed
threshold
elasticity
HPC programming
divide-andDescending that
- a maximum
2308
9232 on other
- models, like
(that
drives
theinfrastructure
infrastructure
enlargement)
close
100%
conquer,
pipeline
and
bulk-synchronous
parallel
(BSP).
(that
(that
(that
drives
drives
drives
the
the
infrastructure
infrastructure
enlargement)
enlargement)
enlargement)
close
toto
100%
to
100%
100%
conquer,
conquer,
pipeline
pipeline
pipeline
and
bulk-synchronous
and
bulk-synchronous
bulk-synchronous
parallel
parallel
parallel
(BSP).
(BSP).
(BSP).
Wave
- of theclose
- close
2345 conquer,
9380
- and
-(b)
Fig.
5:
History
of
resource
utilization
best
times
starting
with
2 nodes:
(a)
Ascending
without - elasticity,
Constant
(that
drives
thethe
infrastructure
enlargement)
close
toto
100%
conquer,
pipeline
and
bulk-synchronous
parallel
(BSP).
1510
12080
Ascending
without elasticity, (c) Descending
without
elasticity,
(d) Wave
without elasticity,
(e)
Ascending
with elasticity,
(f) Constant
with
Constant
1384
11072
4/8
elasticity, (g) Descending
with
elasticity,
(h) Wave
Descending
- with elasticity.
1506
12048
-
-
-
TABLE4EMPOSEGUNDOS
I: The best and the worst results4EMPOSEGUNDOS
considering the time to execute4EMPOSEGUNDOS
the application of each load in 4EMPOSEGUNDOS
all scenarios.
(a)
(b)
(c)
(d)
accept/connect directives. Particularly, we adopted this design
can be seen as a bad choice because the application will
Fig.
6:
History
of
utilization
of
the
best
times
with
4nodes:
nodes:
(a)
Ascending
without
elasticity,
(b)
Constant
Fig.
History
of
resource
the
best
times
with
444nodes:
(a)
Ascending
without
elasticity,
Constant
Fig.
6:
History
of
resource
utilization
of
the
best
times
starting
with
4os
nodes:
(a)
Ascending
without
elasticity,
Constant
6:
History
of
resource
utilization
the
best
times
starting
4unnecessarily
nodes:
(a)
Ascending
without
elasticity,
(b)
Constant
times
starting
with
(a)
Ascending
without
elasticity,
(b)
Constant
Fig.
6:6:
History
resource
utilization
ofof
the
best
times
starting
with
(a)
Ascending
without
elasticity,
(b)
Constant
Fig.
6:
History
ofof
resource
utilization
ofof
the
best
without
elasticity,
(b)
Constant
Fig.
6:7:
History
resource
utilization
of
the
best
starting
with
4nodes:
nodes:
(a)
Ascending
without
elasticity,
(b)
Constant
Fig.
Histórico
de
utilização
de recursos
das
execuções
que
obtiveram
menores
tempos
iniciadas
com
4 nós(b)
apresentados
decision
because
itof
can
be easily
implemented
in
MPI
2,times
which
execute
with
overloaded
resources
up
to(b)
reach
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
elasticity,
(f)
Constant
with
without
elasticity,
(c)
Descending
without
elasticity,
(d)
Wave
without
elasticity,
(e)
Ascending
with
elasticity,
(f)
Constant
with
na Tabela
II. A parteprogramming
superior se refere
à execução
elasticidade,
enquanto level.
que a parte
awith
offers
a sockets-based
style for
dynamic sem
process
this threshold
In ourinferior
tests, se
ourrefere
lowerà execução
value for com
this
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
with
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
elasticity,
(g)
Descending
with
elasticity,
(h)
Wave
with
elasticity.
elasticidade
habilitada.
Cada
coluna
representa
um
padrão
de carga:
(a) Crescente;
Constante;
(c) Decrescente;
(d) Onda.
creation.
Moreover,
considering
the
time
requirements
ofelasticity.
HPC
parameter
was 70%,(b)
which
was responsible
for the best
results
applications, we modeled a framework to enable a novel feaover all load patterns.
ture denoted asynchronous elasticity, where VM transferring or
visto, todas
as
cargas
utilizaram
menos
CPU
com aexecution.
elasticidade
alocar uma maior
quantidade
de CPU
quando
a elasticidade
consolidation
happens
in parallel
with application
Used
Allocated
Used
CPUCPU
Allocated
CPUCPU
4 VMs
6 VMs
8 VMs
10 VMs
12 VMs
4 VMs
6 VMs
8 VMs
10 VMs
12 VMs
Used
CPU
Allocated
CPU
Used
CPU
Allocated
CPU
4VMs
VMs
6VMs
VMs
8VMs
VMs
10
VMs
12
VMs
Used
CPU
Allocated
CPU
Used
CPU
Allocated
CPU
44VMs
66VMs
88VMs
10
VMs
12
VMs
Used
CPU
Allocated
CPU
VMs
VMs
8 VMs
1010
VMs
1212
VMs
4 VMs
6 VMs
8 VMs
VMs
VMs
44 VMs
66 VMs
Used
CPU
Allocated
CPU por duas
10
VMs
12
VMs
habilitada,
exceto
a
carga
Constante
iniciando
com
4
nós
está
habilitada.
Esse
comportamento
é
esperado
1
1
1
1
385 385
375 375
351 351
467 467
1 1 385
385
375
351
467
385
375
351
467
1 1 1 11
375
467
385
375
351
467
11 1 que
375
1
385
375
351
obteve
resultado
com
a467
elasticidade
razões:
(i) AutoElastic não usa informações prévias referentes
A2 385relevant
aspect
of351igual
our
work
was
the analysis habilitada
of the be- e
2
2
2
15101510
2 2
2 2
1510
1510
1510
1510
22 2 desabilitada.
1510
Contudo,
uso HPC
de 2application
nós iniciais
implica
em
à2 2Future
aplicação;
(ii) após
alocar the
recursos,
a carga storage
geral do
2
2
1510 o and
haviors
of
both
AutoElastic
when
varying
research
concerns
study toda
of network,
3
3
14011401
3
3
1401
3
1401
1401
1401
3 3 3memory
3 33 3
1401
33elasticity
parameters
and
load
patterns.
At
a
glance,
the
gain
and
elasticity
to
employ
these
capabilties
in
the
next
1401
3
4
4
13841384
4
4
1384on: (i) the computational grain of the
1384
1384
1384
44 4 4 44
4 44 4 elasticity depends
versions
of
AutoElastic.
Besides
the
used
numerical
integration
1384
44with
1384
44
5
5
5
5 44
265 265 272 272
735 735
58
44 58265
44544544
265(ii)
272
735
elasticity
reactivity.
A CPU-bound application
application
be useful the evaluate AutoElastic functioning, we
272
735
55 5 5 55
544
265
272
265265
272
735
44
55application;
265
272
735
58
58
5 58
272
735
58
6
6
658 6 58
15061506
can
execute
faster
with
elasticity
when
comparing
elasticity
inted
to
explore
elasticity on highly-irregular applications [25].
6
6
1506
6
6
1506
66 6 6
1506
1506
66 6 6
1506
1506 543 543
275
7
7
669 669
7
7
with
of275
resources.
Considering this
Finally,
our plans also consider to extend AutoElastic to cover
669 reduced number
543
275
7 a fixed and
7
2015 XLI Latin American Computing Conference (CLEI)
4 VMs
1
2
3
4
5
6
7
8
509
2317
237
2281
344
2308
222
2345
6 VMs
307
199
10 VMs
52
12 VMs
1133
287
287
662
597
0
8 VMs
397
336
531
300
600
900
380
1200
Tempo (segundos)
1500
1800
2100
2400
1500
1800
2100
2400
(a)
1
2
3
4
5
6
7
8
2354
2317
2305
2281
2334
2308
2383
2345
0
300
600
900
1200
Tempo (segundos)
(b)
1 Crescente com elasticidade
3 Constante com elasticidade
5 Decrescente com elasticidade
7
Onda com elasticidade
2 Crescente sem elasticidade
4 Constante sem elasticidade
6 Decrescente sem elasticidade
8
Onda sem elasticidade
Fig. 8: Profile das execuções que obtiveram os menores (a) e maiores (b) tempos de execução da aplicação iniciando com 2 nós
para cada padrão de carga com e sem elasticidade.
4 VMs
1 385
2 1510
3 1401
4 1384
5 44 58 265
6 1506
7 669
8 1544
0
6 VMs
375
8 VMs
351
272
12 VMs
735
543
300
10 VMs
467
600
275
900
1200
Tempo (segundos)
1500
1800
2100
2400
(a)
1
2
3
4
5
6
7
8
2258
1510
1435
1384
137
1506
1295
1544
0
60 30
60
1341
69
300
600
900
1200
Tempo (segundos)
623
1500
1800
2100
2400
(b)
1 Crescente com elasticidade
3 Constante com elasticidade
5 Decrescente com elasticidade
7
Onda com elasticidade
2 Crescente sem elasticidade
4 Constante sem elasticidade
6 Decrescente sem elasticidade
8
Onda sem elasticidade
Fig. 9: Profile das execuções que obtiveram os menores (a) e maiores (b) tempos de execução da aplicação iniciando com 4 nós
para cada padrão de carga com e sem elasticidade.
ambiente diminui resultando em um melhor balanceamento de
carga mas em uma pior utilização dos recursos.
Considerando as Figuras 8 (a) e 9 (a), foi computado o consumo de energia como declarado na Equação 5. Considerando
esta métrica e o tempo da aplicação, é possível calcular o
custo conforme a Equação 6. A ideia final referente ao custo
é sumarizada na Equação 7, em que s1 significa o cenário
com AutoElastic e elasticidade habilitada e s2, o cenário
com AutoElastic e elasticidade desabilitada. Considerando esta
equação, o objetivo é ou reduzir o tempo evitando grande
penalidade de recursos para isso ou apresentar um tempo
2015 XLI Latin American Computing Conference (CLEI)
CPU Usada
CPU Alocada
1
2
3
4
5
6
7
8
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
50000
60000
70000
80000
90000
CPU
(a)
1
2
3
4
5
6
7
8
0
10000
20000
30000
40000
CPU
(b)
1 Crescente com elasticidade
3 Constante com elasticidade
5 Decrescente com elasticidade
7
Onda com elasticidade
2 Crescente sem elasticidade
4 Constante sem elasticidade
6 Decrescente sem elasticidade
8
Onda sem elasticidade
Fig. 10: Eficiência obtida pelas execuções que obtiveram os menores tempos de execução com e sem elasticidade: (a) iniciando
com 2 nós e (b) iniciando com 4 nós.
ligeiramente maior que a execução não elástica mas melhorando a utilização de recursos. A Figura 11 ilustra os custos
obtidos nos cenários com 2 e 4 nós iniciais. A elasticidade é
responsável pelos melhores resultados no primeiro caso para
todas as cargas avaliadas. Por outro lado, a falta de reatividade
e thresholds fixos foram a principal razão para os resultados
no segundo caso. Em outras palavras, a aplicação executa
ineficientemente durante um longo período de tempo até atingir
o threshold. A previsão do comportamento da aplicação e
thresholds adaptáveis poderiam ajudar a melhorar o desempenho da aplicação quando utilizando configurações com um
grão de computação reduzido (índice que pode ser estimado
dividindo o trabalho envolvido nas tarefas de computação pelos
custos de comunicação de rede).
Energias1 ⇥ T empoAplics1 < Energias2 ⇥ T empoAplics2
(7)
AutoElastic com a elasticidade desabilitada
AutoElastic com a elasticidade habilitada
Custo [x 1000000]
2 Nós
4 Nós
24
22
20
18
16
14
12
10
8
6
4
2
0
Constante
Crescente Decrescente
Onda
Constante
Crescente Decrescente
Onda
Carga
Fig. 11: Custo (Equação 6) das execuções que obtiveram os
menores tempos de execução com e sem elasticidade.
VI.
C ONCLUSÃO
Este artigo apresentou o modelo AutoElastic, enfatizando
seu funcionamento no escopo de aplicações HPC variando
tanto os thresholds quanto o padrão de carga da aplicação.
Considerando as questões listadas na Seção III, AutoElastic age em nível de middleware objetivando aplicações de
passagem de mensagens com paralelismo explícito, as quais
utilizam diretivas para enviar e receber dados, bem como para
conectar processos que se comunicam. Particularmente, foi
adotada esta decisão de projeto devido ao fato da fácil implementação destas diretivas em MPI 2.0, o qual oferece uma
API de programação no estilo sockets para criação dinâmica
de processos. Além disso, considerando os requisitos de tempo
de aplicações HPC, foi modelado um framework para habilitar
uma nova funcionalidade denotada elasticidade assíncrona, em
que a alocação e a consolidação de VMs ocorre em paralelo
com a execução da aplicação.
A principal contribuição deste trabalho é a análise conjunta
de um modelo de elasticidade e uma aplicação HPC ao variar
ambos os parâmetros de elasticidade e padrões de carga. Assim, a discussão aqui pode ajudar programadores a configurar
thresholds de elasticidade para explorar melhor desempenho
e utilização de recursos em demandas dirigidas por CPU. Os
resultados mostraram que a eficácia da elasticidade depende:
(i) do grão computacional da aplicação; (ii) da reatividade
da elasticidade. Assim, foi demonstrado que uma aplicação
intensiva quanto ao uso de CPU pode executar mais rápido
com a elasticidade em comparação com outros cenários em
que a quantidade de recursos é fixa e/ou reduzida. Além
disso, foi observado que um threshold superior (que conduz
o alargamento da infraestrutura) próximo a 100% pode ser
visto como uma má escolha devido a aplicação executar
desnecessariamente com recursos sobrecarregados até atingir
2015 XLI Latin American Computing Conference (CLEI)
este limite. Nos testes realizados, o menor valor para este
parâmetro foi 70%, o qual resultou nos melhores desempenhos
considerando todos os padrões de carga.
Trabalhos futuros consistem em estudar thresholds adaptáveis a fim de gerar melhor reatividade nas ações elásticas, considerando ambas métricas de desempenho e energia. Embora a aplicação de integral numérica ser útil para
avaliar as contribuições de AutoElastic, pretende-se explorar
a elasticidade em aplicações irregulares e em benchmarks
tradicionais de HPC [27]. Por fim, planeja-se também estender
AutoElastic para para cobrir elasticidade em outros modelos de
programação paralela, tais como divisão-e-conquista, pipeline
e bulk-synchronous parallel (BSP).
[11]
[12]
[13]
[14]
[15]
AGRADECIMENTOS
Este trabalho foi parcialmente suportado pelos seguintes
órgãos brasileiros de fomento: CAPES, CNPq e FAPERGS.
Em adição, os autores também agradecem ao grupo Santander
pelo apoio e patrocínio.
[16]
R EFERENCES
[17]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
M. Mohan Murthy, H. Sanjay, and J. Anand, “Threshold based auto
scaling of virtual machines in cloud environment,” in Network and
Parallel Computing, ser. Lecture Notes in Computer Science, C.-H.
Hsu, X. Shi, and V. Salapura, Eds. Springer Berlin Heidelberg, 2014,
vol. 8707, pp. 247–256.
J. Bao, Z. Lu, J. Wu, S. Zhang, and Y. Zhong, “Implementing a
novel load-aware auto scale scheme for private cloud resource management platform,” in Network Operations and Management Symposium
(NOMS), 2014 IEEE, May 2014, pp. 1–4.
S. Sah and S. Joshi, “Scalability of efficient and dynamic workload
distribution in autonomic cloud computing,” in Issues and Challenges
in Intelligent Computing Techniques (ICICT), 2014 International Conference on, Feb 2014, pp. 12–18.
A. Raveendran, T. Bicer, and G. Agrawal, “A framework for elastic
execution of existing mpi programs,” in Proceedings of the 2011 IEEE
Int. Symposium on Parallel and Distributed Processing Workshops and
PhD Forum, ser. IPDPSW ’11. Washington, DC, USA: IEEE Computer
Society, 2011, pp. 940–947.
P. Jamshidi, A. Ahmad, and C. Pahl, “Autonomic resource provisioning
for cloud-based software,” in Proceedings of the 9th International
Symposium on Software Engineering for Adaptive and Self-Managing
Systems, ser. SEAMS 2014. New York, NY, USA: ACM, 2014, pp. 95–
104. [Online]. Available: http://doi.acm.org/10.1145/2593929.2593940
E. F. Coutinho, G. Paillard, and J. N. de Souza, “Performance
analysis on scientific computing and cloud computing environments,”
in Proceedings of the 7th Euro American Conference on
Telematics and Information Systems, ser. EATIS ’14.
New
York, NY, USA: ACM, 2014, pp. 5:1–5:6. [Online]. Available:
http://doi.acm.org/10.1145/2590651.2590656
R. R. Expósito, G. L. Taboada, S. Ramos, J. Touriño, and R. Doallo,
“Evaluation of messaging middleware for high-performance cloud
computing,” Personal Ubiquitous Comput., vol. 17, no. 8, pp. 1709–
1719, Dec. 2013. [Online]. Available: http://dx.doi.org/10.1007/s00779012-0605-3
B. Cai, F. Xu, F. Ye, and W. Zhou, “Research and application of migrating legacy systems to the private cloud platform with cloudstack,” in
Automation and Logistics (ICAL), 2012 IEEE International Conference
on, aug. 2012, pp. 400 –404.
D. Milojicic, I. M. Llorente, and R. S. Montero, “Opennebula: A cloud
management tool,” Internet Computing, IEEE, vol. 15, no. 2, pp. 11
–14, march-april 2011.
X. Wen, G. Gu, Q. Li, Y. Gao, and X. Zhang, “Comparison of opensource cloud management platforms: Openstack and opennebula,” in
Fuzzy Systems and Knowledge Discovery (FSKD), 2012 9th International Conference on, may 2012, pp. 2457 –2461.
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
D. Chiu and G. Agrawal, “Evaluating caching and storage options on
the amazon web services cloud,” in Grid Computing (GRID), 2010 11th
IEEE/ACM International Conference on, oct. 2010, pp. 17 –24.
M. Mao, J. Li, and M. Humphrey, “Cloud auto-scaling with deadline and
budget constraints,” in Grid Computing (GRID), 2010 11th IEEE/ACM
International Conference on, oct. 2010, pp. 41 –48.
P. Martin, A. Brown, W. Powley, and J. L. Vazquez-Poletti, “Autonomic
management of elastic services in the cloud,” in Proceedings of the 2011
IEEE Symposium on Computers and Communications, ser. ISCC ’11.
Washington, DC, USA: IEEE Computer Society, 2011, pp. 135–140.
L. Beernaert, M. Matos, R. Vilaça, and R. Oliveira, “Automatic
elasticity in openstack,” in Proceedings of the Workshop on Secure
and Dependable Middleware for Cloud Monitoring and Management,
ser. SDMCMM ’12. New York, NY, USA: ACM, 2012, pp. 2:1–2:6.
[Online]. Available: http://doi.acm.org/10.1145/2405186.2405188
W. Dawoud, I. Takouna, and C. Meinel, “Elastic vm for cloud resources
provisioning optimization,” in Advances in Computing and Communications, ser. Communications in Computer and Information Science,
A. Abraham, J. Lloret Mauri, J. Buford, J. Suzuki, and S. Thampi, Eds.
Springer Berlin Heidelberg, 2011, vol. 190, pp. 431–445.
S. Imai, T. Chestna, and C. A. Varela, “Elastic scalable cloud computing using application-level migration,” in Proceedings of the 2012
IEEE/ACM Fifth International Conference on Utility and Cloud Computing, ser. UCC ’12. Washington, DC, USA: IEEE Computer Society,
2012, pp. 91–98.
M. Mihailescu and Y. M. Teo, “The impact of user rationality in
federated clouds,” Cluster Computing and the Grid, IEEE International
Symposium on, vol. 0, pp. 620–627, 2012.
B. Suleiman, “Elasticity economics of cloud-based applications,” in
Proceedings of the 2012 IEEE Ninth International Conference on
Services Computing, ser. SCC ’12.
Washington, DC, USA: IEEE
Computer Society, 2012, pp. 694–695.
D. Rajan, A. Canino, J. A. Izaguirre, and D. Thain, “Converting a high
performance application to an elastic cloud application,” in Proceedings
of the 2011 IEEE Third International Conference on Cloud Computing
Technology and Science, ser. CLOUDCOM ’11. Washington, DC,
USA: IEEE Computer Society, 2011, pp. 383–390.
T. Knauth and C. Fetzer, “Scaling non-elastic applications using virtual
machines,” in Cloud Computing (CLOUD), 2011 IEEE International
Conference on, july 2011, pp. 468 –475.
X. Zhang, Z.-Y. Shae, S. Zheng, and H. Jamjoom, “Virtual machine
migration in an over-committed cloud,” in Network Operations and
Management Symposium (NOMS), 2012 IEEE, april 2012, pp. 196 –
203.
F. Azmandian, M. Moffie, J. Dy, J. Aslam, and D. Kaeli, “Workload
characterization at the virtualization layer,” in Modeling, Analysis
Simulation of Computer and Telecommunication Systems (MASCOTS),
2011 IEEE 19th International Symposium on, July 2011, pp. 63–72.
Y. Lee, R. Avizienis, A. Bishara, R. Xia, D. Lockhart, C. Batten,
and K. Asanovic, “Exploring the tradeoffs between programmability
and efficiency in data-parallel accelerators,” in Computer Architecture
(ISCA), 2011 38th Annual International Symposium on, 2011, pp. 129–
140.
J. Baliga, R. Ayre, K. Hinton, and R. Tucker, “Green cloud computing:
Balancing energy in processing, storage, and transport,” Proceedings of
the IEEE, vol. 99, no. 1, pp. 149–167, 2011.
M. Comanescu, “Implementation of time-varying observers used in
direct field orientation of motor drives by trapezoidal integration,”
in Power Electronics, Machines and Drives (PEMD 2012), 6th IET
International Conference on, 2012, pp. 1–6.
F. Al-Haidari, M. Sqalli, and K. Salah, “Impact of cpu utilization
thresholds and scaling size on autoscaling cloud resources,” in Cloud
Computing Technology and Science (CloudCom), 2013 IEEE 5th International Conference on, vol. 2, Dec 2013, pp. 256–261.
L. Jin, D. Cong, L. Guangyi, and Y. Jilai, “Short-term net feeder load
forecasting of microgrid considering weather conditions,” in Energy
Conference (ENERGYCON), 2014 IEEE International, May 2014, pp.
1205–1209.

Documentos relacionados