Influência da comunicação no rendimento de uma máquina paralela virtual baseada em Redes ATM Marcelo Souza *, Josemar Souza *, Milena Micheli ** ( [email protected], [email protected], [email protected]) * ** Universidade Católica do Salvador Curso de Informática Salvador, Bahia, Brasil Projeto REMAV – SALVADOR (REMA) Salvador, Bahia – Brasil Resumo: Este artigo apresenta a avaliação do desempenho de uma máquina paralela virtual de baixo custo utilizando uma rede de comunicação de alta velocidade padrão ATM. O trabalho objetiva a criação e avaliação de uma máquina paralela virtual entre instituições ligadas ao projeto REMAV - SALVADOR. Foram utilizados a estrutura de Rede do projeto REMAV – SALVADOR, criando-se clusters de máquinas em diferente localidades a fim de avaliar o desempenho (performance) dessa máquina “rodando” em rede padrão ATM em comparação a uma máquina “rodando” em rede padrão Ethernet. Palavras chave: ATM, REMA, Ethernet, PVM, NOW, SPMD, Redes de Computadores, Sistemas Homogêneos, Computação Paralela, Linux. 1 - Introdução a Computação Paralela Virtual Computação Paralela refere-se ao conceito de aumento de velocidade na execução de um programa através da divisão deste em pequenos fragmentos que são distribuídos e processados paralelamente, cada fragmento em um processador. Com isto obtemos um ganho de performance na execução de uma tarefa. A premissa é a de que se executando uma tarefa dividida entre vários processadores conseguiremos executa-la muito mais rápido. [DIETZ98] Esses sistemas são compostos por vários processadores que operam concorrentemente, cooperando na execução de uma determinada tarefa. Nas chamadas arquiteturas paralelas o objetivo principal é o aumento da capacidade de processamento, utilizando o potencial oferecido por um grande número de processadores [STE99]. As máquinas paralelas de baixo custo, conhecidas como NOW1, utilizam as redes de computadores comerciais, locais e/ou remotas para paralelizar suas transações. Utiliza um software que permite que um conjunto heterogêneo ou homogêneo de computadores (série, paralelos ou vetoriais) seja visto como uma única máquina. Dentre outros softwares poderemos utilizar o PVM2 [ALG94] , que é um software que permite que um conjunto heterogêneo ou homogêneo de computadores seja visto como uma única máquina, sendo a portabilidade uma de suas características principais – as bibliotecas de rotinas de comunicação entre processos são “standard” de fato [DON-LUQ99]. A independência de plataforma que o PVM disponibiliza é indubitavelmente interessante; um software pode ser executado em ambientes diferentes, este fato gera segurança para desenvolvedores de software criarem aplicações paralelas, tendo em vista a portabilidade possível. 1.1 Necessidade de Computadores Paralelos O alto custo de máquinas paralelas de qualidade voltada somente para este fim impede que muitas instituições que necessitem de grande poder de processamento adquiram uma. Com a chegada do limiar do aumento de capacidade de processamento das máquinas seqüenciais, o processamento paralelo se torna uma solução a ser considerada e estudada. Com a redução de custo e aumento de performance das Workstation, surgimento de Sistemas Operacionais robustos, gratuitos e de fácil obtenção (Linux, FreeBSD, etc...), a queda de preços em tecnologia de redes, obtém-se o cenário perfeito para a criação de máquinas paralelas virtuais. É importante salientar que cada Workstation não perde sua funcionalidade original ao ser utilizada dentro de um cluster de máquinas paralelas virtuais, podendo ser incluída e retirada a qualquer momento. 1 Network of Workstation 2 Parallel Virtual Machine 2 1.2. Objetivo do trabalho Um dos principais fatores, senão o principal, de desempenho de um algoritmo baseado em troca de mensagens é a quantidade de mensagens geradas durante a sua execução, além do número de mensagens, o custo de comunicação é muito importante. [SOU2000] Muitas pesquisas e trabalhos foram feitos utilizando redes de baixo custo, principalmente fazendo uso de redes padrão Ethernet, largamente aceita e de baixo custo na obtenção e manutenção. Trabalhos que envolvam tecnologias mais complexas e caras como ATM são quase escassos, devido ao alto custo de aquisição deste equipamentos e da falta de drivers e utilitários para a utilização de tal rede em sua forma nativa o que possibilitaria um ganho de performance nas passagem de mensagens em aplicações paralelas. O sistema operacional mais utilizado para a criação de máquinas paralelas virtuais é o Linux, onde todos os drivers e ferramentas para redes ATM ainda estão em desenvolvimento precisando ainda serem analisados e testados. 1.3 Descrição do problema O paradigma de programação utilizado foi o SPMD3 implementado com o esquema Mestre Trabalhador (MT) ou Master Work (MW). No esquema Mestre Trabalhador, um processo será o mestre, e os restantes trabalhadores. O processo mestre centraliza o controle, inicia os trabalhadores, distribui o trabalho, sincroniza a comunicação e executa operações de I/O. Para analisar comparativamente o rendimento em um ambiente de computação paralela que se utiliza de comunicação pôr passagem de mensagem, principalmente nos aspectos relacionados a cômputo e comunicação podemos utilizar: • aplicações reais; • programas sintéticos ou; • benchmark. Em nosso caso, para poder analisar os diferentes aspectos de um sistema heterogêneo em relação ao desempenho nos interessa escolher como benchmark uma aplicação escalável tanto em cômputo quanto em comunicação. 3 Single Program Multiple Data 3 Para que um programa possa ser executado por um computador paralelo com memória distribuída e passagem de mensagem uma das opções é distribuir a mesma cópia do seu código entre os processadores, e os distintos conjuntos de dados a processar serão distribuídos entre as diversas máquinas. [SOU-REX00] Como algoritmo bem conhecido que apresenta estas características de escalabilidade escolhemos os algoritmos de multiplicação de matrizes, que tem princípio básico de funcionamento iguais, porém, com algumas modificações na estrutura de envio e recebimento de dados para os nós da máquina paralela. O fator principal enquanto cômputo e comunicação do ponto de vista de escalabilidade, e distribuição de carga, é o tamanho dos blocos enviados para cada processo trabalhador, seguido da aplicação de comandos e funções específicos da biblioteca PVM. O algoritmo nos permite a fazer diferentes distribuições de trabalhos em cômputo, comunicação e sobreposição de cômputo e comunicação. Também poderemos fazer distribuição de carga simétrica ou distribuição de carga balanceada tendo em conta o grau de heterogeneidade ou a potência específica de cada máquina. O grau de heterogeneidade, que é a relação entre os índices de desempenho das distintas máquinas que constituem o cluster heterogêneo, necessário para fazer a distribuição de carga em sistemas heterogêneos, pode ser conseguido: • executando programa cálculo de matrizes em cada máquina de maneira serial, tomando o tempo de execução de cada uma delas e dividindo o tempo de execução da máquina mais rápida pelo tempo de execução das máquinas mais lentas ou; • executando um algoritmo que distribua carga dinamicamente, de maneira proporcional ao desempenho de cada computador (modelo MW dinâmico) extraindo daí o trabalho resultante que foi atribuído a cada processador, a medida de capacidade de cada máquina. 2 – Necessidade de uma Rede de Alta Velocidade A rede numa máquina paralela virtual serve como barramento para a comunicação entre as máquinas pertencentes ao cluster, a depender da aplicação que está sendo rodada e de como ela foi desenvolvida tem-se a necessidade de uma grande largura banda e de grande disponibilidade da rede. 4 Ligando-se algumas dezenas de máquinas num cluster, a quantidade de mensagens passadas entre elas podem ser um empecilho no aumento de processos, não pode-se perder tempo na transmissão de mensagens entres as máquinas do cluster, o processador ficaria ocioso neste tempo, perdendo assim parte da força da máquina paralela. Foi utilizada para testes a rede de alta velocidade do Projeto REMA, padrão ATM [ATMFORUM] uma tecnologia baseada na segmentação e transmissão (comutação) da informação em pequenos pacotes de tamanho fixo chamados de “célula”, tendo uma comutação rápida de pacotes. A Rede ATM do Projeto REMA possibilita não só uma alta largura de banda mais parâmetros de QoS (Qualidade de Serviço), que podem melhorar a transmissão de pacotes dentro do cluster. Uma das grandes vantagens da Rede ATM é a de poder interligar pontos distantes a grande velocidade. O projeto em sua fase final, pretende a criação de uma máquina paralela entre instituições parceiras. Testes foram e estão sendo feitos utilizando máquinas de duas instituições (Universidade Católica do Salvador – UCSal e Universidade Federal da Bahia – UFBa) parceiras, que estão interligadas através de Rede de Fibra Ótica a 155 Mbps do Projeto REMAV-SALVADOR (Fig. 1) Fig. 1 Rede do projeto REMAV-SALVADOR 5 3. Experimentos realizados Foram realizados testes com programas de multiplicação de matrizes devido o seu alto poder de escalabidade. Foi criado um cluster de duas máquinas homogêneas e executado em cada uma destas um programa de multiplicação de matrizes seqüencial afim de avaliar a capacidade de cada máquina incluída no cluster, este teste foram feitos em cada máquina pertencente ao cluster. Em seguida foram executados dois programas de multiplicação de matrizes modificados a partir do seqüencial, para fazer uso dos conceitos de paralelismo utilizando-se do paradigma SPMD adotado. Primeiramente foi utilizado uma rede Padrão Ethernet de 10Mbps. Logo depois foi utilizado uma Rede Padrão ATM (com placas de 25Mbps em cada máquina). Neste teste utilizou-se uma máquina localizada na Universidade Católica do Salvador (UCSal) e outra na Universidade Federal da Bahia (UFBa), parceiras no projeto REMA ligadas através de Fibra Ótica a uma velocidade de 155Mbps. As matrizes utilizadas para multiplicação tiveram dimensão 400 linhas x 400 colunas e 800 linhas x 800 colunas. Os programas utilizados para os testes são descritos a seguir. 3.1 Programa Serial O programa “serial.c” será utilizado para caracterizar a potência das máquinas. Esse programa será executado em todas as máquinas que comporão a máquina paralela virtual . “serial.c” , é o algoritmo que calcula serialmente a multiplicação de matrizes. Este algoritmo Inicializa três matrizes. As matrizes “A” e “B” são usadas para o cálculo da multiplicação, e a matriz “C” recebe o resultado. O algoritmo “serial.c”, executa os seguintes passos: As máquinas utilizadas só tem capacidade de executar o algoritmo com alocação dinâmica de memória, matrizes de até 800 x 800. Algoritmo Serial - “serial.c” Passo 1. O programa Inicializa as matrizes Passo 2. Captura o tempo inicial 6 Passo 3. Realiza a multiplicação Passo 4. Captura o tempo final Passo 5. Diminui o tempo final do tempo inicial Passo 6. Mostra o tempo de processamento em milisegundos 3.2. Programa Paralelo Mestre (Empacotamento Bloco a Bloco) – Assíncrono (Mestre e Trabalhador) Utiliza o empacotamento de dados bloco a bloco “assíncrono” - divide a matriz a ser calculada pelo número de trabalhadores igualmente e envia as linhas a serem calculadas. “blbalM.c” e “blbalE.c”, são os algoritmos que calculam paralelamente de maneira assíncrona a multiplicação de matrizes. Algoritmo Mestre - “blbalM.c ” Passo 1. Mapa máquinas que serão utilizadas Passo 2. Identifica task no PVM Passo 3. Obtém informações sobre a Máquina Virtual Passo 4. Imprime na tela o numero de trabalhadores na Máquina Virtual Passo 5. Retorna e informa o numero de tasks criadas com sucesso Passo 6. Inicializa ,matrizes Passo 7. Inicializa o buffer de envio Passo 8. Empacotam dados no buffer de envio Passo 9. Inicia posição. na matriz Passo 10. Envia o conteúdo do buffer de envio para a task escravo Passo 11. Imprime mensagens diversas informando situação de envio Passo 12. Espera pôr resultados das tasks trabalhador Passo 13. Informa o tipo de mensagem Passo 14. Recebe mensagem do trabalhador Passo 15. Desempacota linhas Passo 16. Imprime resultados em milisegundos e segundos Passo 17. Grava o resultado do tempo decorrido em arquivo 7 Algoritmo Trabalhador - “blbalE.c” Passo 1. Informa task id do escravo Passo 2. Recebe mensagem do mestre Passo 3. Informa tipo de mensagem, pega task id do processo mestre Passo 4. Espera p/ receber mensagem do mestre Passo 5. Inicia posição nas matrizes Passo 6. Recebe linhas Passo 7. Realiza multiplicação da matriz Passo 8. Empacota dados do resultado para o mestre. Passo 9. Informa tipo de mensagem Passo 10. Inicializa buffer de envio Passo 11. Envia 3.3 Programa Paralelo Mestre (Empacotamento Linha a Linha) - Semi-Síncrono (Mestre e Trabalhador) linhamwM.c e linhamwE.c Utiliza empacotamento de dados linha a linha “semi-sincrono” - envia uma linha da matriz a ser calculada para cada um dos trabalhadores que compõe a máquina virtual e recebe os resultados à medida que elas calculem, tornando a lhes enviar novas linhas. “linhamwM.c” e “linhamwE.c”, são os algoritmos que calculam paralelamente de maneira Semi-sincrona a multiplicação de matrizes. Algoritmo Mestre - “linhamwM.c” Passo 1. Define linhas a serem enviadas Passo 2. Faz mapeamento para máquinas estáticas (homogênea) Passo 3. Identifica task no PVM Passo 4. Obtêm informações sobre a Máquina Virtual Passo 5. Informa a quantidade de trabalhadores que conterá a máquina virtual 8 Passo 6. Imprime na tela o numero de trabalhadores na Máquina Virtual Passo 7. Informa o numero de tasks criadas com sucesso Passo 8. Inicialização das matrizes Passo 9. Envia o conteúdo do buffer de envio para a task escravo Passo 10. Espera pôr resultados das tasks trabalhadoras Passo 11. Informa o tipo de mensagem Passo 12. Identifica o buffer do trabalhador Passo 13. Recebe dados Passo 14. Inicia posição. na matriz Passo 15. Recebe linhas Passo 16. Desempacota dados Passo 17. Envia o conteúdo do buffer de envio para a task escravo Passo 18. Envia FIM TRABALHO ao processo Passo 20. Imprime resultados em milisegundos e segundos Passo 21. Grava o tempo decorrido em arquivo Algoritmo Trabalhador - “linhamwE.c” Passo 1. Informa task id do escravo Passo 2. Recebe mensagem do mestre Passo 3. Pega task id do processo mestre Passo 4. Informa tipo de mensagem Passo 5. Espera p/ receber mensagem do mestre Passo 6. Realiza multiplicação da matriz Passo 7. Informa tipo de mensagem Passo 8. Recebe dados Passo 9. Espera p/ receber mensagem do mestre Passo 10. Empacota dados do resultado para o mestre Passo 11. Informa tipo de mensagem Passo 12. Envia dados Passo 13. Inicializa buffer de envio Passo 14. Envia 9 3.4. Implementação Para a implementação da máquina paralela virtual, utilizou-se como sistema operacional o Linux (Kernel 2.2.9), utilitários para rede ATM (ATM on Linux v0.59), bibliotecas PVM (PVM v3.4.3) e para implementação dos algoritmos paralelos a linguagem de programação C, utilizando o compilador GCC4 incluso no Linux e protocolos Tcp/Ip (Tab.1) (Fig.2 ). Na utilização da Rede ATM optou-se pelo uso de LANE (Lan Emulation) que simula uma rede Ethernet em cima da rede ATM. Ás máquinas utilizadas para os testes foram. - Trabalhadores (PVM) Host: icaro (UFBa) IP: 200.123.59.15 Net Mask: 255.255.255.0 CPU: Intel Pentium 166 Mhz Memória: 16 Mb HD: IDE – 2.1 GB Ethernet: 10 Mbps ATM: 25Mbps - Host: pandora (UFBa) IP: 200.128.59.17 Net Mask: 255.255.255.0 CPU): Pentium 166 Mhz Memória: 16 Mb HD: IDE - 2.1 GB Ethernet: 10 Mbps ATM: 25 Mbps Host: perseu (UCSal) IP: 192.168.103.10 Net Mask: 255.255.255.0 CPU: Intel Pentium 166 Mhz Memória: 16 Mb HD: IDE – 2.1 GB Ethernet: 10Mbps ATM: 25 Mbps Mestre (Não envolvido no trabalho, apenas administrar o cluster) Host: gandalf (UFBa) IP: 200.128.59.12 Net Mask: 255.255.255.0 CPU: Intel Celeron 466 Mhz Memória: 64 Mb HD: IDE – 5.1 GB Ethernet: 10 Mbps ATM: 25Mbps Tab.1 – Especificação das máquinas 4 GCC Gnu C Compiler 10 Fig.2 Ambiente de teste 4. Resultados obtidos Os seguintes resultados foram obtidos: Tab.2 - Programa “serial.c”, Multiplicação de Matrizes seqüencial . Executado em cada máquina do cluster. Algoritmo Serial Serial Serial Serial Máquina Pandora Icaro Perseu Gandalf 200 5329 5346 4986 - Matriz (tamanho) 400 51508 50868 48197 8361 800 111749 Tempo de execução (Mseg) 11 Algoritmo Serial 60000 50000 Mseg 40000 Matriz 200 X 200 30000 Matriz 400 X 400 20000 10000 0 Pandora Icaro Perseu Máquina O cluster da máquina paralela virtuais nos testes foram formado por dois trabalhadores. Tab. 3 - Programa “blbal” sobre ATM. Paralelo Bloco a Bloco. Executado no mestre(gandalf) que distribui a tarefa para os trabalhadores, ao termino do processo os trabalhadores retornam a resposta. Cluster formado pelas máquinas perseu e icaro. Algoritmo Paralelo Bloco a Bloco Máquina PVM Matriz (tamanho) 400 800 28589 248591 Tempo de execução (Mseg) Tab. 4 - Programa “blbal” sobre Ethernet. Paralelo Bloco a Bloco. Executado no mestre(gandalf) que distribui a tarefa para os trabalhadores, ao termino do processo os trabalhadores retornam a resposta. Cluster formado pelas máquinas pandora e icaro. Algoritmo Paralelo Bloco a Bloco Máquina PVM Matriz (tamanho) 400 800 30247 260235 Tempo de execução (Mseg) 12 Algoritmo Bloco Balanceado 300000 250000 Mseg 200000 blbal sobre ATM 150000 blbal sobre Ethernet 100000 50000 0 400 800 Tam. Matriz Tab. 5 - Programa “linhamw” sobre ATM, Paralelo Linha a Linha. Executado no mestre(gandalf) que distribui a tarefa para os trabalhadores, ao termino do processo os trabalhadores retornam a resposta. Cluster formado pelas máquinas perseu e icaro. Algoritmo Paralelo Linha a Linha Máquina PVM Matriz (tamanho) 400 800 27633 236204 Tempo de execução (Mseg) Tab. 6 - Programa “linhamw” sobre Ethernet, Paralelo Linha a Linha. Executado no mestre(gandalf) que distribui a tarefa para os trabalhadores, ao termino do processo os trabalhadores retornam a resposta. Cluster formado pelas máquinas pandora e icaro. Algoritmo Paralelo Linha a Linha Máquina PVM Matriz (tamanho) 400 800 30382 252207 Tempo de execução (Mseg) 13 Algoritmo Linha a Linha Balanceado 300000 Mseg 250000 200000 linhamw sobre ATM 150000 linhame sobre Ethernet 100000 50000 0 400 800 Tam Matriz 5. Conclusões Notou-se um sensível ganho de performance quando utilizando a Rede Padrão ATM nos casos de matrizes de tamanho 800 x 800. Nenhuma diferença considerável se notou em matrizes de tamanho 400 x 400 ou utilizando a transmissão de Linha a Linha. Mais testes são necessários, com uma quantidade maior de máquinas no cluster, para melhor ser avaliado a eficiência em uma redes ATM. Implementações de tecnologias para melhora de transmissão das redes ATM precisam ser testadas e avaliadas. 6. Trabalho futuro Muitos experimentos ainda são necessários para se avaliar as vantagens de uma Rede ATM na criação de uma máquina paralela virtual. Novos testes devem serem feitos considerando diferentes configurações de redes: • “Classical IP”: Com o protocolo IP “rodando” diretamente sobre a AAL5. • LANE com MPOA: Com conexões ATM fim-a-fim podendo ser estabelecidas entre máquinas de um cluster pertencentes a ELANS diferentes. • Nativa ATM: Com eliminação de overhead causado pelo encapsulamento de pacotes IP em células ATM. 14 Tais testes são fundamentais para possibilitar a criação de clusters entre instituições filiadas ao projeto REMA a fim de se obter uma maior quantidade de máquinas na criação de poderosas Máquinas Paralelas Virtuais. Essas máquinas são necessárias a grandes instituições que buscam um alto poder de processamento de dados em menor espaço de tempo mas que não dispõem de recursos para obter uma máquina paralela convencional. Estando ainda em desenvolvimento os drivers e utilitários para redes ATM em plataforma Linux – o sistema operacional adotado na criação dessa máquina paralela virtual, ainda não se tem dados concretos sobre sua eficiência. Serão feitos testes utilizando matrizes muito grande (acima de 800 x 800) e aplicações reais existentes como por exemplo Pvmpovray que serve para renderização de gráficos e outras em desenvolvimento. 15 6. Referências Bibliografia [ALG94] Geist, Al. Beguelin, Adam. Dongarra, Jack. Wicheng, Jiang. Mancheck, Robert. Sunderam, Vaidy. PVM 3 User’s Guide and Reference Manual. Prepared by the Oak Ridge National Laboratory. 1994 [DON-LUQ99] Jack Dongarra, Emilio Luque, Tomàs Margalef (Eds.). Recent Advances in Parallel Virtual Machine and Message Passing Interface. 6th European PVM/MPI User’s Group Meeting. Barcelona, Spain, September 1999. Proceeding. [SOU2000] Souza, Josemar R. de. Influencia de la comunicación en el rendimimiento de un sistema de computación paralela, basado en redes de estaciones de trabajo. Tese de Mestrado, Arquitetura de Computadores e Processamento Paralelo. Universidade Autônoma de Barcelona, - UAB. 2000 [SOU-REX00] Souza, Josemar. Luque, Emilio. Rexachs, Dolores . Análise da distribuição de carga em um cluster heterogêneo. VI Congresso Argentino de Ciencias de la Computación – CACIC 2000, Universidad Nacional de la Patagonia San Juan Bosco – UNP, Ushuaia, Tierra del Fuego, Argentina. 2000. Anais. [STE99] Sterling, Thomas L. Salmon, John. Becker, Donald J. e Savaresse, Daniel F. How to build a Beowulf: a guide to the implementation and aplication of PC clusters. Massachusetts Institute of Technology. 1999 [DIETZ98] Dietz, Hank Linux Parallel Processing How To. 5 January 1998. http://www.ldp.org. 2000. [ATMFORUM] http://www.atmforum.com 16