Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação Grid Computing Motivação Anos 70 -> mainframe: computação centralizada Anos 80 -> descentralização, uso de redes locais criou Ilhas computacionais nas instituições Baixo nível de utilização: estações de trabalho passam maior tempo ociosas Distribuição desproporcional de carga de trabalho: alguns servidores passam ocupados a maior parte do tempo enquanto outros não Necessidade de alto poder de processamento atual e tende a aumentar no futuro Necessidade de ambiente dinâmico, auto-ajustável, com alta disponibilidade, com escalável, TCO adequado Motivação Como cientistas podem fazer para trocar informações de forma transparente entre instituições ? Como proporcionar a demanda de recursos necessários pelas aplicações ? Como melhor aproveitar os recursos disponíveis? Como integrar diferentes tipos de recursos = Ambiente heterogêneo? Como gerenciar a enorme quantidade de recursos existentes? Motivação Observações sobre clusters a) limitação de número de nodos pelo sistema b) escalabilidade do desempenho: aplicação precisa estar preparada c) overhead das atividades de gerenciamento do próprio cluster: ganho não linear – aproveitamento de somente 80% da capacidade do poder de cada máquina envolvida d) desempenho depende da característica da aplicação. Escrita em excesso degrada performance e) Flexibilidade de configuração: é permitido existir diferentes sistemas operacionais ? f) Diferentes protocolos podem ser usados ? g) Sistema de arquivo: existe sistema de volume lógicos (virtuais) ? h) Recursos de gerenciamento: pode-se gerenciar o cluster de forma descentalizada ? j) transparência: não obrigar usuário a alterar seus sistemas para tirar proveito da solução Passo evolutivo Grid Computing !!! Grid: um novo modelo computacional É uma evolução da computação distribuída Analogia a rede elétrica tradicional que fornece energia de forma transparente e sob demanda Tem como objetivo criar a ilusão de um e poderoso computador virtual através da interconexão de vários sistemas heterogêneos que compartilham recursos entre si Tem como proposta ser uma infra-estrutura de computação que atende às necessidades computacionais dos usuários abstraindo os detalhes de como esse atendimento é realizado Distribuição geográfica dos sistemas, exigindo recursos administrativos e gerenciais que permitam autonomia entre os diversos sites Sistemas heterogêneos Altamente escalável Ambiente completamente dinâmico. Adaptativo, ocorre a autoconfiguração quando um nodo entra ou sai do ambiente Foco das aplicações é o compartilhamento de recursos em grande escala Surge o conceito de Organizações virtuais Organização virtual Paradigma administrativo de redes virtuais organizacionais Rede é um tipo organização dinâmico e cooperativo criada para explorar as oportunidades do mercado Rede baseia-se em competências especializadas onde cada membro contribui com conhecimento especifico para melhora do todo Mudança na hierarquia rígida das organizações tradicionais. Hierarquia tende a desaparecer para haver cooperação de múltiplos especialistas de diversas áreas Organização virtual Propõe o uso compartilhado de recursos pela organização Capacidade de organização de diferentes comunidades com diferentes propósitos e diferentes políticas Membros de uma organização podem participar de outra organização Virtualização de recursos: homogeneização dos recursos usados pela organização Organização virtual Instituição 1 Instituição 2 Legenda Organização virtual Recurso compartilhado Instituição 3 Estrutura de organização virtual Definição de grid “É um ambiente computacional distribuído paralelo que tem como objetivo alcançar a interoperabilidade entre as organizações virtuais, através da habilidade de cooperação, de compartilhamento e agregação de recursos computacionais geograficamente distribuídos de forma a disponibilizá-los como recursos e serviços.” Exemplo de uma grid simples dentro de uma organização Exemplo de uma grid complexa interligando diferentes organizações Estrutura de uma grid Camada de aplicações Portais de acesso e programas que exploram a potencialidade das grids Serviços orientados aos usuários Ambiente de programação em grid Middleware Serviços básicos como gestão de recursos distribuidos Elementos básicos Recursos computacionais como servidores, desktops e seus sistemas operacionais Arquitetura da grid Estrutura: é responsável diretamente pelo compartilhamento e gerenciamento de acesso aos recursos da grade. Conectividade: é responsável pela definição dos protocolos que são utilizados na comunicação entre os recursos da grade Recursos: é a camada responsável pelo monitoramento e controle de recursos. Serve como uma camada intermediária entre as camadas superiores e as mais baixas Coletividade: proporciona mecanismos para que aconteça o compartilhamento e a alocação de recursos de forma global dentro da grade. Esses mecanismos estão relacionados diretamente ao gerenciamento das organizações virtuais existentes no ambiente. Aplicação: é a camada onde ficam as aplicações que fazem o uso das funcionalidades proporcionadas pela grade computacional. Comparação do modelo de camadas da arquitetura de grades computacional em relação à arquitetura Internet O que a grid pode fazer ? Compartilhamento de processamento Execução de tarefas paralelamente Tarefas são “quebradas” em pequenas partes (jobs) e estas então alocadas para execução em diferentes computadores No final o resultado de cada um desses jobs é recuperado e então o resultado final obtido O que a grid pode fazer ? Balanceamento de recursos: a carga de execução das tarefas é distribuída igualmente entre as máquinas componentes da grid Aproveitamento de recursos não utilizados: as máquinas que estão ociosas (por exemplo, durante a madrugada ou no horário do almoço) podem ser utilizadas para execução de tarefas) O que a grid pode fazer ? Compartilhamento de disco São criados “data grids” que são vistos como grandes unidades de armazenamento. Os dados são gravados de forma distribuída entre os diferentes componentes da grid Grid mantém controle sobre como recuperar e gravar os dados Usuário tem acesso aos dados de forma transparente O que a grid pode fazer ? Confiança na execução de trabalhos críticos Tarefas críticas podem ser executadas em mais de um local de forma simultânea, caso algum dos locais falhe ou o resultado não seja o desejável o resultado do outro local é utilizado O que a grid pode fazer ? Gerenciamento de grandes ambientes de forma simplificada e centralizada: no momento em que um equipamento é conectado na grid ele passa a ser visto como um nodo da rede. Suas características são abstraídas O gerente ou a aplicação preocupa-se em acessar nodos e não equipamentos específicos Paralelo Grid x Cluster Cluster Grid Solucionar problemas da organização = Disponibilizar recursos e serviços de uma Local forma geograficamente distribuída Gerenciamento por uma autoridade central Cada organização virtual gerencia seus recursos mantendo a visão única do sistema Voltado a performance e disponibilidade Além disso prioridade para prestação de serviços Custo para a organização Custo dissolvido entre as organizações Devido a natureza das aplicações não Permite latência devido as aplicações permite latência na comunicação paralelas possuírem pouca ou nenhuma comunicação entre as tasks Exemplos de uso de grid Projeto SETI@Home: projeto pioneiro de uso de grade computacional em grande escala e tem por finalidade a busca de vida inteligente fora da terra. Url: http://setiathome.berkley.edu Exemplos de uso de grid ChessBrain: busca criar um supercomputador virtual capaz de jogar xadrez utilizando a capacidade ociosa de milhares de máquinas. Url: http://www.chessbrain.net Exemplos de uso de grid Climaprediction: através do uso da capacidade ociosa de computadores busca fazer a simulação do sistema climático para facilitar a maior compreensão dos fenomemos envolvidos nas mudanças do clima Url: http://www.climaprediction.net Grid.org: concentra vários projetos filantrópicos que fazem uso de grade computacional. Entre os projetos está um relacionado a cura do câncer. Url: http://www.grid.org/projects/cancer Exemplos de uso de grid Distributed.net: é formado por milhares de computadores distribuídos em todo o mundo. Tem o poder computacional equivalente a mais de 160.000 computadores pentium 266Mhz trabalhando 24 horas por dia. Entre os mais interessantes resultados obtidos por esse projeto está a quebra de um algoritmo de criptografia do laboratório RSA com chave de 56 bits considerado imune a quebras em 212 dias, a quebra da chave do DES-II-1 em 40 dias e também a quebra de criptografia com chave de 64 bits em 1757 dias. Url: http://www.distributed.net FightAIDS@Home: é um projeto que visa efetuar simulações de novas drogas contra a ADIS através da ociosidade de computadores voluntários. Url: http://www.fightaidsathome.org Folding@home: projeto destinado ao processamento de proteínas do corpo humano, essa área é considerada chave nas pesquisas da moderna biofísica molecular. Url: http://www.stanford.edu/group/panedgroup/folding Exemplos de uso de grid Exemplos de grid de alto desempenho Teragrid é um dos maiores projetos de grade. Foi criado pelo laboratório de Argone e financiado pelo Departamento de Energia dos Estados Unidos. Interliga 8 centros de computação de alto desempenho. Sua capacidade é de mais de 20 trilhões de pontos flutuantes por segundo. Isso equivale a 8 vezes a velocidade do mais poderoso super-computador atual. Url: http://www.teragrid.org Eurogrid: projeto custeado por países da Comissão Européia. Visa dar suporte a computação de alto desempenho a projetos como BioGrid (pesquisas biomoleculares), MeteoGrid (pesquisas meteorológicas), CAEGrid (projetos de engenharia baseados em Computer Aided Engineering), HPC Research grid (projetos de simulações físicas). Url: http://www.eurogrid.org Exemplos de uso de grid Exemplos de grid de alto desempenho (continuação) DataGrid: projeto europeu que visa proporcionar computação de alto desempenho para pesquisadores europeus tanto acadêmicos quanto da indústria. Url: httpd://www.eu-datagrid.org DOE Science grid: projeto criado pelo DOE dos EUA para projetos de pesquisa relacionados com a área de energia. Url: http://doesciencegrid.org Nasa Information Power Grid: desenvolvido pela Nasa para auxiliar no desenvolvimento de pesquisas e simulações espaciais. Url: http://www.ipg.nasa.gov Exemplos de uso de grid Exemplos de uso de grid no Brasil Grid Rio: projeto que envolve instituições acadêmicas do estado do Rio de Janeiro Url: (http://easygrid.ic.uff.br/grid/GridRio.html) CBPF: projeto experimental para uso de grade computacional em simulações físicas. Url: http://www.cbpf.br GRADE: projeto desenvolvido pelo Laboratório Nacional de Computação Científica (LNCC). Tem por objetivo a construção de uma grade composta por cluster distribuídos geograficamente. Url: http://www.lncc.br Grid-M: projeto para desenvolvimento de grid para dispositivos móveis e embarcados UFSC URL: http://grid.lrg.ufsc.br Softwares para grid Globus Unicore Legion Condor Gridbus