Estudo comparativo de ferramentas de simulação para computação em nuvem Alexandre Barreiro Neto (ICV/Unioeste/PRPPG), Luiz Antonio Rodrigues (Orientador), e-mail: [email protected] Universidade Estadual do Oeste do Paraná/Centro de Ciências Exatas e Tecnológicas/Cascavel, PR Grande área e área: Ciências Exatas e da Terra, Ciência da Computação Palavras-chave: Sistemas Distribuídos, Computação em Nuvem, Simulação Resumo Mesmo com os avanços presentes na computação, o estabelecimento de uma estrutura de sistemas distribuídos para realizar testes em larga escala é custoso. A vantagem de utilizar simuladores é pelo fato de apresentarem resultados satisfatórios, o que muitas vezes seria inviável realizar no mundo real, pois, através da repetição dos mesmos, o desperdício de recursos seria evitado. Outra vantagem é o provisionamento dinâmico de recursos e sua escalabilidade. Neste trabalho foram comparadas diversas ferramentas de simulação para computação em nuvem. Introdução Para (Couloris et all ., 2007), um sistema distribuído é aquele no qual o hardware e o software estão localizados em computadores conectados por uma rede, como a Internet, que se comunicam e coordenam suas ações enviando mensagens entre si. Um dos principais motivos para se construir e usar sistemas distribuídos é compartilhar recursos. A computação em nuvem permite realizar o compartilhamento de recursos (memória, disco, processamento, rede, entre outros) através da Internet. A vantagem da utilização deste modelo, de acordo com (Buyya et all ., 2011), é o provisionamento dinâmico de recursos e sua escalabilidade. A utilização de um simulador de computação em nuvem ajuda a modelar novas aplicações distribuídas através da criação de máquinas virtuais, data centers entre outros módulos que podem ser adicionados, facilitando sua análise. Este trabalho tem como objetivo avaliar alguns simuladores e apresentar os mais viáveis para aplicação de algoritmos distribuídos. Revisão de Literatura A Computação em nuvem descrito em (Mell & Grance, 2009), é um modelo tecnológico que permite, de forma simples o acesso sob demanda a uma rede, a qual possui vários recursos computacionais configuráveis. Dentre esses, podemos citar às redes, servidores, storages, aplicações e serviços que podem ser facilmente configurados e liberados com um esforço de gerenciamento mínimo e automatizado. A simulação de sistemas complexos como os utilizados na computação em nuvem é uma alternativa para agilizar o procedimento de testes e permitir a repetição dos experimentos com baixo custo. Há uma variedade de simuladores de computação em nuvem, porém, serão discutidos apenas os mais utilizados atualmente. O CloudSim (Calheiros et all ., 2010) é uma ferramenta generalizada para modelagem e simulação de computação em nuvem, infraestrutura e serviços de aplicativos. Dentre várias, é uma das que mais se destaca para aplicações em nuvem. Suas principais vantagens em relação aos testes de desempenho incluem a eficácia de tempo, pois exige menos esforço e tempo para implementação dos aplicativos baseados em computação em nuvem. Ela também disponibiliza recursos para modelagem e simulação em ambientes de computação em larga escala, e possui uma certa facilidade para simulação de um ambiente em nuvem. Há também outros módulos da ferramenta que integram novas funcionalidades ao CloudSim. O GreenCloud (Kliazovich et all ., 2010) é um simulador de pacotes para centro de dados de computação em nuvem. Seu objetivo está relacionado a consistência em relação ao consumo de energia e também em oferecer uma modelagem detalhada de energia consumida pelos equipamentos, como servidores, switches de rede e links de comunicação. Ele é uma extensão do simulador de rede NS-2 bastante conhecido, possui código aberto e pode ser utilizada para o desenvolvimento de novas soluções em monitoramento, alocação de recursos e otimização de protocolos de comunicação e infraestruturas de rede. O iCanCloud (Arcos, 2013) é um software de simulação para redes de armazenamento de grande porte, desenvolvido com base no SIMCAN. Além de disponibilizar métodos para obtenção do consumo de energia de cada componente de hardware, fornece uma interface amigável que facilita a geração e personalização de grandes modelos distribuídos. O software também aceita vários métodos para aplicações, usando simulações de aplicações reais, gráfico de estados e programação de novas aplicações diretamente na plataforma de simulação. O MDCSIM é um dos módulos da ferramenta CloudSim. Ele permite ao usuário medir a energia e também analisar cada camada dentre as três existentes. Pode também, fazer com que o utilizador da ferramenta modifique uma camada sem afetar as outras. A linguagem de programação utilizada pode C++ ou Java. O GroudSim é um simulador proposto por (Osterman et all ., 2014), é baseado em eventos que necessita apenas de uma thread de simulação para aplicações científicas em ambientes de grade e em nuvem. O software concentra-se principalmente na IaaS e fornece um conjunto abrangente de recursos para cenários de simulações complexas. O usuário pode simular suas experiências a partir do mesmo ambiente usado para aplicações reais, integrando-o no ambiente Askalon. A ferramenta SPECI proposto por (Siriam, 2009) é uma ferramenta de simulação que permite analisar e simular o comportamento e o desempenho de grandes centro de dados. É composto por dois pacotes: layout do data center juntamente com sua topologia, e também componentes para execução do experimento e medições a serem realizadas. O SimGrid (Casanova et all ., 2014) é uma ferramenta científica bastante conhecida para simulação de ambientes de programação distribuída, como sistemas P2P Grids, Clouds ou HPC. Ela possui ambientes para simulação de, aplicações MPI, aplicações genéricas e distribuídas. Também possui um ambiente que providencia todas funcionalidades de simulação do SimGrid. As aplicações podem ser desenvolvidas utilizando às linguagens de programação Java, C, Scala, e Lua. O Neko, proposto por (Urbán et all ., 2001) é um framework Java que permite tanto a simulação de algoritmos distribuídos e a execução dos mesmos em um ambiente real utilizando o mesmo código. Resultados e Discussão As ferramentas analisadas possuem diversas características. Para melhor utilização da mesma, os principais pontos analisados foram: Linguagem utilizada, Estrutura de Computação em Nuvem, Extensão para Aplicações Distribuídas e Documentação, como apresentado na tabela abaixo. Tabela 1 – Comparação entre a disponibilidade de recursos dos simuladores. Ferramenta Linguagem Estrutura de Extensão para Documentação Computação Aplicações em Nuvem Distribuídas CloudSim Java Sim Sim Sim GreenCloud C++, Otcl Sim Sim Sim iCanCloud C++ Sim Sim Sim MDCSIM Java, C++ Não Não Sim GroudSim Java Sim Sim Sim SPECI Java Sim Não Sim SimGrid Java, C, Scala, Lua Sim Sim Sim Neko Java Não Sim Sim Conclusões Grande parte dos simuladores utilizam Java, o que os torna portáveis para diferentes plataformas. Apenas as ferramentas Neko e MDCSIM não possuem suporte ou extensão para a computação em nuvem, mas na Neko isso poderia ser adicionado com uma modificação do framework. As ferramentas MDCSIM e SPECI não possuem extensão para a simulação de aplicações distribuídas. Sobre a documentação, todas as ferramentas possuem um guia que auxilia o usuário a instalação e utilização das mesmas, porém alguns podem apresentar mais detalhes. Agradecimentos Como membro do PETComp agradeço ao Programa de Educação Tutorial do Ministério da Educação (PET-MEC/SESu) pelo apoio à pesquisa. Referências Arcos. (2013). What is iCanCloud?. ~icancloud/Home.html. Acesso em: 23 de Jul. 2015. http://www.arcos.inf.uc3m.es/ Buyya, R; Broberg, J; Goscinski, M. A. (2011). Cloud Computing Principles and Paradigms. Wiley Publishing. Calheiros, N. R., Ranjan, R., Beloglazov, A., De Rose F. A. C., Buyya, R. (2010). CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms. Wiley Online Library 41, 23-50. Casanova, H., Giersch, A., Legrand, A., Quinson, M., Sutero, F. (2014). Versatile, Scalable, and Accurate Simulation of Distributed Applications and Platforms. http://hal.inria.fr/hal-01017319/PDF/simgrid3-journal.pdf. Acesso 23 de Julho de 2015. Couloris, G; Dollimore, J.; Kindberg, T. (2007). Sistemas distribuídos: conceitos e projeto. 4.ed. Porto Alegre, RS. Mell, P., Grance, T. (2009). The NIST Definition of Cloud Computing. http://www.nist.gov/itl/cloud/upload/cloud-def-v15.pdf. Acesso: 25 Jul. 2015. Osterman, S., Plankensteiner, K., Prodan, R., Fahringer, T. (2010). Groudsim: An Event-Based Simulation Framework for Computational Grids and Clouds. CoreGRID/ERCIM Workshop on Grids and Clouds 2, 1-8. Siriam, I. (2009). Speci, a Simulation Tool Exploring Cloud-Scale Data Centres. CloudCom LNCS 5931 1, 381-392. Urbán, P., Défago, X., Schiper, A. 2001. Neko: A Single Environment to Simulate and Prototype Distributed Algorithms. IEEE INTL CONF. ON INFORMATION NETWORKING 1, 503-511. Kliazovich, D., Bouvry, P., Khan, U.S. (2010). GreenCloud: The green cloud simulator. http://greencloud.gforge.uni.lu/ftp/greencloud.pdf. Acesso em 23 de Julho de 2015.