Message passing interface e parallel virtual machine

913 visualizações

Publicada em

Uma análise sobre MPI e PVM

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
913
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Message passing interface e parallel virtual machine

  1. 1. UDC - FACULDADE DINÂMICA DAS CATARATAS mai CURSO DE SISTEMAS DE INFORMAÇÃOMESSAGE PASSING INTERFACE E PARALLEL VIRTUAL MACHINE: Sistemas Distribuídos, uma análise de funcionamento sobre as bibliotecas passagem de mensagem MPI e PVM. JOÃO PAULO MENDES DE CARVALHO FOZ DO IGUAÇU - PR 2012
  2. 2. UDC - FACULDADE DINÂMICA DAS CATARATAS CURSO DE SISTEMAS DE INFORMAÇÃO MESSAGE PASSING INTERFACE E PARALLEL VIRTUAL MACHINE:Sistemas Distribuídos, uma análise de funcionamento sobre a biblioteca passagem de mensagem MPI e PVM. JOÃO PAULO MENDES DE CARVALHO Monografia submetida como requisito parcial por João Paulo Mendes de Carvalho, acadêmico do curso de Sistemas de Informação à obtenção do grau de Bacharel em Sistemas de Informação, sob a orientação do professor Fabiano Damin. UDC – União Dinâmica de Faculdades Cataratas – Foz do Iguaçu, Paraná. FOZ DO IGUAÇU - PR 2012
  3. 3. TERMO DE APROVAÇÃO UNIÃO DINAMICA DE FACULDADE CATARATAS MESSAGE PASSING INTERFACE E PARALLEL VIRTUAL MACHINE: Sistemas distribuídos, uma análise de funcionamento sobre a biblioteca passagem de mensagem MPI e PVM. MONOGRAFIA APRESENTADA JUNTO AO CURSO DE SISTEMAS DE INFORMAÇÃO DA UNIÃO DINÂMICA DE FACULDADES CATARATAS, COMO REQUISITO PARCIAL DE OBTENÇÃO DO TÍTULO DE BACHAREL EM SISTEMAS DE INFORMAÇÃO ________________________________________ Acadêmico: João Paulo Mendes de Carvalho ________________________________________ Orientador: Fabiano Damin ________________________________________ Nota Final:Banca Examinadora: ________________________________________ Professor ________________________________________ Professor Foz do Iguaçu, Novembro de 2012.
  4. 4. AGRADECIMENTOS “Agradeço a os professores que me permitiram estar aqui, e a minha família que me deu suporte durante todo esse tempo.”
  5. 5. Resumo Este trabalho representa uma análise de funcionamento sobre as bibliotecas depassagem de mensagem em cluster, uma abordagem conceitual de sistemas distribuídoscom foco na passagem de mensagem. Aborda algumas ferramentas de construção desistemas distribuídos introduz alguns conceitos de redes de computadores para oentendimento de determinadas características de funcionamento de uma passagem demensagem em um sistema distribuído. E por fim exemplifica a passagem de mensagemcom as bibliotecas foco do tralho MPI e PVM.PALAVRAS-CHAVE: Paravirtualização, Aglomerado, Beowulf, Cluster.
  6. 6. Abstract This document represents an analysis of message passing libraries inclustering, a conceptual approach for distributed systems with a focus on messagepassing. Covers some tools building distributed systems introduces some concepts ofcomputer networks for the understanding of certain operating characteristics of amessage passing in a distributed system. Finally exemplifies the message passinglibraries with focus of this work about MPI and PVM.KEY-WORD: Paravirtualization, Particleboard, Beowulf, Cluster.
  7. 7. LISTA DE FIGURASFigura 1. Modelo de distribuição da rede dos EUA antes de Baran. .......................................... 5Figura 2. Comunicação com socket TCP. .................................................................................. 11Figura 3. A hierarquia de requisições no modelo de camadas. ................................................. 18Figura 4. Funcionamento da requisição e resposta em sistemas de objetos distribuídos......... 20Figura 5. Múltiplas tarefas e única tarefa. .................................................................................. 33Figura 6. Modelo de troca de mensagens: Processadores com sua memória local na LAN. ... 35Figura 7. Estrutura de Código PVM. .......................................................................................... 29Figura 8. Configurando DHCP em Cluster Beowulf. .................................................................. 40Figura 9. Nó controlador e escravos. ......................................................................................... 41
  8. 8. LISTA DE TABELAS:Tabela 1: Primitivas mais intuitivas da MPI. ............................................................................... 36Tabela 2. Argumentos de serviços em C e Fortran. ................................................................... 36Tabela 3. Descrição dos itens a serem comparados.................................................................. 44Tabela 4. Tabela comparativa entre PVM e MPI. ....................................................................... 44
  9. 9. LISTA DE SIGLAS:ARPA......................................................... Advanced Research Projects AgencyCORBA......................................... Common Object Request Broker ArchitectureDHCP..........................................................Dynamic Host Configuration ProtocolFTP......................................................................................File Transfer ProtocolHA................................................................................................ High AvailabilityHPC....................................................................... High Performance ComputingHTTP ...................................................................... HyperText Transfer ProtocolIDL......................................................................... Interface Definition LanguageIP ............................................................................................... Internet ProtocolMMOGs .........................................................Massive Multiplayer Online GamesMPI ........................................................................... Message Passing InterfaceNFS...................................................................................... Network File SystemORNL ...................................................................Oak Ridge National LaboratoryOSI....................................................................... Open Systems InterconnectionPVM ................................................................................Parallel Virtual MachineRM.............................OSI - Reference Model for Open Systems InterconnectionRMI............................................................................ Remote Method InvocationRPC .................................................................................Remote Procedure CallTCP................................................................................Transfer Control ProtocolTID...................................................................................................Task IdentifierTSAP..................................................................Transport Services Access PointUDP................................................................................ User Datagram ProtocolUTK.................................................................University of Tennessee, Knoxville
  10. 10. SUMÁRIO1 INTRODUÇÃO .......................................................................................................... 11.1 OBJETIVOS ............................................................................................... 21.1.1 OBJETIVO GERAL .................................................................................. 21.1.2 OBJETIVOS ESPECÍFICOS .................................................................... 21.1.3 JUSTIFICATIVA ....................................................................................... 21.2 PROBLEMA ............................................................................................... 31.3 METODOLOGIA ........................................................................................ 31.4 ESTRUTURA DO TRABALHO .................................................................. 32 REDES DE COMPUTADORES E COMUNICAÇÃO DE DADOS .................... 52.1 HISTÓRICO ............................................................................................... 52.2 O MODELO ISO/OSI ................................................................................. 72.3 AS SETE CAMADAS ................................................................................. 72.4 O MODELO TCP/IP ................................................................................... 92.4.1 A ARQUITETURA TCP/IP ....................................................................... 93 SISTEMAS DISTRIBUÍDOS ................................................................................. 143.1 OBJETIVO DOS SISTEMAS DISTRIBUÍDOS ......................................... 153.2 ARQUITETURAS DE SISTEMAS DISTRIBUÍDOS ................................. 163.2.1 ARQUITETURA EM CAMADAS ............................................................ 173.2.2 ARQUITETURA BASEADA EM OBJETOS ........................................... 193.2.3 OUTRAS ARQUITETURAS ................................................................... 204 PARALLEL VIRTUAL MACHINE ..................................................................... 264.1 HISTÓRICO ............................................................................................. 264.2 ABORDAGEM GERAL DE FUNCIONAMENTO E APLICAÇÃO ............. 265 MESSAGE PASSING INTERFACE ..................................................................... 315.1 HISTÓRICO ............................................................................................. 315.2 FUNÇÃO DA MPI .................................................................................... 325.3 VISÃO GERAL DE FUNCIONAMENTO .................................................. 325.4 ALGUMAS FUNÇÕES MPI ..................................................................... 356 CLUSTER...................................................................... Error! Bookmark not defined.6.1 TIPOS E TECNOLOGIAS ........................................................................ 386.2 EXEMPLIFICAÇÃO DA PASSAGEM DE MENSAGEM ........................... 397 COMPARATIVO ENTRE PVM E MPI ............................................................... 438 CONCLUSÃO E TRABALHOS FUTUROS ........................................................ 45REFERÊNCIAS ........................................................................................................... 46
  11. 11. “ Por traz de toda grande mente existe sim um grande mestre. Agradeço a todos os professores que me permitiram estar aqui.”João Paulo Mendes de Carvalho
  12. 12. 1 INTRODUÇÃO Atualmente a troca de mensagem ocorre em diversos ambientes,permitindo diversos computadores se comunicarem, não se vê explicitamenteesta comunicação, pois acontece de forma transparente. Nos sistemasdistribuídos exemplificados neste trabalho será possível notar os diversosrecursos de passagem de mensagem que efetuam estas tarefas, masdificilmente são notados. Em um cluster, técnica foco que será exemplificadaneste trabalho, para demonstrar as biblioteca que permitem o mesmofuncionar, as mensagens trafegam de forma a dividir tarefas, usando MPI(Message Passing Interface) ou PVM (Parallel Virtual Machine) que trazemconsigo um conceito de troca de mensagem, essencial no processo deagrupamento de computadores para efetuar muitas vezes aumento deperformance, técnica também chamada de clusterização, pois possuem aimplementação da passagem de mensagem para os nós de um cluster. Essanecessidade veio com o crescimento das redes de computadores que setornaram grandes redes locais ou remotas junto ao aumento da demanda dacapacidade de processamento. Além da troca de mensagem, também surgiu anecessidade do compartilhamento de recursos, desde memória aprocessamento para o aumento de performance, já que o custo dossupercomputadores também conhecidos como mainframes que possuíam altodesempenho é muito elevado. A clusterização veio muito a calhar como umaalternativa de baixo custo de aquisição e configuração. O objetivo desta abordagem é mostrar as vantagens de se compartilharrecursos diversos, e efetuar comunicação distribuída, conceituar os sistemasdistribuídos e comunicação distribuída, deixando claro que o principal objetivodos sistemas distribuídos, é facilitar o acesso a recursos remotos ou locais, porusuários ou aplicações, de maneira controlada e eficiente, da forma maistransparente possível, isto será exemplificado na clusterização, onde a MPI ePVM serão vistas de forma mais clara, junto ao conceito de passagem demensagem, técnica permite a comunicação entre os nós de um cluster. Otrabalho irá mostrar como os sistemas distribuídos são importantes e poucovisíveis ao usuário final, ainda ao final do trabalho será feito um comparativoentre as bibliotecas de cluster PVM e MPI. 1
  13. 13. 1.1 OBJETIVOS Este trabalho tem como objetivo uma análise dos conceitos desistemas distribuídos e das bibliotecas MPI e PVM, exemplificando no processode clusterização estes conceitos de sistemas distribuídos e passagem demensagem, para permitir ao final das abordagens efetuar uma comparaçãoentre a MPI e PVM.1.1.1 Objetivo geral Apresentar os conceitos de sistemas distribuídos exemplificado noprocesso de clusterização, assim como uma abordagem de funcionamentosobre PVM e MPI.1.1.2 Objetivos específicos Apresentar o conceito de passagem de mensagem e sistemas distribuídos; Demonstrar o funcionamento da distribuição de mensagens no processo de clusterização, o qual deixa claro o funcionamento das dos modelos de passagem de mensagem e compartilhamento de recursos. Expor o funcionamento das bibliotecas MPI e PVM e fazer um breve comparativo;1.1.3 Justificativa Demonstrar de forma teórica o funcionamento do modelo de passagemde mensagem MPI, e descreve as áreas fins, e o mesmo se aplica a bibliotecaPVM, que será demonstrada de forma teórica em seu âmbito funcional. Suanecessidade é justificada na dificuldade em se encontrar materiais queabstraiam de forma simples e compacta o funcionamento destas bibliotecas eda passagem de mensagem. Já que seu uso é notável, mas transparente nosambientes computacionais em cluster atuais. 2
  14. 14. 1.2 PROBLEMA Como desenvolver aplicações distribuídas e usar recursos distribuídosem redes remotas e locais, verificar as ferramentas que permitem comunicaçãocom recursos distribuídos focando principalmente nas bibliotecas MPI e PVM euma abordagem de que biblioteca usar e em que momento através de umcomparativo de características.1.3 METODOLOGIA A execução deste trabalho foi realizada através de pesquisasbibliográficas, revisão bibliográfica, informações disponíveis referentes atecnologias MPI e PVM, além de estudos sobre sistemas distribuídos ecomputação paralela abstraídos de livros e artigos e comentários na internet. O trabalho será realizado em etapas de pesquisas, sobrefuncionamento de alguns tipos de sistemas distribuídos e suas aplicações nasnecessidades reais e atuais. A primeira etapa será busca do material para pesquisa, realizada pormeio de um levantamento bibliográfico através de pesquisas em livros einternet para a melhor qualidade da produção desta monografia. A segunda etapa será a análise de alguns tipos de sistemas, e seusfuncionamentos a fim de esclarecer duvidas gerais de o que é um sistemadistribuído, e descrever esses funcionamentos, lembrando os objetivosespecíficos e gerais. Ao final será feita uma revisão destes aspectos de funcionamentosobre a MPI e a PVM, junto a descrição de seus aspectos possíveis limitaçõesdescritas nos matérias de estudo, e uma comparação entre as duas para severificar os ambientes onde devem ou podem ser aplicadas.1.4 ESTRUTURA DO TRABALHO O Capítulo II traz uma introdução sobre os conceitos de redes,necessário ao entendimento do trabalho. O capítulo III, Fala Sobre os conceitos de sistemas distribuídos, emuma abordagem explicativa e seus diversos fins de utilização e conceitos de 3
  15. 15. diversas fontes, onde o modelo CORBA e RMI é comentado e sua função édescrita brevemente. O capítulo IV se destina a descrever o objetivo da biblioteca PVM easpectos gerais de funcionamento. O capítulo V fala sobre os modelos de mensagem MPI e seu histórico,introduzir informações sobre o funcionamento geral da MPI e algumasprimitivas mais intuitivas. O capítulo VI fala sobre a clusterização e o funcionamento dos modelosde passagem de mensagem, e compartilhamento de recursos em um cluster. O capítulo VII faz um comparativo entre a PVM e a MPI, seguindodeterminadas métricas. O Capítulo VIII faz uma análise geral sobre os temas abordados e umaconclusão sobre possíveis trabalhos futuros. 4
  16. 16. 2 REDES DE COMPUTADORES E COMUNICAÇÃO DE DADOS2.1 HISTÓRICO No final da década de 1950, bem quando a guerra fria estava em seuauge, os EUA queriam uma rede de comando capaz de sobreviver a umagrande guerra nuclear. Naquele tempo as comunicações militares trafegavampela rede de telefonia pública, considerada vulnerável. A organização destarede tinha pontos críticos que a tornavam ineficiente até certo ponto(TANENBAUM, 2011). Em 1962, o departamento de defesa dos Estados Unidos, concretizouum acordo com a RAND Corporation. A fim de buscar uma forma de melhorarsuas comunicações. Um membro da equipe Paul Baran, apresentou um projetoaltamente resistente a falhas. Sabendo que o caminho entre duas centraiseram bem mais longos do que a distância que os sinais analógicos trafegavamsem distorção ou interferência, Baran propôs o uso da tecnologia digital decomutação de pacote em todo o sistema. Baran enviou seus projetos erelatórios ao departamento de defesa dos EUA com diversos detalhes. Opentágono gostou da solução e solicitaram a AT&T, que na época era possuíao controle nacional da telefonia note americana que desenvolvessem umprotótipo. A mesma descartou as soluções de Baran, pois a mais poderosacorporação do mundo não permitiria que um jovem lhes ensinasse como criarum sistema telefônico. A empresa afirmou que o projeto não poderia serrealizado e então foi abandonado (RAND Corporation, 2011). Figura 1. Modelo de distribuição da rede dos EUA antes de Baran. Baseado em: (RAND Corporation, 2011). 5
  17. 17. Após muito tempo o departamento de defesa dos EUA ainda nãopossuía um sistema mais eficiente de comando e controle. Após os EUAperderem a corrida espacial para a União Soviética e perceberem que estavamociosos, o presidente Eisenhower acabou percebendo a disputa entre as forçasarmadas pelo orçamento de pesquisa de defesa. Sua ação foi imediata criarum único centro de pesquisa e defesa, a ARPA, ou Advanced Research ProjectAgency. A ARPA não possuía uma infraestrutura avantajada, na verdadeconstituía apenas um pequeno escritório com poucos recursos financeiros navisão do pentágono. A agência trabalhava oferecendo concessões e contratosa universidades e empresas cujas ideias pareciam conter potencial(TANENBAUM, 2003). Por algum tempo a ARPA buscava por uma missão, mas em 1967, osesforços do até o momento diretor do projeto ARPA, Larry Roberts, se voltarampara as redes, o mesmo contatou diversos especialistas para tomar umadecisão. Um deles Wesley Clark, sugeriu a criação de uma sub-rede comutadapor pacote, dando a cada host seu próprio roteador. Com uma certadesconfiança Roberts comprou a ideia e apresentou um documento simplistano ACM SIGOPS (Symposium on operating system principles), realizado emGatlinburg, Tennessee, no final do nano de 1967. Para o animo de Robertsoutro trabalho na conferencia descrevia um sistema semelhante, que já haviasido implementado, sobre a tutela de Donald Davies do NPL (National PhysicalLaboratory), na Inglaterra. O sistema implantado no NPL, não funcionava anível nacional mas sim interligava vários computadores da NPL, ainda assimera suficiente para demonstrar que a comutação de pacotes podia funcionar.Esse trabalho também citava os trabalhos anteriores de Paul Baran. Gatlinburg,após seu retorno estava empenhado em construir o que ficou conhecido comoARPANET (TANENBAUM, 2003). Inspirado pelo sucesso da ARPANET, o programa de pesquisaexperimental da seção de ciência da computação de matemática e física daNSF, iniciou a sua própria rede em 1981. Chamado CSNET (Computer ScienceNetwork), o sistema prestou serviços de Internet, incluindo correio eletrônico econexões para ARPANET (NSF, 2001). 6
  18. 18. 2.2 O MODELO ISO/OSI Este modelo se baseia nas propostas exigidas pelos padrões emétricas ISO (Organização internacional de padronização). O OSI (sistemaaberto de interconexão) foi o padrão aplicado às interconexões de rede paratodo os sistemas. Possui sete camadas que por sua vez possuem suasfunções e características referentes à suas camadas. Para se chegar adefinição destas camadas alguns conceitos foram aplicados, entre eles o deque para se criar uma nova camada deve-se verificar se é necessário um novograu de abstração. Outro define que cada camada deve realizar operaçõesbem definidas, a definição destas camadas e suas funções devem sercaracterizadas com base nos protocolos padronizados internacionalmente. Oslimites de camadas devem ser escolhidos para minimizar os fluxos deinformações pelas interfaces. O número de camadas deve ser grande obastante para que funções distintas não precisem ser desnecessariamentecolocadas na mesma camada, e pequena de forma que o controle daarquitetura não se torne complexo (TANENBAUM, 2011).2.3 AS SETE CAMADAS Historicamente, os grandes fabricantes de aparelhos de computaçãotinham seu foco de funcionamento voltado a seus produtos, hardware esoftware eram únicos daquelas plataformas. O mesmo ocorria com asorganizações e os usuários, isso levou a ISO propor o RM-OSI (ReferenceModel – Open Systems Interconnection) (DANTAS, 2002). Os tópicos a seguir esclareceram quais as camadas que o modelo ISOpropõe e seus aspectos gerais: a. A camada física é constituída pelos componentes físicos e elétricos e definições elétricas, os dados trafegam como 0 e 1, pulsos elétricos KUROSE e ROSS (2006); b. A camada de enlace possui a tarefa de converter o fluxo bruto de bits (0 e 1), da camada física, em uma unidade de dado coerente a camada mais superior TANENBAUM (2011); 7
  19. 19. c. A camada de rede está preocupada com a obtenção de pacotes a partir da fonte de todo o caminho para o destino, roteamento dos pacotes entre origem e destino, controle de congestionamento, além de abertura e fechamento de conexões ponto a ponto TANENBAUM (2011);d. A camada de transporte fornece ligação lógica entre processos de aplicações que rodam em hospedeiros diferentes, comunicação lógica neste escopo, tem o significado de que hospedeiros que rodam processos diferentes, do ponto de vista de uma aplicação, se aparentam estar conectados diretamente, mas podem estar em pontos remotos do planeta, interligados por diversos roteadores KUROSE e ROSS (2006);e. A camada de sessão é projetada para permitir a comunicação entre aplicações. Então funções comuns deste nível são o estabelecimento a manutenção e o fechamento de conexões. Na interoperabilidade entre conexões (conexões com tipos de sistemas diversos), a comunicação o tráfego (simplex, half- duplex, ou full-duplex), a sincronização das partes e do gerenciamento de permissão entre conexões DANTAS (2002);f. A camada de apresentação oferece um serviço de independência da representação, fazendo com que a representação seja apropriada em cada computador. Esta camada se preocupa com as informações transmitidas no âmbito de sua sintaxe e semântica tornando possível o intercambio de informações com computadores de diversas codificações DANTAS (2002);g. Na camada de Aplicação estão presentes as aplicações de rede e seus protocolos como o HTTP (Hyper Text Transfer Protocol), que prove requisição e envio de documentos na internet, ou o FTP (File Trasfer Protocol), que prove a transferência de arquivos entre dois sistemas finais KUROSE e ROSS (2006). 8
  20. 20. 2.4 O MODELO TCP/IP Oficialmente o nome do chamado protocolo TCP/IP, ou o conjunto deferramentas denominada TCP/IP, que pode ser usado para comunicar atravésde qualquer rede, ou conjunto da mesma interconectadas. Empresas usam oTCP/IP para comunicar seus hosts internos, enquanto outras paracomunicação com locais geograficamente distantes. Embora a tecnologia deTCP/IP é notável por si só, é especialmente interessante, notar que suaviabilidade e funcionamento foram demonstrados em larga escala (COMER,2000). Os modelos OSI citado anteriormente e o TCP/IP são muito parecidos,ambos se baseiam em uma pilha de protocolos independentes, e as camadastem certas semelhanças. Como por exemplo, em ambos os modelos a camadade transporte esta lá para fornecer uma conexão ponta a ponta na rede.Novamente em ambos os modelos a camada acima da camada de transportefornece suporte as aplicações do usuário, apesar de o TCP/IP possuir apenasquatro camadas definidas por se considerar suficientes, as camadasimplementam funções como já disse semelhantes (TANENBAUM, 2011).2.4.1 A Arquitetura TCP/IP O uso do TCP/IP e demais protocolos pela maioria nas redes depesquisa em níveis nacionais e internacionais, permitiu a integração destasredes geograficamente separada sem uma única rede, que cresceuextremamente rápido até seu tamanho atual (COULOURIS et al. 2008). No âmbito de camadas os protocolos usados em determinada camada,são de responsabilidade da mesma e somente dela, a camada pode utilizar osprotocolos que quiser mas deve oferecer os recursos necessários a isso. Acamada também pode alterar esses protocolos, mas sem alterar ofuncionamento de aplicativos das camadas superiores. Essa ideia assemelha-se ao conceito de programação de software orientada a objeto, um objeto temuma semântica e oferece determinados serviços através de seus métodos,seus protocolos não estão explícitos, nem acessíveis ou seja seu código, masisso não interfere nem importa nada a os elementos fora do objeto, pois oimportante são os parâmetros e retornos (TANENBAUM, 2011). 9
  21. 21. 2.4.1.1 O TCP O TCP (transmission control protocol) é um protocolo caracterizado poroferecer um serviço confiável entre aplicações a fim e de ser eficaz. Oprotocolo identifica os pacotes recebidos fazendo uma associação de cadapacote em suas respectivas conexões para efetuar a entrega de formagarantida. A PDU do TCP é conhecida por seguimentos, ou tambémdenominados, pacotes. O TCP apesar de ser eficaz, durante a comunicaçãoocorrem muitas perdas, os pacotes podem chegar fora de ordem, isso faz comque ele possua uma implementação complexa. Esta localizado na camada trêsna arquitetura TCP/IP local do nível dos protocolos de transporte, os protocolosque hoje fazem parte desta camada são o TCP e o UDP, sendo futuramentenovo protocolos podem ser adicionados para completar as funcionalidades outrazer novas funções (DANTAS, 2002). Complementando o assunto segundo COULOURIS et al. (2008) o TCP,inclui certos adicionais que são consumidos do protocolo IP para garantirconfiabilidade, como o sequenciamento, controle de fluxo, retransmissão, usode buffer e soma de verificação TANENBAUM (2011) explica que TCP tambémlida com controle de fluxo para garantir que um remetente rápido não inundeum receptor lento com mais mensagens do que ele pode manipular. Segundo KUROSE e ROSS (2006) TCP possui um processo decomunicação através de socket1 entre um cliente e um servidor, o cliente iniciauma conexão TCP com o servidor, o cliente cria um socket após isso, o clienteespecifica o endereço do processo servidor, o endereço IP do hospedeiroservidor e o número da porta do processo servidor com a criação do socket nocliente mais especificamente no programa cliente, o TCP no mesmo cria umaapresentação de três vias, e cria uma conexão TCP com o servidor, durante aapresentação de três vias o cliente solicita entrada no servidor, o servidor ouvea solicitação de entrada, e cria uma nova porta para este cliente, na verdade 1 Terminal de comunicação onde uma aplicação pode escrever dados que serãoenviados pela rede ou ler dados recebidos (TANENBAUM e STEEN 2007). 10
  22. 22. um novo socket, reservado a este cliente especifico, liberando a porta inicial aoutros clientes. Pode-se verificar este processo na imagem a seguir. Figura 2. Comunicação com socket TCP. Baseado em: KUROSE e ROSS (2006) e TANEMBAUM (2011).2.4.1.2 O UDP O protocolo UDP (user datagram protocol) diferente do citadoanteriormente o TCP, é caracterizado como protocolo otimista, pois envia todosseus pacotes esperando que erro nenhum aconteça, e que a ordem de enviodos pacotes não será alterada. O UDP, é um protocolo simplista, nãoorientado a conexão, ele é usado por protocolos que efetuam operações deconfiabilidade fim a fim. Um exemplo de aplicado do UDP é o NFS 2, em umambiente onde existe o NFS, a garantia de integridade dos pacotes é do NFS,e a comunicação rápida entre os envolvidos é do UDP (DANTAS, 2002). O UDP é amplamente usado em solicitações one-shot, sãosolicitações do tipo cliente servidor onde a entrega rápida é mais importanteque a entrega correta, como exemplo de transmissões de vídeo ou fala muitasvezes usam o UDP (TANENBAUM, 2011). 2 NFS é um sistema de arquivos criado com o objetivo de compartilhar arquivos ediretórios entre computadores na rede COULOURIS et al. (2011). 11
  23. 23. Segundo KUROSE e ROSS (2006) e como já foi visto, o TCP usasockets de forma que cria uma conexão confiável de entrega, ou podemosdizer segura, pois isso essa é uma de suas finalidades. O UDP tambémpermite que processos que rodam em hospedeiros diferentes se comuniquem,mas diferente do TCP o UDP não cria um túnel ou podemos dizer uma conexãocom ambos os lados. Como o UDP não cria esse túnel, se deve o remetente,ou seja, quem esta enviando deve anexar o endereço do destino ao conjuntode dados. Como o UDP não é orientado a conexão o servidor não precisa criarum novo socket.2.4.1.3 O Protocolo IP O Protocolo IP (internet protocol), é da camada de internet, transmitedatagramas de um host para outro, o protocolo que contém informações deendereçamento e algumas informações de controle que permite que os pacotessejam roteados. O IP representa o coração dos protocolos da Internet. IP temduas funções primárias, fornecer conexão, entrega de melhor esforço dedatagramas através de uma Interconexão e fornecimento de fragmentação eremontagem de datagramas (COULOURIS et al., 2008). Cada host e cada roteador tem um endereço IP que codifica seuendereço na rede. A princípio, duas maquinas nunca tem o mesmo endereçoIP. Todos os endereços IP tem 32 bits, e são usados nos campos de endereçode origem e endereço de destino dos pacotes IP, é importante observar que umendereço IP não se refere realmente a um host. Na verdade, ele se refere auma interface de rede, assim, se um host estiver em duas redes, ele precisarater dois endereços IP. Porém, na prática, a maioria dos hosts está em umaúnica rede e, portanto, só tem um endereço IP (TANENBAUM, 2003). Para possuir uma visão clara do IP e sua necessidade, o mesmo serádescrito sobre uma visão de COULOURIS et.al. (2011). A camada IP roteia ospacotes de sua origem até seu destino, cada roteador presente na internetimplementa o IP, ou seja, todo roteador possui a camada IP em si, isso énecessário para poder fornecer um serviço de roteamento, termo rotear em sitem o significado de encaminhamento de origem ao destino. 12
  24. 24. Neste capítulo foi possível verificar detalhes fundamentais para seentender a passagem de mensagem e comunicação entre computadoresusando os protocolos TCP, UDP e IP que fazem parte da arquitetura TCP/IP.Esses conceitos são a base da comunicação em sistemas distribuídos em umarede, com as informações adquiridas se é possível concluir que essefuncionamento é transparente nas implementações dos sistemas que serãoabordados a seguir, sobre uma visão é claro de usuário final, pois segundoTANENBAUM e STEEN (2007) quem implementa estes sistemas deve ter emvista o funcionamento dos conceitos de redes para melhor desenvoltura desuas aplicações e entre outros aspectos necessários a construção de umsistemas distribuído. E se deve enfatizar que as bibliotecas de passagem demensagem também consomem os serviços destes protocolos de comunicação,mas de forma transparente, como ficará claro quando forem abordadas. 13
  25. 25. 3 SISTEMAS DISTRIBUÍDOS Os sistemas distribuídos englobam muitas das mais significativastecnologias dos últimos anos e, portanto, uma compreensão das tecnologias esuas estruturas são fundamentais para o conhecimento da computaçãomoderna. Com o aumento da maturidade das infraestruturas de sistemasdistribuídos, um número de empresas estão promovendo a visão de recursosdistribuídos como uma mercadoria ou utilidade, é feita uma analogia entrerecursos distribuídos e outras utilidades, como fornecimento de água oueletricidade. Com este modelo, os recursos são fornecidos por prestadores deserviços adequados, e efetivamente alugados em vez de se tornarempropriedade do usuário final. Este modelo aplica-se tanto a recursos físicos,como processamento ou armazenamento, quanto a lógicos como os softwares(COULOURIS et al., 2011). De Acordo com TANENBAUM e STEEN (2007), um sistema distribuídosobre uma visão simplista, é tido como conjunto de computadoresindependentes que são vistos de forma transparente, ou seja, o usuário nãopercebe que esta lidando com diversos computadores. Nenhuma premissa éadotada para caracterizar o tipo de conexão ou equipamento conectado. Como proposto por TANENBAUM e STEEN (2007), sistemasdistribuídos devem ser abertos, ou seja, deve ser criado a partir de regraspadronizadas para garantir compatibilidade com outros sistemas, no geral asinterfaces de comunicação costumam ser descritas em uma linguagem dedefinição de interface ou no termo em inglês, Interface Definition Language, oupela sigla IDL, para que suas métricas sejam visíveis a quem desejar criaroutros recursos compatíveis com o mesmo . Como proposto por NEUMAN (1994) os sistemas distribuídos devemser desenvolvidos de forma escalável, com três princípios básicos, entre eles oseu tamanho, em termos geográficos, e por último e não menos importante, emtermos administrativos, ou seja, deve ser possível crescer de forma escalável,de ser distribuído em locais remotos, e deve ser fácil de ser administrado, poiscaso esses requisitos não sejam cumpridos, o sistema estará limitado até certoponto, por estes impasses. 14
  26. 26. Uma abordagem simples e direta de sistemas distribuídos segundoSILBERSCHATZ et al. (2010), e que complementa ou afirma todas as outras jácitadas, diz que, caracterizasse como sistemas distribuídos, um conjunto desistemas de computação, separados fisicamente, que pode ser ou nãoheterogêneos em sua estrutura, para fornecer ao usuário recursos diversos queo sistema mantém.3.1 OBJETIVO DOS SISTEMAS DISTRIBUÍDOS Anteriormente foram citadas algumas regras para se desenvolversistemas distribuídos, e abordados os motivos disto, outra abordagem de outroautor diz que sistemas distribuídos devem oferecer fácil acesso a recursos, edevem trazer vantagens em sua aplicação TANENBAUM e STEEN (2007), estaabordagem simples do objetivo demonstra característica essencial de umsistema distribuído segundo visão de TANENBAUM e STEEN. Antes deestender a abordagem do objetivo dos sistemas distribuídos serão citadosalguns exemplos de sistemas existentes. Se pode citar como exemplos desistemas distribuídos segundo COULOURIS et al. (2011), sistemas usados naárea de saúde, onde o registro de pacientes é feito de forma eletrônica, ouainda a tele medicina no apoio ao diagnóstico remoto, podendo se citarserviços mais avançados, tal como a cirurgia remota, incluindo o trabalho decooperação entre equipes remotas, um sistema de armazenamento distribuído,que oferece acesso rápido a grandes conjuntos de dados, ou um sistema daárea de entretenimento, como os MMOGs (Massively multiplayer onlinegames), estes representam um grande desafio para sistemas distribuídos,especialmente por causa da necessidade de tempo de resposta rápido parapreservar a interação do usuário com o jogo. Outros desafios incluem apropagação em tempo real de eventos para os diversos jogadores, mantendouma visão coerente do mundo compartilhado. COULOURIS et al. (2011), cita que em um sistema distribuídolocalizado em redes de computadores, deve acomodar tanto o hardwarequanto a plataforma de sistema operacional além é claro da rede deinterconexão que é das mais variadas, sendo que essa variedade deve sersuportada sem problemas. Sistema distribuído é um sistema onde os 15
  27. 27. componentes de hardware e software, localizados em computadoresinterligados por uma rede, comunicam e coordenam suas ações somenteatravés de troca de mensagens, esta abordagem de COULOURIS deixa claro oobjetivo de um sistema distribuído, falando sobre a heterogeneidade dasplataformas lógicas e físicas e complementa mais os conceitos já citados.3.2 ARQUITETURAS DE SISTEMAS DISTRIBUÍDOS Quando se foi comentado sobre sistemas distribuídos, foi possível teruma visão geral sobre o funcionamento e alguns exemplos de sistemasdistribuídos, mas não se foi descrito como eles são desenvolvidos em suaestrutura organizacional, em termos de implementação de um sistemadistribuído, será visto neste capítulo as arquiteturas, ou seja, organizaçãodestes sistemas em termos de implementação, com as mais conhecidas eusadas hoje segundo abordagem de TANENBAUM e STEEN (2007), sendo ade objetos distribuídos a de maior ênfase neste trabalho, pois no processo declusterização onde as bibliotecas de passagem de mensagem MPI e PVMsegundo STERLING (2002) são usadas. STERLING (2002), cita que o modelode objetos distribuído é o que melhor representa o funcionamento dapassagem de mensagem em computação distribuída, pois cada nó de umcluster pode representar um objeto onde as mensagens trafegam, e cada nópode e deve ser possível de ser adicionado ao serviço tornando o crescimentoescalável, se pode concluir que isto esta mostrando o conceito deescalabilidade em sistemas distribuídos. Complementando as abordagens anteriores e justificando o porque dese verificar a distribuição das camadas de um sistema, BASS et al. (2003) faz aobservação de que para iniciar uma análise sobre sistemas distribuídos sedeve verificar a distribuição lógica da mesma, ou seja seus componentes,também denominados arquitetura de sistema. Projetar ou adotar umaarquitetura hoje se torna essencial para o desenvolvimento de software, esseestilo de desenvolvimento em arquitetura, serve para interligar os componentesas arquiteturas de software em camadas e baseadas em objetos, estes estilossão considerados essências no desenvolvimento de aplicações de grandeporte. 16
  28. 28. 3.2.1 Arquitetura em Camadas Quando se cita a utilização de camadas, há sempre confusão com ostermos layer (camada) e tier (camada). Frequentemente são utilizados comosinônimos, mas muitos olham tier como uma implicação de separação física.Sistemas cliente/servidor são frequentemente descritos como sistemas two-tier:O cliente é um desktop e o servidor é, em geral, um SGBD ou um computadorque presta serviços. As layers (camadas lógicas) se designam à hierarquia decada um dos elementos do sistema abstraindo uma separação das suastarefas. Na arquitetura em camada cada camada proporciona auxilio a camadaadjacentes por meio de troca de mensagens. A colaboração ocorrenormalmente por métricas de desenho ou os conhecidos design patterns(FOWLER, 2003). Camadas de software, se designam como conceito de divisão dosoftware em camadas, ou módulos em um único computador, ou em termos deserviços que podem ser oferecidos, e que estarão sendo consumidos porprocessos que podem estar solicitando de um mesmo computador, ou decomputadores diferentes, essas camadas efetuam a divisão de tarefas(COULOURIS et al., 2011). Como citado por GARLAND e ANTHONY (2003) muitos atributos ouqualidades são de interesse em arquitetura de software. Estas qualidades sãoimportantes pois podem impactar no projeto e desenvolvimento de diversaspartes do software. Algumas dessas qualidades são citadas como segurança,para impedir o acesso não autorizado, a integridade dos dados para nãofornecer dados ruins, entendível, o software pode ser entendido, de modo queas mudanças posam ser feitas, testável, o software pode ser testado, de formaeficaz visando seu impacto no meio e sua mutabilidade. Estes são alguns dosmeios os quais a arquitetura se diz técnica e o conjunto mínimo de regras queregem a arranjo, interação e interdependência das partes ou elementos que,em conjunto podem ser utilizados para formar um sistema de informação. Oseu objetivo é para garantir que um sistema satisfaça um determinadoconjunto de condições. Arquitetura é um ingrediente essencial para o sucesso de sistemas detodos os tipos, de software e serviços para as linhas de produtos e 17
  29. 29. empresas. A capacidade de se expressar, analisar e comunicar essasarquiteturas é a chave para esse sucesso. Diversos são os interessados queenglobam uma série de preocupações, como a capacidade do sistema queserá desenvolvido, o custo de propriedade, robustez e facilidade de manuseioque a arquitetura deve enfrentar. Para expressar essas preocupações edilemas, cada arquiteto aplica as convenções do seu ponto de vista daarquitetura. Um ponto de vista determina os tipos de modelo de arquiteturas,técnicas e métodos pertinentes a um ponto de vista, dando assim os criadorese usuários uma base de entendimento comum e análise do objeto final (IEEE,2011). A figura a seguir demonstra um exemplo do modelo de camadasrepresentado pelas descrições anteriores e sua hierarquia de resposta erequisição, conforme também proposto por TANENBAUM e STEEN (2007). Figura 3. A hierarquia de requisições no modelo de camadas. Baseado em: (TANENBAUM e STEEN, 2007). Como citado por GARLAND e ANTHONY (2003), vários padrõesdescrevem a relação de compromisso envolvida na criação de uma camada daarquitetura. O Padrão Camadas descrito por BUSCHMAN (1996), envolveestruturação do sistema por meio da organização dos elementos em gruposcom diferentes níveis de abstração. O objetivo é estruturar o sistema em um 18
  30. 30. número apropriado de camadas, com o mais alto nível de abstração na camadasuperior, e os menores níveis de abstração na camada inferior, essa analogiase assemelha as características atuais do desenvolvimento em camadas. A dissolução de sistemas de grande complexidade em camadas é umadas técnicas mais usadas por arquitetos de software. É uma técnica alugadada arquitetura de computadores, que utiliza camadas para chamadas desistema, devices drivers, instruções do processador, até as portas lógicascontidas nos chips. Os protocolos de rede também têm utilizado a mesmatécnica de camadas como, o FTP que é baseado em TCP, que por sua vezutiliza o protocolo IP, que utiliza Ethernet, esta abordagem comparativa mostracomo as diversas camadas consomem uma os serviços da outra (FOWLER,2003).3.2.2 Arquitetura baseada em objetos O objeto distribuído geralmente se refere a software ou módulos quesão projetados para trabalhar em conjunto, ou estar alocado emvários computadores se comunicando através de uma rede, se comunicandoatravés de requisições e respostas. Um objeto envia uma mensagem paraoutro objeto em uma máquina remota, ou processo para executar umatarefa. Os resultados são enviados de volta para o objeto que requisitou achamada (COULOURIS, 2011). Complementando COULOURIS citado acima, TANENBAUM e STEEN(2007), da por entender que na arquitetura de objetos distribuídos, um sistemade objetos distribuídos é aquele que permite a operação com objetos remotos.Assim dito, é possível a partir de uma aplicação cliente orientada a objetos,obter uma referência para um objeto remoto que oferece o determinadoserviço, e através dessa referência, invocar métodos desse objeto, mesmo quea instância desse objeto esteja em uma máquina diferente daquela do objetocliente. O desenho a seguir baseado nas ideias propostas mostra como osobjetos distribuídos funcionam no seu modelo de requisição em formasimplificada. 19
  31. 31. Figura 4. Funcionamento da requisição e resposta em sistemas de objetos distribuídosBaseado em: (TANENBAUM e STEEN 2007). A condição atual de um objeto esta em seus valores e variáveisalocadas. No paradigma baseado em objeto o estado do de um programaconsiste em partes separadas cada uma das partes deve estar associadas auma entidade objeto. Como softwares baseados em objeto são logicamentedivididos a distribuição física dos objetos em processos diferentes ou maquinasé um a extensão natural. Esse tipo de sistema por objeto distribuído podeadotar uma arquitetura baseada em cliente e servidor, onde os servidoresgerenciam e os clientes invocam, essa invocação pode ser feita por meio deRMI (remote method invocation) (COULOURIS et al., 2008).3.2.3 Outras Arquiteturas Diversas arquiteturas podem ser descritas alem das já citadas e nãomenos importantes, como a centrada em dados, que se especifica segundoTANENBAUM e STEEN (2007), uma arquitetura que se comunica através deum repositório comum podendo ser ele passivo ou ativo. Normalmente essa 20
  32. 32. arquitetura é usada em sistemas distribuídos de arquivos compartilhados ondea comunicação quase sempre ocorre por meio de arquivos, as aplicações webnormalmente utilizam muito desse tipo de sistema.3.2.3.1 Remote Procedure Call Próximo ao ano de 1970 foi proposto um conceito e técnicadenominada chamada a procedimento remoto, tal conceito permitiria acomunicação entre processos remotos. O conceito se baseia na possibilidadede um computador poder invocar serviços de outro computador, de formaremota. Esse procedimento se mostra uma interação do tipo cliente e servidor,onde o cliente envia os parâmetros ao servidor, o servidor efetua determinadaoperação solicitada pelo cliente, e responde ao cliente o resultado através darede. Um dos objetivos da RPC, sigla que denomina esta operação é atransparência, outro dos demais é facilitar o desenvolvimento de aplicaçõesdistribuídas (DEITEL, 2005). Em momento qualquer pode haver a necessidade de querer transferircomputação de um sistema local para um remoto, considere uma tarefa queprecisa acessar varias unidades de arquivos em vários locais diferentes parareceber uma previa destes arquivos, ao invés de acessas ele mesmo esteslocais remotos e listar estes arquivos ele invoca o procedimento remoto doslocais que estes arquivos estão, e recebe apenas os resultados, isto pode serfeito com uma RPC e é denominado migração de computação. Também existea migração de processo, uma extensão da migração de computação, nestecaso, tente supor que um processo que é solicitado execução, nem sempreserá executado no computador onde teve inicio, isso pode ocorrer para queseja possível balancear carga, acelerar o tempo de computação, a execuçãodeste processo pode ser mais eficiente em outra plataforma, entre outros. Esseserviço pode ser feito através de uma RPC (SILBERSCHATZ, 2010). A RPC segundo TANENBAUM e STEEN (2007) é uma técnica depassagem de mensagem que é programada de forma transparente aodesenvolvedor, permite invocação de métodos em computadores remotos. AIdeia é simples o procedimento que chama não deve estar ciente de que estachamando um procedimento em outro computador e o mesmo se aplica a queesta executando. 21
  33. 33. 3.2.3.2 O CORBA Os serviços CORBA são descritos através de uma interface escrita emIDL (interface definition language), que são métricas de especificação deinterfaces dos objetos servidores que os clientes precisarão possuirconhecimento. CORBA não está ligado a uma única plataforma como esta oRMI com Java, que será descrito em breve. Há mapeamentos IDL para aslinguagens mais utilizadas e, podendo ser escritos para futuras linguagens querequeiram este suporte sendo assim mais accessível. CORBA permite a trocade mensagens entre dois objetos remotos e que os objetos locais possamefetuar chamadas de métodos de forma remota GOULART E GEYER (2000).O CORBA é uma grande ideia, mas graças a concorrência comercial nãoobteve grande sucesso. Um exemplo de aplicação que veio de alternativa aoCORBA é a Microsoft que, criou sua própria forma de comunicação distribuída,denominada de DCOM (Distributed Component Object Model), que funcionaapenas em ambiente Microsoft, diferente do CORBA. O CORBA possui o ORB(Object Request Broker) ou agente de requisição de objetos é um módulointermediário entre cliente e objeto, sendo responsável em aceitar a requisiçãodo cliente, enviá-la para o objeto e depois devolver o resultado, é um tipo demiddleware3 (IBM, 2003; IBM, 2007; DEITEL, 2005). Vários sistemas de objetos distribuídos foram concebidos ao longo dosanos, mas os mais promissores para o desenvolvimento de aplicações emcluster do tipo Beowulf foram CORBA e Java RMI. Existe também MicrosoftDCOM que é uma alternativa viável para o Windows baseados em clusters porser da própria Microsoft e fornecer melhores serviços em seu ambientehomogêneo STERLING (2002). Mais detalhes sobre essa tecnologia de clusterBeowulf serão concebidos ao longo do trabalho, pois será a tecnologia usadapara exemplificar a passagem de mensagem com MPI e PVM. CORBA é útil em muitas situações por causa da maneira fácil queCORBA integra máquinas múltiplas, com tamanhos que variam de mainframesa desktops e sistemas embarcados, é o middleware de escolha para grandesou nem sempre tão grandes empresas. Um exemplo de situação segundo 3 Software que ajuda a fornecer portabilidade, transparência e interoperabilidade emsistemas distribuídos DEITEL (2005). 22
  34. 34. DEITEL et al. (2005) é quando as plataformas de linguagem a se comunicarsão diferentes, elas podem operar entre si pelo acesso a um núcleo CORBAcomum diferente de Java RMI que só se comunica com objetos Java. Um dosseus mais importantes, bem mais frequente, que o utiliza é em servidores quedevem lidar com grande número de clientes, com taxas de sucesso elevadas,com alta confiabilidade.3.2.3.3 A Invocação de Método Remoto Como CORBA, Java RMI permite a invocação de métodos em objetosremotos, ao contrario de CORBA, RMI é de uma facilidade profunda,construída inteiramente em Java e não requer uma IDL, em Java RMI quandovocê referência um objeto remoto ele pode ser usado exatamente como seestivesse local STERLING (2002). Como descrito por CHEN et al. (2001), o esquema de entrega demensagens pode ser implementado como um processo síncrono, ou umprocesso assíncrono. Por exemplo, a um sistema de distribuição síncrona podeser implementado usando sockets, uma entrega assíncrona pode serimplementado como um conjunto de invocações de métodos Remotos (RMI). O Java Remote Method Invocation (RMI) permite que um objeto sendoexecutado em uma máquina virtual Java contate métodos em um objeto emexecução em outra máquina virtual Java. RMI fornece suporte para acomunicação remota entre programas escritos na linguagem de programaçãoJava (ORACLE, 2012). Se invocar um método em um outro computadorremoto, usando a mesma sintaxe de chamada a um método local (DEITEL etal., 2005). Como a popularidade da tecnologia de objetos aumentou, foramdesenvolvidas técnicas para permitir que as chamadas para objetos remotos,levando ao que é conhecido como invocação de método remoto (RMI). UmaRMI é essencialmente o mesmo que uma RPC, exceto que se opera emobjetos, em vez de aplicações (TANENBAUM e STEEN, 2007). 23
  35. 35. 3.2.3.4 A API de Sockets Já citamos o termo socket anteriormente, mas não o contextualizamosde forma mais exata, mesmo sobre uma visão geral as citações a seguirdeixaram mais claro a função de um socket. Como descrito em TANENBAUM(2011), cada socket tem um número de socket que representa um endereço,que consiste no endereço IP do host e em um número de 16 bits local paraesse host, chamado porta. Porta é o nome usado pelo TCP para um TSAP(Transport Services Access Point). Em TCP para que o serviço TCP funcione, énecessário que uma conexão seja explicitamente estabelecida entre um socketda maquina transmissora e um socket da maquina receptora. Um socket podeser utilizado por varias conexões ao mesmo tempo. Em outras palavras, duasou mais conexões podem terminar no mesmo socket. Complementando e afirmando termos citados por TANENBAUM(2011), KUROSE e ROSS (2006), diz que um socket é uma interface decomunicação em rede, e que possui um buffer usado para escrita e ou leitura,um socket pode ter múltiplas conexões simultâneas, é pelo socket que osdados entram e saem. Neste capítulo foi citado muito sobre sistemas distribuídos, se forexemplificado no cotidiano segundo os conceitos abordados, eles sãorealmente transparentes, e nos fornecem os mais variados serviços, umexemplo são os jogos, não se vê a comunicação entre os objetos no jogo, sevê os eventos das ações de jogadores em locais remotos, que criam eventosna tela que aparentam ocorrer localmente, estes eventos são criados de formadistribuída quem está jogando pensa que está ocorrendo em sua tela. Anteriormente foram feitas citações sobre as arquiteturas de sistemasdistribuídos, e ferramentas como Java RMI e CORBA, que permitemimplementar, estes conceitos junto a os de redes ajudam a entender ofuncionamento da passagem de mensagem em uma rede a grosso modo, ecomo os diversos sistemas podem se comunicar em uma arquitetura deobjetos de múltiplas ou de uma única plataforma, todos os conceitos abordadospermitem ter uma ideia mais definitiva de um sistema distribuído e seufuncionamento. A RPC foi o que iniciou o conceito de invocação de métodoremoto, e permitiu o surgimento de derivações como o RMI que como já foi 24
  36. 36. visto, é a forma Java de fazer RPC. Finalizando esta revisão geral, com estesconceitos, se é possível ter ideia da complexidade, que se pode verificar existirno desenvolvimento de um grande sistema distribuído, permitindo conhecer osaspectos gerais de sua estrutura de funcionamento, que são essenciais aoentendimento do conceito de passagem de mensagem. 25
  37. 37. 4 PARALLEL VIRTUAL MACHINE4.1 HISTÓRICO De Acordo com STERLING (2002), a biblioteca de programaçãoparalela PVM (Parallel Virtual Machine) foi produzida pelo HeterogeneousNetwork Project, um esforço conjunto da Oak Ridge National Laboratory,University of Tenesse, Emory University e Carneige Mellon University, em1989, para facilitar o campo da computação paralela heterogênea. O PVM foium dos primeiros sistemas de software a possibilitar que programadoresutilizassem uma rede de sistemas heterogêneos, os sistemas heterogêneossão constituídos por máquinas diferentes com sistemas operacionais dos maisdiversos tipos ou sistemas MPP4 (Massively Parallel Processors) paradesenvolver aplicações paralelas sobre o conceito de passagem demensagens. Se diz que um marco importante na aplicação prática do modelode passagem de mensagens foi o desenvolvimento de PVM, uma biblioteca defunções vinculáveis que poderia permitir que as rotinas em execução emcomputadores separados, mas em rede para trocar dados e coordenar suaoperação. Como descrito na UTK e ORNL (2010) PVM é um subproduto de umprojeto de rede heterogênea em curso pesquisas de computação envolvendodiversos autores e suas instituições. Os objetivos gerais deste projeto sãoinvestigar questões, e desenvolver soluções para, a computação heterogêneaconcorrente. PVM é um conjunto integrado de ferramentas de software ebibliotecas que emula o uso geral, flexível, estrutura de computaçãoheterogênea simultânea em computadores interligados de arquitetura variada.4.2 ABORDAGEM GERAL DE FUNCIONAMENTO E APLICAÇÃO PVM (Parallel Virtual Machine) é um pacote de software que permiteque uma coleção heterogênea de Unix e ou Windows unidos entre si por umarede para ser utilizado como um computador de grande porte paralelo e único.Assim grandes problemas computacionais podem ser resolvidos de maneira 4 São vários computadores, cada com seu processador, conectados por uma rede dealta velocidade, para obtenção de alto desempenho (DEITEL, 2005 ). 26
  38. 38. mais econômica, usando o poder agregado e memória de muitoscomputadores comuns. O software é muito portátil. Objetivo geral do ParallelVirtual Machine consiste em montar uma máquina virtual de n processadores eusar estes para executar tarefas em paralelo. O PVM é dividido em três partesprincipais, entre elas o console é uma das partes e importantíssimo pois éusado para montar a máquina paralela virtual. O daemon um programa queroda em cada máquina do ambiente estabelecendo a comunicação entre asdiversas máquinas E biblioteca da API nesta biblioteca que estão os serviçosou funções se assim dizer e sub-rotinas que instruem o código a dividir astarefas entre os diversos daemons (CSM, 2011). PVM apresenta API com serviços intuitivos, oferece suporte paratolerância à falhas, monitoração, entre outros, que é um diferencial ao MPI quenão fornece tolerância a falhas. A biblioteca PVM permitir que um grupo decomputadores interconectados, possivelmente com diferentes arquiteturas,possa trabalhar cooperativamente formando uma máquina paralela virtualúnica, o que contribuiu para torná-lo um padrão de respeito. Dito como ummecanismo de distribuição livre que oferece recursos para computaçãoparalela com uma utilização de pouca complexidade (BACELAR, 2006). De acordo com GEIST et al. (1994), e STERLING (2002),complementado as descrições anteriores o PVM é composto de duas partes. Aprimeira parte, o daemon, chamado pvmd3, executado em todos oscomputadores do nó que formarão a máquina virtual paralela. O daemon rodaem background em cada um dos nós, formando a maquina virtual, sendoresponsável pela troca de mensagens entre eles além da coordenação dastarefas que estão em execução nos nós, As tarefas executadas através doPVM usam um número inteiro como identificador, o task identifier (TID), quesão utilizados nas mensagens que são trocadas entre os computadores queformam a máquina virtual paralela. A segunda parte é a biblioteca de funções.BACELLAR (2008) descreve o PVM com a seguinte citação, o PVM, é umabiblioteca de comunicação que emula computação concorrente heterogênea depropósitos gerais em computadores interconectados, qual pode se trabalharcom diversas arquiteturas. 27
  39. 39. Ainda conceituando o funcionamento da PVM agora sobre umaabordagem de STERLING (2002) que afirma a versão de divisão em duaspartes do PVM e ainda exemplifica seu funcionamento. O sistema de PVM écomposto de duas partes. A primeira parte é uma daemon, chamado pvmd3, epor vezes abreviado pvmd, que reside em todos os computadores quecompõem a máquina virtual, (um exemplo de um programa de daemon, é oprograma de email, que roda em segundo plano e trata todo o correioeletrônico de entrada e saída em um computador). Segundo DANTAS (2005), PVM foi estruturado com a intenção deoferecer, facilidade durante o desenvolvimento em ambientes de programaçãoparalela e a criação de um ambiente sem complexidade, com cluster decomputadores de forma a unificar computadores homogêneos ou heterogêneosnuma imagem de sistema único. PVM é baseado em um modelo de computação dinâmica onde os nósdo cluster podem ser adicionados e excluídos da computação em tempo real, eas tarefas paralelas podem ser geradas ou mortas. PVM não possui ricosrecursos de passagem de mensagem como o MPI, sendo um modelo demaquina virtual tem um conjunto de características que o tornam interessantecomo a comunicação entre seus daemos que o tornam mais dinâmico ecomporta abstração diferente da MPI. O controle de processos maior no PVM,sendo permitido iniciar, interromper, e controlar processos em tempo deexecução, ao passo que no MPI, o controle é bastante restrito sendo permitidosomente o controle de grupo de tarefas. A abstração não existe no MPI, poisnão possui o conceito de máquina virtual paralela. Está mais voltado para oconceito de passagem de mensagem. No PVM, ao contrário, é possívelconsiderar a coleção de máquinas como sendo um único recursocomputacional (STERLING, 2002). Este programa obtém o seu hostname e transmite ao mestre usandouma sequência de três chamadas, pvm_initsend para inicializar o buffer deenvio (transparente), pvm_pkstr para colocar uma sequencia de caracteres emuma no buffer de envio e, pvm_send para transmiti-lo para o processo destinoespecificado pelo ptid, etiquetando a mensagem com o número 1. Na figuraabaixo é mostrado um exemplo pratico de uma rotina PVM segundoSTERLING (2002). 28
  40. 40. Figura 5. Estrutura de Código PVM. Fonte: STERLING (2002). PVM é capaz de resistir a falhas no equipamento onde esta instalado ena rede. Ele não recupera automaticamente depois de um acidente, masfornece primitivas de notificação para permitir encontrar erros defuncionamento (UTK e ORNL, 2010 ). PVM não somente suporta o nível de portabilidade como MPI, mas oexpande para o nível de interoperabilidade, um mesmo programa pode estarinteragindo com outro gerado para uma arquitetura completamente diferente(BARCELAR, 2006). As aplicações paralelas possuem vários processos que são executadosconcorrentemente um ao outro. Todos os processos precisam ser gerenciadospelos daemons respectivos. As funções do PVM são divididas entre funções decontrole que controlam os processos e funções que gerenciam o envio dedados pelos sockets (GEIST, et al., 1994). 29
  41. 41. Neste capítulo foi possível verificar que o PVM trabalha com o conceitode maquina virtual, onde cada daemon, é uma maquina virtual que secomunica com as demais, que existe um daemon mestre e demais escravossubmissos ao mestre. Diferente do MPI, que não trabalha sobre esse conceitode abstração o que não permite a integração de ambientes diversos, diferentedo MPI não possui uma IDL. Se for verificado cautelosamente, todo esseambiente distribuído permite comunicar diversos computadores para aumentode desempenho de aplicações, e redução de processamento centralizado peladistribuição de tarefas, conceito muito útil para aplicações de grande porte comgrande carga de tarefas e processamento. Podemos assim concluir que o PVMapesar de não oferecer quantidades tão ricas de serviços quanto o MPI, aindaassim é uma alternativa viável para paralelismo. 30
  42. 42. 5 MESSAGE PASSING INTERFACE5.1 HISTÓRICO Conforme TANENBAUM E STEEN (2007), em determinado momento,a necessidade de independência de hardware, e de plataforma, resultou nacriação de um padrão de troca de mensagem, com a denominação de interfacede passagem de mensagem, ou também denominada MPI (Message PassingInterface). A Ferramenta MPI é projetada para aplicações paralelas, e por isso,projetada para comunicação transiente usando a rede subjacente, a MPI foiprojetada para permitir comunicação em rede através da passagem demensagem. O MPI é o resultado do esforço de aproximadamente 60 pessoas,pertencentes a cerca de 40 instituições, maior parte fabricantes dos EstadosUnidos e Europa. A grande maioria dos fabricantes de computadores paralelosse fez presente, de algum modo, da elaboração do projeto MPI, em conjuntocom pesquisadores de instituições de ensino, laboratórios e autoridades dogoverno. Tudo teve início do processo de criação de um padrão, queaconteceu no seminário sobre padronização para troca de mensagens emambiente de memória distribuída, realizado pelo Center for Research onParallel Computing, em abril de 1992. Neste evento, as ferramentas básicaspara uma padronização de troca de mensagens foram discutidas e foiestabelecido uma espécie de grupo que iria trabalhar para dar continuidade àpadronização. O arcabouço preliminar foi criado por Dongarra, Hempel, Hey eWalker, em novembro 1992, sendo a versão revisada finalizada em fevereirode 1993 dando origem a MPI 1.0 (FERREIRA FILHO E IGNÁCIO, 2002). Historicamente, O MPI surgiu na versão MPI-1.0 em (Junho de 1994)para a MPI-1.1 em (12 de junho de 1995) para MPI 1.2 em (18 de julho de1997), com vários acréscimos e publicações de funcionalidades como parte dodocumento MPI-2, a MPI-2.0 veio em (18 de julho de 1997), com novasfuncionalidades, a MPI-1.3 (30 de maio de 2008) foi a combinação, por razõeshistóricas dos documentos 1.1 e 1.2 e alguns documentos de erratas para umdocumento combinado, e para MPI-2.1 (23 de junho de 2008), combinando osdocumentos anteriores. Versão MPI-2.2 (Setembro de 2009), acrescentou 31
  43. 43. explicações e correções de erros e sete novas rotinas. Em setembro de 2012 aMPI 3.0 foi lançada, a 3.0 é uma extensão da 2.2 (MPI STANDARD, 2012).5.2 FUNÇÃO DA MPI MPI é uma biblioteca de especificação de passagem de mensagem,usada para comunicação entre processos. MPI aborda principalmente apassagem de mensagem no modelo de programação paralela, em que osprocessos são movidos para o espaço de endereço de um processo para o deoutro processo, através da cooperação entre processos. MPI é umaespecificação não uma implementação, existem varias implementações daMPI. MPI não é uma linguagem, e todas as operações da MPI sãodesenvolvidas em procedimentos ou funções de acordo com a linguagemapropriada, que em C e Fortran pertencem ao padrão MPI. Esta biblioteca édesenvolvida por cientistas de computação, programadores, entre outros, oprojeto foi criado por diversos fornecedores de programas paralelos em umprojeto aberto (MPI STANDARD, 2012). Um dos Objetivos do projeto MPI, é permitir ser implementada comouma biblioteca, sem necessidade de pré processamento adicional oucompilação. Assim não se pode esperar ou supor que a chamada decomunicação tenha informações sobre tipo de dados variáveis no buffer decomunicação, essas informações devem estar explicitas (MPI STANDARD,2012).5.3 VISÃO GERAL DE FUNCIONAMENTO Antes de falar mais da MPI que trabalha sobre o conceito deparalelismo e distribuição de tarefas através da passagem de mensagem, sedeve conceituar uma tarefa paralela e uma sequencial. De acordo com DEITEL(2005), e MACHADO e MAIA (2007), abstraindo de uma forma simples e poucoabrangente, a execução de uma instrução pode ser paralela ou sequencial,imagine a sequencial quando uma única tarefa é criada, por uma aplicaçãocomo no nosso exemplo abaixo, e processada por um único processador, e aparalela, quando uma aplicação gera varia tarefas que pode ser processadaspor diversos processadores ou um único cada uma concorrendo com a outra, 32
  44. 44. esse conceito é uma abstração simples é claro, mas explica a diferença,também podemos exemplificar varias aplicações gerando cada uma sua tarefa,ou varias aplicações gerando varias tarefas, a imagem a seguir abstrai esseconceito conforme a explicação. Figura 6. Múltiplas tarefas e única tarefa. Baseado em: DEITEL (2005) e MACHADO e MAIA (2007). MPI aborda o modelo de passagem de mensagens de computaçãoparalela, em que processos com espaços de endereços separadossincronizam-se e transferem dados a partir do espaço de endereço de umprocesso para a de outro pelo envio e recebimento de mensagens (STERLING,2002). ..., considera falhas sérias, como quedas de processos ou partições de rede, sejam fatais e não requeiram recuperação automática. A MPI adota premissa de que a comunicação ocorre dentro de um grupo conhecido de processos. Cada grupo recebe um identificador. Cada processo dentro de um grupo também recebe um identificador (local). Por conseguinte um par (groupID, processID) identifica automaticamente a fonte ou o destinatário de uma mensagem e é usado no lugar de um endereço de nível de transporte. Vários grupos de processos, possivelmente sobrepostos, poderão estar envolvidos em um serviço de computação, e todo eles poderão estar em execução ao mesmo tempo (TANENBAUM E STEEN, 2007, p.86). A descrição abaixo mostra serviços básicos fornecidos pela MPI, comdetalhes simplistas de implementação segundo a MPI STANDARD de 2012: a) Operação de envio de mensagem; int MPI_Send( void *buf, int cont, MPI_Datatype tipo, int dest, int tag, MPI_Comm grupo ); 33
  45. 45. b) Operação de recepção de mensagem. int MPI_Recv( void *buf, int cont, MPI_Datatype tipo, int origem, int tag, MPI_Comm grupo, MPI_Status *st ); A MPI usada tanto para paralelismo de dados como paralelismo detasks (tarefas). Comunmente desenvolvido para C, C++ e Fortran,afuncionalidade e a semântica (significado das construções) são as mesmas,dentro dos limites de cada linguagem. A forma de expressar, ou seja, asintaxe é semelhante (não é idêntica por as linguagens terem sintaxesdiferentes). É comum, mas não necessário, que os processos tenham acesso aum mesmo sistema de arquivos, podendo compartilhar arquivos (é problemadeles o fazer, MPI apenas transmite mensagens entre processos)(PENTEADO, 2010). Em C ou Fortran quase todas as chamadas retornam um código queindica a conclusão bem sucedida da operação solicitada. Sempre que possívelas operações MPI retornam um erro se possível, esse erro é um código de erroda própria. Por padrão sempre que um erro ocorre a operação MPI é abortada,exceto para operações de arquivos (MPI STANDARD, 2012). As formas de comunicação é através de operação com bloqueio ou(blocking operation) onde o processo só pode continuar para a próximaoperação quando tiver finalizado a que já iniciou, ou operação sem bloqueio(non-blocking operation), a qual o processo pode continuar para a próximaoperação antes de terminar a que iniciou. De uma maneira simples, ascomunicações podem ser vistas como, síncronas, onde o processo que remetedeve esperar que o processo destinatário inicie o recebimento dos dados. Outambém as assíncronas onde o processo remetente não precisa esperar odestinatário começar a receber os dados, podendo continuar com a próximaoperação. Alcançar a linha seguinte do programa não significa que odestinatário já esteja recebendo os dados (PENTEADO, 2010). MPI gerencia a memória do sistema que é usado para uma mensagemde buffer e para armazenamento de representações internas de vários objetosMPI, tais como grupos, comunicadores, tipos de dados, etc. Esta memória nãoé diretamente acessível para o usuário (MPI STANDARD, 2012), se pode 34
  46. 46. verificar na figura abaixo o modelo de troca de mensagem, cada computadorpossui seu recurso de memória e processamento local, representados naimagem por processador e memória, a nuvem representa a rede interna, esseprocesso da MPI se baseia em memória distribuída, onde cada processadortem sua memória local, acessível somente a ele. No modelo de memóriacompartilhada múltiplos processadores acessam a mesma memória, a formade acesso a memória influencia na implementação das bibliotecas decomputação paralela (DIETEL, 2005), mas estes detalhes não serão abordadosneste trabalho.Figura 7. Modelo de troca de mensagens: Processadores com sua memória local na LAN.Baseado em: Segundo conceituado por MPI STANDARD (2012) e PENTEADO (2010).5.4 ALGUMAS FUNÇÕES MPI A tabela abaixo demonstra alguns serviços disponíveis na API depadrão MPI: Primitivas Significados MPI_bsend Anexa mensagem de saída a um buffer local de envio MPI_send Envia uma mensagem e espera até que seja copiada para buffer local ou remoto MPI_ssend Envia uma mensagem e espera até o recebimento começar MPI_sendrecv Envia uma mensagem e espera por resposta MPI_isend Passa referencia para mensagem de saída e continua 35
  47. 47. MPI_issend Passa referencia para mensagem de saída e espera até o recebimento começar MPI_recv Recebe uma mensagem ; bloqueia se não houver nenhuma MPI_irecv Verifica se há uma mensagem chegando mas não bloqueia MPI_Gather Recolhe um elemento de dados de cada processo (bloqueando). MPI_Scatter O oposto de Gather (bloqueando). MPI_Bcast Manda a mesma mensagem para todo mundo (bloqueando). MPI_Sendrecv Combina Send com Recv em uma única função Tabela 1: Primitivas mais intuitivas da MPI. Baseado em: (TANENBAUM e STEEN 2007 E MPI STANDARD). A semântica das primitivas de comunicação MPI nem sempre sãodiretas e, ás vezes, primitivas diferentes podem ser trocadas sem afetar acorreção de um programa, pois possuem a mesma função, mas sãoimplementadas de forma diferente. A razão pela qual são suportadas tantasformas diferentes de comunicação é que isso da aos desenvolvedores desistemas MPI possibilidades suficientes para melhorar o desempenho dasaplicações (TANENBAUM E STEEN, 2007). A seguir uma das funções MPI mais detalhada em seus argumentos daassinatura segundo MPI STANDARD (2012) para entendimento geral:LINGUAGEM ASSINATURAC int MPI_Bcast(*buffer, count, datatype, root, comm)Fortran CALL MPI_BCAST (buffer, count, datatype, root, comm, ierr)ARGUMENTO DESCRIÇÃO DO ARGUMENTObuffer Endereço inicial do dado a ser enviadocount Variável inteira que indica o número de elementos no bufferdatatype Constante MPI que identifica o tipo de dado dos elementos no buffer;root Inteiro com a identificação do processo que irá efetuar um broadcast, enviar a mensagem;comm Identificação do comunicador. Tabela 2. Argumentos de serviços em C e Fortran. Baseado em: MPI STANDARD (2012). 36
  48. 48. Conforme já dito a MPI veio com o intuito de padronizar a troca demensagem em ambientes paralelos, a MPI não é uma linguagem, e sim umabiblioteca que pode ser desenvolvida, seguindo determinadas métricas queestão descritas em seu manual com sua IDL, a MPI fornece diversos serviçospra a troca de mensagem, muitos serviços tem a mesmo função, segundoSTERLING (2002), mas implementações diferentes, para oferecer aosdesenvolvedores mais flexibilidade para otimização. O MPI, como se pôdeobservar, é usado para comunicação entre processos, para distribuir carga deprocessamento entre hosts, será exposto no final deste trabalho ofuncionamento da MPI em um cluster, que mostrará a passagem de mensagemde um nó a outro. 37
  49. 49. 6 CLUSTER De acordo com STERLING (2002), clustering é um conceito poderoso,e técnica para derivar e estender as capacidades de diversas classes decomponentes existentes. Na natureza, a agregação é um mecanismofundamental para criar complexidade e diversidade através da agregação esíntese de bases simples de elementos. O resultado é nada menos que aevolução e estrutura do universo, a moléculas dos compostos que ditam aforma e os atributos de todos os materiais e da forma e comportamento de todaa vida multicelular, incluindo nós mesmo. Essa visão de STERLING não éexplicitamente computacional é claro mas traz uma certa visão sobre opotencial da técnica por assim dizer. Mas sobre uma visão de PITANGA(2008), o termo clustering, se da do inglês para o português como agregado, ereferencia atualmente em duas categorias básicas, o de alta performance e dealta disponibilidade que trataremos como HA e HPC. Ainda de acordo com PITANGA (2008), a tecnologia de cluster não énada novo, vem de desde os anos 80, mas só comoçou a se popularizar devidoa três fatores, entre eles a construção de processadores de alto desempenho,o surgimento das redes de baixa latência, e a padronização das ferramentas decomputação paralela e distribuída. Para simplificar o conceito de cluster sobre uma visão de alto nível épossível citar o conceito de TANENBAUM e STEEN (2007), o mesmo definecluster, como um conjunto de maquinas conectadas em rede, trabalhandocomo um único recurso. Se abstrairmos esses conceitos já ditos podemosobservar que a transparência está presente neste recurso, pois quem o usanão vai perceber diversos computadores e sim um único recurso.6.1 TIPOS E TECNOLOGIAS Existem diversos tipos e tecnologias de cluster, como O Beowulf,OSCAR, OpenMosix, OpenSSI, entre outras tecnologias de agregaçãoproprietárias ou não. Para este trabalho citaremos a tecnologia Beowulf, poissegundo STERLING (2002), e PITANGA (2008) foi a tecnologia que mais sepopularizou e popularizou as bibliotecas de passagem de mensagem MPI e 38
  50. 50. PVM, além de ser a tecnologia mais comentada em trabalhos científicos nesteramo . Estes sistemas Beowulf se tornaram extremamente populares,fornecendo preço excepcional, alta performance, flexibilidade de configuração,atualização, e escalabilidade e é baseado em Linux (STERLING, 2002).Segundo SILBERSCHATZ (2010) o interessante nesta tecnologia é que nãousa um pacote de software específico, sendo criado a partir de um conjunto debiblioteca de código fonte aberto, que permite a comunicação entre os diversosnós de um cluster, e ainda não exigem hardware específico, sendonormalmente construídos com vários computadores pessoais. Como citado anteriormente PITANGA (2008) classifica cluster em duascategorias, HA e HPC ou em seus originais em inglês high-availability e high-performance-computing. Os sistemas do tipo HA tem o objetivo de manter oserviço seguro de forma que fique disponível o maior tempo possível, os HPCtem o objetivo de fornecer alta performance computacional. Já sobre uma visãode DEITEL (2005), os clusters podem ser divididos em três categorias, sendoque adiciona um tipo, chamado balanceamento de carga, que seriaresponsável por distribuir requisições, imaginemos milhares de clientesexigindo determinado serviço, o balanceamento de carga, seria o técnica dedividir estas requisições para diversos outros computadores que possuíssem omesmo serviço, ao invés de sobrecarregar apenas um computador. A umadivergência entre os tipos entre estes dois autores, isso ocorre pois PITANGA(2008) inclui o balanceamento de carga como do tipo HA.6.2 EXEMPLIFICAÇÃO DA PASSAGEM DE MENSAGEM Em descrições de STERLING (2002), e relembrando os conceitos derede aqui relatados, considere a comunicação em rede entre os nós de umcluster usando TCP/IP o protocolo padrão de comunicação nesta tecnologia,sockets também são usados, mas quem usa as tecnologias de passagem demensagem MPI e PVM não se preocupara em implementar a comunicaçãoapenas irá configurar os destinos que aqui são denominados nós essacomunicação já está implementada nas primitivas MPI e PVM, e só sãosolicitados argumentos nos casos onde houve maior esforço devido a 39
  51. 51. necessidade de customização de comunicação. Isso se estiver usando com ointuito de montar um cluster. Se deve inicialmente, para permitir a passagem demensagem, configurar os computadores que serão usados, para issonecessitamos de um IP em cada um dos computadores, os computadoresdevem estar em uma rede de confiança e configurada corretamente, digoroteadores ou switches, uma das bibliotecas MPI ou PVM devem estarinstaladas. O passo a passo da configuração não é objetivo deste trabalho,mas algumas configurações serão demonstradas para fim de esclarecimento, énecessário um conhecimento básico do ambiente GNU/Linux PITANGA (2008).O DHCP (Dinamic Host Configuration Protocol) é um protocolo que permiteconfiguração dinâmica de endereços de computadores que usam TCP/IP. ODHCP evita ter de ir computador por computador configurar seus endereços.Se pode gerar um arquivo DHCP padrão configurando o arquivo dhcpd.conf doLinux (PITANGA, 2008). Figura 8. Configurando DHCP em Cluster Beowulf. Fonte: PITANGA (2008). O nó mestre neste caso, terá um domínio próprio com o nomemestre.pinguim.br, e assim os escravos terão o nome escravo1.pinguim.br, 40
  52. 52. escravo2.pinguim.br, e assim por diante. Desta forma trabalharam em conjuntodentro da mesma rede. Estas e outras configurações devem ser feitas para ofuncionamento do cluster, nada de complexo para quem possui algumaafinidade no ambiente Linux. Com estas configurações realizadas de formacorreta os escravos deverão saber quem é seu mestre e a quem devemresponder os resultados, e o mestre a quem deve mandar as solicitaçõesPITANGA (2008). Visto estes conceitos analisemos a passagem de mensagem segundoa seguinte imagem: Figura 9. Nó controlador e escravos. Baseado em: PITANGA (2008) e STERLING (2002). 41
  53. 53. Os usuário de um cluster não percebe que está interagindo comdiversos computadores e que as tarefas estão sendo divididas, ele vê apenasas respostas as solicitações efetuadas, a comunicação entre as bibliotecas e osistema operacional ocorre por meio de system calls5, ou seja, chamadas dosistema, este conceito se baseia no princípio de que a aplicação, neste caso asbibliotecas, não são as responsáveis por gerenciar os recursos do hardware, osistema operacional é que gerencia estes recursos e retorna os resultados asbibliotecas STERLING (2002). Visualize a figura 9 de forma a acoplar a passagem de mensagemusando as bibliotecas MPI ou PVM, a mensagem sai do nó mestre e vai até osnós escravos, que por sua vez processam as requisições e retornam ao nómestre. Desta forma imagine uma aplicação que cria diversas tarefas, e que éusada por diversos usuários que fazem diversas requisições. A passagem demensagem, que é aplicada neste processo de clustering é essencial, asbibliotecas que ajudam nesta tarefa se mostram eficientes neste âmbito, poishaveria menos esforço computacional, distribuir estas tarefas que as computarlocalmente. Assim se pode concluir que sistemas distribuídos é um conceitoeficiente e transparente, e é permitido se dizer necessários. Sem a evoluçãodestes sistemas e dos que os permitiram surgir, nossos recursos atuais seriamineficientes, pois tarefas simples seriam muito mais complexas já que recursosdistribuídos teriam de ser todos locais. Com a análise dos ambientes atuais,também se pode concluir, que estes recursos distribuídos serão cada vez maiscomuns e solicitados, e a transparência, ou seja, o grau de abstração aousuário, mais alto, e os recursos distribuídos estarão cada vez mais acessíveis,como é possível observar hoje, com o surgimento da cloud computing, quemostra o poder da integração e abstração dos recursos remotos. 5 È um serviço solicitado a o sistema operacional, forma de uma aplicação interagircom o sistema operacional transferindo responsabilidades (SILBERSCHATZ, 2010). 42
  54. 54. 7 COMPARATIVO ENTRE PVM E MPI Antes de iniciar uma comparação entre as bibliotecas de cluster, énecessário saber o que deve ser comparado, pois deve haver pontos decomparação, é necessário criar métricas de comparação para deixar bemdefinidos este pontos. Para efetuar este procedimento serão definidas asseguintes métricas. Quanto a portabilidade, interoperabilidade, tolerância afalhas e nível dos serviços. Estes parâmetros foram escolhidos com base nascaracterísticas descritas pelas literaturas que abordam estas bibliotecas, estascaracterísticas estão neste trabalho, e serão organizadas para permitir melhorvisualização das distinções das bibliotecas, as características descritas podemser encontradas em STERLING (2002) e PITANGA (2008) assim como nopróprio manual MPI e PVM. A comparação entre as MPI e PVM será feita em uma tabela, queorganizará as diferenças e homogeneidades das mesmas expostas nestetrabalho, a fim de expor essas características principais segundo as literaturasque as descrevem, permitindo realizar uma análise de possíveis aplicações dasmesmas em determinados ambientes. A tabela possuirá quatro linhas, que se referem aos itens de análise,sendo eles o serviço, interoperabilidade a portabilidade e a tolerância a falhas,ambos os itens estão na coluna que se designa a característica. A tabelapossuirá uma coluna dedicada a biblioteca PVM, onde em cada linha será dadauma descrição referente ao item da linha. O mesmo que o PVM será feito como MPI. Antes de comparar as bibliotecas será feita uma descrição dosignificado de cada item que a ser comparado, na tabela a seguir: 43
  55. 55. ITEM DESCRIÇÃOPortabilidade A portabilidade será definida como a capacidade de se compilar o código fonte e fazer uso do mesmo em qualquer plataforma BACELAR (2008).Interoperabilidade A interoperabilidade é dada como a capacidade de permitir a comunicação entre plataformas distintas. Ex.: A comunicação pode ser feita entre um sistema operacional Linux e um Windows STERLING (2002).Tolerância a falhas É dada como a capacidade de detectar e ou corrigir falhas STERLING (2002).Serviços O nível de serviço irá descrever qual das bibliotecas oferece melhor flexibilidade (múltiplas implementações para uma mesma tarefa) em seus serviços TANENBAUM E STEEN (2007). Tabela 3. Descrição dos itens a serem comparados. Fonte: Elaborado pelo autor. Já foi descrito qual significado de cada item, agora se pode analisar asbibliotecas e as vincular as características descritas, e se definir qual pode serusada em quais momentos. CARACTERÍSTICA MPI PVM A MPI é portável, o código A PVM possui pode ser compilado em portabilidade, o códigoPortabilidade outra arquitetura e pode ser usado em funcionar normalmente qualquer arquitetura sem sem qualquer mudança. mudanças. A PVM além de portável pode trabalhar em diversasInteroperabilidade A MPI não trabalha com o arquiteturas diferentes. conceito de abstração Trabalha com o conceito como PVM. de abstração dando ao usuário a imagem de um sistema único. A MPI possui diversas implantações para umaServiços mesma tarefa, permitindo A PVM não possui ricos ao desenvolvedor uma recursos de passagem de gama de possibilidades mensagem como a MPI. para otimizar a comunicação. Possui alguns serviços Ainda não possui serviços básicos de tolerância a de tolerância a falhas naTolerância a falhas falhas, como mensagens amplitude do PVM, adota a de erro de comunicação. premissa de que tudo está integro no ambiente. Tabela 4. Tabela comparativa entre PVM e MPI. Fonte: Elaborado pelo autor. 44
  56. 56. 8 CONCLUSÃO E TRABALHOS FUTUROS Com a análise da MPI e PVM, é possível verificar melhores aplicaçõespara ambas. Como foi escrito, a MPI possui diversas implementações parauma mesma tarefa, esta ideia permite ao desenvolvedor otimizar seufuncionamento de forma mais eficiente para determinada aplicação, ou seja,oferece diversos serviços para uma mesma tarefa. Assim a MPI pode serusada quando o objetivo é criar um ambiente de sistemas operacionaishomogêneos para comunicação paralela, onde o conceito de abstraçãopresente na PVM, não seja um requisito. A PVM pode ser usada emambientes heterogêneos, para integração de ambientes distintos, criando aimagem de um sistema homogêneo, ela é necessária em ambientes onde aabstração do mesmo é requisito, a PVM, é uma tecnologia mais antiga que aMPI, apesar de não fornecer serviços tão ricos, ainda se demonstra viável severificados seus aspectos. Descrita esta conclusão se pode verificar que osconceitos de sistemas distribuídos formam características importantes noconceito de cluster e nos serviços oferecidos por aplicações remotas, sedemonstrando essenciais atualmente. Para trabalhos futuros diversos paradigmas não foram abordados aqui,como a segurança e sistemas distribuídos, fato que é de suma importânciapara seu futuro. Para trabalhos futuros, serão analisadas as melhores formasde se implementar segurança em sistemas distribuídos de cluster, parafornecer serviços de maior confiabilidade sem remover a transparência destessistemas. 45

×