Desde a década de 1970 a demanda por poder computacional, armazenamento e comunicação vem crescendo em um ritmo exponencial com o tempo. Até o fim da década de 1990 essas necessidades vinham sendo supridas com aperfeiçoamentos nas arquiteturas dos computadores e melhorias no processo produtivo. A Lei de Moore continuava se mostrando válida, duplicando o poder dos computadores e servidores a cada 18 meses e, junto com esse aumento, impondo uma necessidade energética cada vez maior para manter o computador funcionando e refrigerado. Porém, com a chegada dos anos 2000 percebeu-se que o projeto de processadores encontrou uma barreira de potência. Processadores da época, tal como o Pentium 4, dissipavam 100W de potência e sua eficiência energética era baixa. [5] Assim, surgiu uma nova tendência, processadores mais simples e mais paralelos utilizando novas técnicas de economia de energia. Em suma, surgiu uma demanda por uma computação mais "verde" (green computing).
Dentro desse contexto surgiu o conceito de computação em nuvem. Apesar de ainda haver controvérsias na sua definição precisa, esse paradigma preza pela noção de utilizar recursos computacionais como poder de processamento, armazenamento e comunicação como um serviço. O pagamento pelos serviços é feito apenas considerando o que foi utilizado, tal como acontece com o fornecimento de energia elétrica. O objetivo final da computação em nuvem é concentrar dados para prover um serviço ubíquo ao usuário, empresas ou pessoas físicas, que delegariam a gestão dessa informação a terceiros competentes para prover um serviço de qualidade e seguro. Grandes empresas da área de tecnologia possuem soluções de computação em nuvem, dentre as quais podemos citar Amazon, Google, Microsoft, IBM, EMC, etc.
Uma importante vantagem da computação em nuvem é que com essa concentração de dados e serviços é possível desenvolver técnicas de otimização do uso de grandes data centers. Segundo estudo realizado por Barroso e Hölzle [4] em 5000 servidores do Google, raramente eles permanecem completamente ociosos e dificilmente operam próximos da sua utilização máxima. Na maior parte do tempo estão trabalhando entre 10% e 50% do nível máximo. Os autores mostram que justamente nessa faixa de utilização tais servidores são menos eficientes energeticamente. Computação em nuvem é uma candidata a ajudar a melhorar essa perspectiva. Através de virtualização e reposicionamento automático de máquinas virtuais no data center de maneira transparente, uma realidade em produtos pagos ou livres, é possível dimensionar qual parcela do data center estará ativa em um dado momento dependendo da demanda. Vários servidores com pouca utilização poderiam ser, por exemplo, virtualizados em um único servidor físico de modo que este trabalhe com uma utilização que seja mais eficiente.
Em um nível mais técnico, uma nuvem é desenhada para executar tarefas, estas subdivididas em subtarefas. Cada subtarefa pode possuir uma demanda específica de ambiente para ser executada, sistema operacional, programas instalados, poder mínimo de processamento, armazenamento, etc. Ainda, subtarefas podem depender de que uma subtarefa anterior tenha sido concluída antes de poder ser executada. Em [1] e [2] Chaves e Batista mostraram que é possível modelar tais tarefas como digrafos acíclicos (DAGs) que incorporem as demandas de ambiente. Ainda, desenvolveram uma heurística para escalonar as subtarefas em computação em grade (grid computing), similar à computação em nuvem, visando diminuir o tempo de conclusão da tarefa através da otimização do tráfego de rede necessário.
Este trabalho tem por intenção desenvolver uma nova heurística para o problema apresentado que também otimize o consumo energético sem grandes prejuízos ao tempo de execução da tarefa. Seu desempenho deve ser comparado com a heurística proposta por Chaves e Batista em [1] e [2] e com outros algoritmos com objetivos similares encontrados na literatura. Para isso será feito uso de um simulador de computação em nuvem.
Este trabalho tem por objetivo desenvolver uma heurística para o problema apresentado em [1] e [2] para otimizar o consumo energético de servidores de um data center que estejam sendo utilizados para executar tarefas de aplicações em nuvens. Para isso, será feito primeiramente um estudo amplo do estado da arte na área para em seguida desenvolver um algoritmo que tenha como entrada uma tarefa modelada como um DAG tal como descrito nos trabalhos citados e que retorne um DAG modificado para garantir um consumo energético menor sem prejudicar substancialmente o tempo de conclusão da tarefa. Por fim, esse algoritmo será testado em um simulador de computação em nuvem, tal como o apresentado em [3], para verificar sua eficácia com relação ao tempo de processamento do DAG, tempo esperado de conclusão da tarefa e consumo energético esperado. Caso os resultados sejam significativos possivelmente será estudada a possibilidade de converter a monografia em um artigo a ser submetido a algum congresso da área. É importante observar que esta monografia propõe uma heurística porque a busca pelo escalonamento ótimo de tarefas dependentes é um problema NP-difícil.
Até o momento foi estudada uma bibliografia composta por artigos que abordam as áreas de escalonamento de tarefas em grades computacionais, simuladores de computação em nuvem promissores para os trabalho a ser desenvolvido, análises do consumo energético de servidores e, por fim, estudos publicados sobre as vantagens energéticas de utilizar tecnologias de virtualização. A maioria dos trabalhos foi publicada em periódicos ou eventos científicos relevantes enquanto que alguns são "white papers" produzidos pela indústria. O software Mendeley está sendo utilizado para agregar a bibliografia consultada. É possível ver na página do TCC no site todos os textos lidos para esta monografia. No blog do TCC foram apresentadas de maneira informal algumas das informações obtidas durante as leituras.
Como ferramental de simulação, foram estudados três programas diferentes: CloudSim, GridSim e SimGrid. As análises preliminares das funcionalidades e vantagens de cada um deles estão descritas em dois posts do blog do TCC: Estudo do CloudSim e Estudos do GridSim e SimGrid. Todo o desenvolvimento do TCC poderá ser acompanhado no repositório do TCC no GitHub.
| Atividade | Mar | Abr | Mai | Jun | Jul | Ago | Set | Out | Nov | Dez |
|---|---|---|---|---|---|---|---|---|---|---|
| Leitura da bibliografia | • | • | • | • | • | • | ||||
| Implementação de algoritmos de referência | • | • | ||||||||
| Desenvolvimento de novo algoritmo | • | • | • | • | ||||||
| Simulações | • | • | • | • | ||||||
| Monografia | • | • | • | • | • | |||||
| Pôster | • | |||||||||
| Apresentação | • | |||||||||
| Artigo | • |
Parte Objetiva
Parte Subjetiva