7 resultados para xarxa distribuïda
em Lume - Repositório Digital da Universidade Federal do Rio Grande do Sul
Resumo:
A simulação paralela de eventos é uma área da computação que congrega grande volume de pesquisas, pela importância em facilitar o estudo de novas soluções nas mais diferentes áreas da ciência e tecnologia, sem a necessidade da construção de onerosos protótipos. Diversos protocolos de simulação paralela podem ser encontrados, divididos em dois grandes grupos de acordo com o algoritmo empregado para a execução em ordem dos eventos: os conservadores e os otimistas; contudo, ambos os grupos utilizam trocas de mensagens para a sincronização e comunicação. Neste trabalho, foi desenvolvido um novo protocolo de simulação paralela, fazendo uso de memória compartilhada, o qual foi implementado e testado sobre um ambiente de estações de trabalho, realizando, assim, simulação paralela com uso de memória compartilhada distribuída. O protocolo foi desenvolvido tendo como base de funcionamento os protocolos conservadores; utilizou diversas características dos mesmos, mas introduziu várias mudanças em seu funcionamento. Sua execução assemelha-se às dos protocolos de execução síncrona, utilizando conceitos como o lookahead e janelas de tempo para execução de eventos. A principal mudança que o novo protocolo sofreu foi proporcionada pelo acesso remoto à memória de um LP por outro, produzindo diversas outras nas funções relativas à sincronização dos processos, como o avanço local da simulação e o agendamento de novos eventos oriundos de outro LP. Um ganho adicional obtido foi a fácil resolução do deadlock, um dos grandes problemas dos protocolos conservadores de simulação paralela. A construção de uma interface de comunicação eficiente com uso de memória compartilhada é o principal enfoque do protocolo, sendo, ao final da execução de uma simulação, disponibilizado o tempo de simulação e o tempo de processamento ocioso (quantia utilizada em comunicação e sincronização). Além de uma implementação facilitada, propiciada pelo uso de memória compartilhada ao invés de trocas de mensagens, o protocolo oferece a possibilidade de melhor ocupar o tempo ocioso dos processadores, originado por esperas cada vez que um LP chega a uma barreira de sincronização. Em nenhum momento as modificações efetuadas infringiram o princípio operacional dos protocolos conservadores, que é não possibilitar a ocorrência de erros de causalidade local. O novo protocolo de simulação foi implementado e testado sobre um ambiente multicomputador de memória distribuída, e seus resultados foram comparados com dois outros simuladores, os quais adotaram as mesmas estratégias, com idênticas ferramentas e testados em um mesmo ambiente de execução. Um simulador implementado não utilizou paralelismo, tendo seus resultados sido utilizados como base para medir o speedup e a eficiência do novo protocolo. O outro simulador implementado utilizou um protocolo conservador tradicional, descrito na literatura, realizando as funções de comunicação e sincronização através de trocas de mensagens; serviu para uma comparação direta do desempenho do novo protocolo proposto, cujos resultados foram comparados e analisados.
Resumo:
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.
Resumo:
O aumento na complexidade dos sistemas embarcados, compostos por partes de hardware e software, aliado às pressões do mercado que exige novos produtos em prazos cada vez menores, tem levado projetistas a considerar a possibilidade de construir sistemas a partir da integração de componentes já existentes e previamente validados. Esses componentes podem ter sido desenvolvidos por diferentes equipes ou por terceiros e muitas vezes são projetados utilizando diferentes metodologias, linguagens e/ou níveis de abstração. Essa heterogeneidade torna complexo o processo de integração e validação de componentes, que normalmente é realizado através de simulação. O presente trabalho especifica mecanismos genéricos e extensíveis que oferecem suporte à cooperação entre componentes heterogêneos em um ambiente de simulação distribuída, sem impor padrões proprietários para formatos de dados e para a descrição do comportamento e interface dos componentes. Esses mecanismos são baseados na arquitetura DCB (Distributed Co-Simulation Backbone), voltada para co-simulação distribuída e heterogênea e inspirada nos conceitos de federado (componente de simulação) e federação (conjunto de componentes) que são definidos pelo HLA (High Level Architecture), um padrão de interoperabilidade para simulações distribuídas. Para dar suporte à co-simulação distribuída e heterogênea, esse trabalho descreve mecanismos que são responsáveis pelas tarefas de cooperação e distribuição, chamados de embaixadores, assim como o mecanismo gateway, que é responsável pela interoperabilidade entre linguagens e conversão de tipos de dados. Também é apresentada uma ferramenta de suporte à geração das interfaces de co-simulação, que são constituídas de dois embaixadores configuráveis e um gateway para cada federado, gerado a partir de templates pré-definidos.
Resumo:
Uma etapa fundamental no desenvolvimento de sistemas tolerantes a falhas é a fase de validação, onde é verificado se o sistema está reagindo de maneira correta à ocorrência de falhas. Uma das técnicas usadas para validar experimentalmente um sistema é injeção de falhas. O recente uso de sistemas largamente distribuídos para execução dos mais diversos tipos de aplicações, faz com que novas técnicas para validação de mecanismos de tolerância a falhas sejam desenvolvidas considerando este novo cenário. Injeção de falhas no sistema de comunicação do nodo é uma técnica tradicional para a validação de aplicações distribuídas, para forçar a ativação dos mecanismos de detecção e recuperação de erros relacionados à troca de mensagens. A condução de experimentos com injetores de comunicação tradicionais é feita pelo uso do injetor em uma máquina do sistema distribuído. Se o cenário desejado é de múltiplas falhas, o injetor deve ser instanciado independentemente nas n máquinas que as falhas serão injetadas. O controle de cada injetor é individual, o que dificulta a realização do experimento. Esta dificuldade aumenta significativamente se o cenário for um sistema distribuído de larga escala. Outro problema a considerar é a ausência de ferramentas apropriadas para a emulação de determinados cenários de falhas. Em aplicações distribuídas de larga escala, um tipo comum de falha é o particionamento de rede. Não há ferramentas que permitam diretamente a validação ou a verificação do processo de defeito de aplicações distribuídas quando ocorre um particionamento de rede Este trabalho apresenta o estudo de uma abordagem para injeção de falhas que permita o teste de atributos de dependabilidade de aplicações distribuídas de pequena e larga escala implementadas em Java. A abordagem considera a não obrigatoriedade da alteração do código da aplicação sob teste; a emulação de um cenário de falhas múltiplas que ocorrem em diferentes nodos, permitindo o controle centralizado do experimento; a validação de aplicações que executem em sistemas distribuídos de larga escala e consideram um modelo de falhas realista deste tipo de ambiente, incluindo particionamentos de rede. A viabilidade da abordagem proposta é mostrada através do desenvolvimento do protótipo chamado FIONA (Fault Injector Oriented to Network Applications), o qual atualmente injeta falhas em aplicações desenvolvidas sob o protocolo UDP.
Resumo:
Na simulação heterogênea de um sistema eletrônico complexo, um mesmo modelo pode ser composto por partes distintas em relação às tecnologias ou linguagens utilizadas na sua descrição, níveis de abstração, ou pela combinação de partes de software e de hardware (escopo da co-simulação). No uso de modelos heterogêneos, a construção de uma ponte eficaz entre diferentes simuladores, em conjunto com a solução de problemas tais como sincronização e tradução de dados, são alguns dos principais desafios. No contexto do projeto de sistemas embarcados, a validação desses sistemas via co-simulação está sujeita a estes desafios na medida em que um mesmo modelo de representação precisa suportar a cooperação consistente entre partes de hardware e de software. Estes problemas tornam-se mais significativos quando abordados em ambientes distribuídos, o que aumenta a complexidade dos mecanismos que gerenciam os ítens necessários à correta cooperação entre partes diferentes. Contudo, embora existam abordagens e ferramentas voltadas para o tratamento de modelos heterogêneos, inclusive em ambientes distribuídos, ainda persiste uma gama de limitações causadas pela distribuição e heterogeneidade de simuladores. Por exemplo, restrições quanto à variedade de tecnologias (ou linguagens) utilizadas na descrição das partes de um modelo, flexibilidade para o reuso de partes existentes, ou em tarefas de gerenciamento de sincronização/dados/interface/distribuição. Além disso, em geral, nas soluções existentes para simulação heterogênea, alterações são necessárias sobre as partes do modelo, limitando a preservação de sua integridade. Esta é uma característica indesejável, por exemplo, no reuso de componentes IP (Intellectual Property) Neste contexto, esta tese apresenta o DCB (Distributed Co-simulation Backbone), cujo propósito geral é o suporte à execução distribuída dos modelos heterogêneos. Para isso, são observados de modo integrado quatro fatores básicos: a distribuição física; a independência dos componentes (partes); o encapsulamento das estratégias de gerenciamento de tempo, de dados e de comunicação; e a sincronização híbrida. Em geral, as soluções existentes valorizam um fator em detrimento dos demais, dependendo dos propósitos envolvidos e sua variação em relação ao grau de especificidade (soluções proprietárias ou restritas a um escopo de aplicações). O Tangram, também discutido nesta tese em termos de requisitos, é uma proposta de ambiente para projeto de modelos heterogêneos distribuídos. No contexto da especificação do DCB, esta proposta tem como objetivo geral agregar num mesmo ambiente funcionalidades de apoio para a busca e catalogação de componentes, seguidas do suporte à construção e à execução distribuída de modelos heterogêneos via DCB. À luz dos princípios de generalidade e flexibilidade da arquitetura do DCB, o Tangram visa permitir que o projetista reduza seu envolvimento com detalhes relacionados ao provimento de condições necessárias à cooperação entre componentes heterogêneos. No escopo desta tese, ênfase foi dada à co-simulação de sistemas embarcados, ênfase esta observada também na construção do protótipo do Tangram/DCB, e nos estudos de caso. Contudo, a estrutura do DCB é apropriada para qualquer domínio onde a simulação possa ser utilizada como instrumento de validação, entre outros propósitos.
Resumo:
Esse trabalho de dissertação está incluído no contexto das pesquisas realizadas no Grupo de Processamento Paralelo e Distribuído da UFRGS. Ele aborda as áreas da computação de alto desempenho, interfaces simples de programação e de sistemas de interconexão de redes velozes. A máquina paralela formada por agregados (clusters) tem se destacado por apresentar os recursos computacionais necessários às aplicações intensivas que necessitam de alto desempenho. Referente a interfaces de programação, Java tem se mostrado uma boa opção para a escrita de aplicações paralelas por oferecer os sistemas de RMI e de soquetes que realizam comunicação entre dois computadores, além de todas as facilidades da orientação a objetos. Na área a respeito de interconexão de rede velozes está emergindo como uma tentativa de padronização a nova tecnologia Infiniband. Ela proporciona uma baixa latência de comunicação e uma alta vazão de dados, além de uma série de vantagens implementadas diretamente no hardware. É neste contexto que se desenvolve o presente trabalho de dissertação de mestrado. O seu tema principal é o sistema Aldeia que reimplementa a interface bastante conhecida de soquetes Java para realizar comunicação assíncrona em agregados formados por redes de sistema. Em especial, o seu foco é redes configuradas com equipamentos Infiniband. O Aldeia objetiva assim preencher a lacuna de desempenho do sistema padrão de soquetes Java, que além de usar TCP/IP possui um caráter síncrono. Além de Infiniband, o Aldeia também procura usufruir dos avanços já realizados na biblioteca DECK, desenvolvida no GPPD da UFRGS. Com a sua adoção, é possível realizar comunicação com uma interface Java sobre redes Myrinet, SCI, além de TCP/IP. Somada a essa vantagem, a utilização do DECK também proporciona a propriedade de geração de rastros para a depuração de programas paralelos escritos com o Aldeia. Uma das grandes vantagens do Aldeia está na sua capacidade de transmitir dados assincronamente. Usando essa técnica, cálculos da aplicação podem ser realizados concorrentemente com as operações pela rede. Por fim, os canais de dados do Aldeia substituem perfeitamente aqueles utilizados para a serialização de objetos. Nesse mesmo caminho, o Aldeia pode ser integrado à sistemas que utilizem a implementação de soquetes Java, agora para operar sobre redes de alta velocidade. Palavras-chave: Arquitetura Infiniband, agregado de computadores, linguagem de programação Java, alto desempenho, interface de programação.
Resumo:
Diretorio TesteAs recentes mudanças de estrutura no sistema elétrico (geração, transmissão, distribuição e comercialização de energia) têm motivado o uso da geração distribuída e, em particular, pequenos produtores independentes conectados ao sistemas de distribuição e subtransmissão. Sendo recente, ainda há muitas lacunas quanto ao entendimento do impacto desta nova topologia na estabilidade e outros índices de desempenho do sistema. O presente trabalho está focado na conexão dos produtores independentes aos sistemas de distribuição e subtransmissão e visa contribuir quanto ao estudo teórico-prático deste problema, com ênfase nos aspectos de modelagem dos componentes do sistema. Este estudo faz parte do projeto de pesquisa “Impacto de Produtores Independentes e Autoprodutores Conectados aos sistemas de distribuição e subtransmissão", desenvolvido pela UFRGS com financiamento da CEEE. Como as unidades de geração distribuída são conectadas às redes de distribuição e transmissão, a distância entre estes geradores e as cargas é menor comparativamente às usinas de grande porte. Existe ainda a questão dos produtores independentes serem de potências menores e, portanto, mais suscetíveis às variações de carga da rede em que estão ligados. Devido a estes e outros fatores, uma melhor análise dos modelos estáticos e dinâmicos dos diversos componentes do sistema de potência dentro desta nova topologia se faz necessária. Um dos aspectos considerados neste trabalho, foi o estudo da influência da resistência da linha na análise da geração distribuída nas linhas de distribuição. Esta foi uma das contribuições deste trabalho e foi realizada por meio de simulações considerando vários modelos de geradores e cargas. Outra contribuição foi a construção do sistema consistindo de um protótipo de um produtor independente conectado a rede de distribuição, composto de um gerador de 100kVA conectado à rede elétrica, contendo cargas resistivas e indutivas, podendo serem ligadas/desligadas, emulando condições de operação similares às reais. A construção do protótipo também envolveu um sistema para simulação, um sistema supervisório para operação e realização de ensaios, e os algoritmos necessários para tal. Este sistema permite a simulação dinâmica de modelos de sistemas elétricos de potência em diversos cenários e a verificação experimental do comportamento dos grupos geradores em diversas condições de operação, incluindo a análise de desempenho estático, ensaios de curto circuito e as variações de despacho ativo e reativo de potência. Obtendo com isso uma melhor identificação e quantificação do impacto dos produtores independentes e autoprodutores na análise de sistemas elétricos de potência.