Modelagem de um Cluster Heterogêneo para ser Utilizado em ... · 4 7 0 8 0 15 5 13 0 15 1 29 6 13...

Post on 13-Feb-2019

216 views 0 download

Transcript of Modelagem de um Cluster Heterogêneo para ser Utilizado em ... · 4 7 0 8 0 15 5 13 0 15 1 29 6 13...

Modelagem de um Cluster Heterogêneo para ser Utilizado em Particionamento e Mapeamento de Domínios

de Aplicações Paralelizáveis, Baseado em Programas Específicos de Benchmarks

Elias C. A. Carvalho1, 2, Ricardo V. Dorneles2, Rogério L. Rizzi2, Tiaraju A. Divério2

1Cesumar – Centro Universitário de Maringá, Departamento de Informática Av Guedner 1610 – Jd Aclimação – Maringá – Pr – Brasil – CEP 87100-000

2Universidade Federal do Rio Grande do Sul – UFRGS - Instituto de Informática Caixa Postal 15064 - Porto Alegre - RS -Brasil - CEP 91501-970

{ecacarva,cadinho,rizzi,diverio}@inf.ufrgs.br

Abstract The use of clusters of computers as solution of smaller cost to diffuse high performance environments at a low cost has become a more present reality. The almost craft nature of some clusters put to the margin some standard tests like SPEC. This article presents experiments accomplished with programs of benchmarks, used to measure the performance of a heterogeneous cluster, during the modelling of that by graphs. It also detaches the importance of measuring specific parameters, that should be chosen in agreement with the activity end of the application that will be used in the computacional environment.

Resumo A utilização de clusters de computadores como solução de menor custo para se difundir ambientes de computação de alto desempenho, a um baixo custo tem se tornado uma realidade mais presente em nosso cotidiano. A natureza quase artesanal de alguns clusters coloca à margem alguns testes padrões como o SPEC. Este artigo apresenta experimentos realizados com programas de benchmarks, utilizados para se medir o desempenho de um cluster heterogêneo, durante a modelagem desse ambiente através de grafos. Destaca também a importância de se medir parâmetros específicos, que devem ser escolhidos de acordo com a atividade fim da aplicação que será utilizada no ambiente computacional.

Palavras Chaves. cluster, desempenho, benchmark

1. Introdução Ambientes de computação paralela vêm se difundindo como uma alternativa viável onde o alto desempenho é vital. A um custo relativamente baixo, uma escolha adequada do equipamento, do paradigma de programação e da tecnologia de rede pode produzir resultados muito satisfatórios. Um dos principais problemas encontrados em sistemas paralelos está relacionado à grande diversidade de estratégias e arquiteturas disponíveis. No caso dos clusters de computadores heterogêneos que é objeto de estudo deste artigo, a diversidade entre a arquitetura das máquinas pode diferir ainda mais, como por exemplo: memória, tecnologia de rede, numero e tipo de processador com capacidades e fabricantes diferentes.

Durante o ciclo de desenvolvimento de um projeto podem surgir dúvidas relacionadas a desempenho como [1]:

• Qual o desempenho esperado ?

• Qual o desempenho obtido ?

• Como melhorar este desempenho ? Para responder as questões citadas, este artigo apresenta algumas técnicas utilizadas

para se avaliar o desempenho de clusters heterogêneos, descrevendo a importância em se considerar parâmetros que estão além do processador. Embora este trabalho apresente um estudo de caso realizado com o cluster do Instituto de Informática da UFRGS, as técnicas apresentadas são aplicáveis a qualquer cluster com essas características, desde que se faça os ajustes necessários para adaptar as técnicas às características do cluster a ser modelado. Quanto aos parâmetros avaliados, estes podem variar de acordo com as características exigidas pela solução do problema a ser resolvido, e através deles, pode-se obter uma descrição razoavelmente detalhada do comportamento do sistema.

2. Métodos de Análise de Desempenho Existem dois métodos para se analisar o desempenho de um sistema. Os métodos indiretos que podem permitir a avaliação de sistemas ainda não existentes, através de uma modelagem do sistema, como por exemplo, a simulação e os métodos analíticos; e os métodos diretos que consistem na aplicação de testes sobre os sistemas existentes para obtenção de algum resultado que servirá como métrica de desempenho, como por exemplo, a monitoração e o benchmark [2].

Ambos os métodos têm a finalidade de medir o desempenho dos componentes de um sistema de computação. Seu principal objetivo está em comparar diferentes sistemas computacionais e até mesmo detectar e analisar gargalos nesses sistemas. Com base no texto de Sagula [2], descreve-se resumidamente os métodos citados:

• simulação e métodos analíticos – ambos necessitam da criação de um modelo de representação da realidade. Esse modelo pode ser alcançado através de uma construção em escala próxima da realidade (físico), através de equações matemáticas (analítico) ou através de expressões de comportamento de linguagem algorítmica (simulação);

• monitoração – onde se deseja obter um número que expresse o desempenho médio do sistema como um todo, como por exemplo, avaliar um conjunto de máquinas diferentes através da medição de quanto tempo gastam para resolver um mesmo algoritmo;

• benchmarks - se caracteriza por ser um teste a ser aplicado em algum sistema, submetendo-o a uma carga de trabalho (workload) conhecida e capaz de informar dados relativos ao seu desempenho.

Especificamente para esse trabalho, escolheu-se o método benchmark por existir uma vasta disponibilidade de programas desse tipo na Internet a custo zero, pela sua fácil execução e interpretação dos resultados. Os programs de benchmark serão utilizados para se desenvolver um "modelo analítico" para clusters multiprocessados e heterogêneos. Esse modelo será a princípio simples para se evitar um modelo complexo e intratável, como cita [1] na próxima seção, e poderá ser adaptado desde que esteja dentro do escopo do problema a ser resolvido.

2.1. A Necessidade de se Utilizar Métodos Específicos Em meados de 90, a relação custo benefício dos computadores pessoais tornou-os atrativo como alternativa de menor custo, maior escalabilidade e desempenho [3]. A associação de vários destes computadores de baixo custo com sistemas operacionais gratuitos de alta

qualidade e desempenho como o Linux [4], permitiu a criação dos clusters de computadores com desempenho semelhante aos supercomputadores a um custo bem menor. No entanto, a natureza quase artesanal de alguns clusters, coloca à margem os testes padrões como o SPEC [5].

A avaliação de qual equipamento retornará o melhor desempenho fica dificultada em áreas da computação numérica intensiva, onde as computações são extremamente numéricas ou científicas e são na sua maioria do tipo CPU-Bound [6], pois passam a maior parte do tempo utilizando o processador e realizam poucas operações de I/O.

O desempenho dos computadores acessíveis ao pesquisador cresceu e a forma de medir o desempenho também [3]. Na década de 90 o desempenho computacional era expresso adequadamente através do número de operações de ponto flutuante por segundo. Nesse caso, considerava-se unicamente a velocidade do processador. Nos anos seguintes os fabricantes e organizações buscaram formas de expressar o computador como um todo e não apenas através do processador. Outros aspectos relevantes como o desempenho dos sistemas de discos, a velocidade de acesso à memória, o desempenho em redes de alta velocidade e capacidade dos equipamentos de executarem diversas tarefas simultaneamente, passaram a ser medidos e os resultados obtidos foram sendo ponderados em índices que expressavam o desempenho geral do equipamento [3]. Testes ou benchmarks consagrados como o Linpack [7] de Jack Dongarra, deram lugar aos testes desenvolvidos pela SPEC [5].

Vasquez [3], recomenda que se utilize testes específicos, capazes de mensurar o desempenho de computadores sob diversos aspectos de relevância para a atividade fim e devem permitir ao pesquisador acessar de forma clara os índices que expressam a adequação de um dado equipamento à demanda computacional do seu trabalho de pesquisa. Nenhuma informação sobre seu desempenho deve ser inferida apenas a partir da velocidade do processador, pois este não é o único componente de um computador, outros componentes como o sistema de cache, memória, discos, redes de conexão, entre outros devem ser considerados de acordo com a necessidade de sua aplicação.

Modelagem de sistemas muito complexos pode requerer a utilização e tratamento de um número muito grande de parâmetros e funções tornando o modelo complexo e intratável, neste caso, grandes simplificações devem ser feitas, no entanto essas modificações podem prejudicar a precisão do modelo [1]. O objetivo principal de uma modelagem dessas deve manter uma relação entre a simplicidade e a precisão, ou seja, deve-se encontrar o meio termo que proporcione um modelo simples e eficiente. Baseado nessa afirmação, para esse trabalho foram escolhidos apenas dois parâmetros que expressarão o desempenho do cluster durante a sua modelagem, considerados relevantes para a aplicação a ser utilizada, são eles: a capacidade para executar cálculos de ponto flutuante e a velocidade da memória RAM. Nas próximas seções serão descritos detalhes sobre esses parâmetros.

Nesse trabalho se estuda o desempenho para aplicações com computação científica de grande porte, as quais são executadas em arquiteturas com memória distribuída como o clusters de computadores, que por sua vez podem ser heterogêneos como o cluster utilizado para os experimentos desse trabalho. Por esse motivo é importante ter uma descrição detalhado do comportamento de cada componente do cluster. Para isso serão aplicados alguns programas de benchmaks que possam medir parâmetros específicos, de modo que se possa construir um modelo capaz de descrever o comportamento da arquitetura durante a execução de uma aplicação, com precisão suficiente para permitir uma comparação razoável com situações reais.

2.1.1. Capacidade Para Executar Cálculos de Ponto Flutuante Vasquez [3], afirma que se pode realizar a análise de desempenho de ponto flutuante de um computador de diversas formas, uma delas é determinar sua capacidade máxima teórica de cálculos. Para isso, basta recorrer às especificações do fabricante no que diz respeito ao número de operações de ponto flutuante simultâneas e multiplicar esse valor pela velocidade do processador. No entanto, pelo fato de aplicações de grande porte e puramente numéricas dificilmente operarem nas condições ótimas do fabricante, pois em virtude das características particulares de cada aplicação nem sempre as mesmas utilizam todos os recurso que a máquina oferece, essa medida não possui muita utilidade.

Em 1992, Aburto [8], através do programa flops, propôs um teste simples para avaliar a capacidade bruta de cálculos de ponto flutuante dos processadores. O programa calcula oito séries numéricas (tabela 1), que exercitam as quatro operações aritméticas de ponto flutuante em precisão dupla de um processador com diferentes freqüências. Essas séries foram construídas de forma a não solicitar desempenho do sistema de memória e apenas refletir o desempenho de ponto flutuante. A partir do tempo gasto pelo processador para calcular cada série, é obtido o desempenho em MFLOPS correspondente. De posse dessas informações, pode-se utilizar o programa flops para realizar análises comparativas de desempenho de processadores [3].

Tabela 1. Séries numéricas e operações do programas flops

Série Adição Subtração Multiplicação Divisão Total 1 7 0 6 1 14 2 3 2 1 1 7 3 6 2 9 0 17 4 7 0 8 0 15 5 13 0 15 1 29 6 13 0 16 0 29 7 3 3 3 3 12 8 13 0 17 0 30

2.1.2. Velocidade da Memória RAM Em computação numérica intensiva, para que o processador consiga manter um bom desempenho, o sistema de memória deve fornecer, sem restrições a quantidade de dados que o mesmo é capaz de processar [3]. O desempenho representado pelo desequilíbrio entre a velocidade do sistema de memória e a velocidade do processador foi pesquisado por McCalpin [9] a partir de 1995 através do programas Stream [10]. Este programa realiza medidas de desempenho para quatro tipos básicos de operações da álgebra linear comuns em computação científica onde A(i), B(i) e C(i) são elementos de vetores de precisão dupla de grandes dimensões e X é uma constante de precisão dupla. As quatro operações são descritas a seguir:

• A(i) = B(i), atribuição ou cópia;

• A(i) = X*B(i), escalonamento e cópia;

• A(i) = A(i) + B(i), soma;

• A(i) = B(i) + X*C(i), soma com escalonamento.

Em um sistema típico como o Stream, o programa é compilado após definir um tamanho para os vetores A, B e C suficientemente grande para evitar que o sistema de cache interfira e forneça resultados errados. Em um computador com 128 MBytes de memória RAM, esse valor corresponderia a 100 Mbytes, por exemplo. O programa deve ser executado em um computador que não está realizando nenhum cálculo ou tarefa que requeira acesso intensivo à memória.

3. O Ambiente Computacional Utilizado O GMC-PAD - Grupo de Matemática da Computação e Processamento de Alto Desempenho do PPGC - Programa de Pós-Graduação em Computação do Instituto de Informática da UFRGS vem trabalhando no estudo e desenvolvimento de modelos hidrodinâmicos e de transporte de massa paralelos em clusters de máquinas multiprocessadas. O cluster do Instituto de Informática da UFRGS é do tipo heterogêneo multiprocessado [11] e constituído por 10 nós interconectados por três redes de comunicação: Fast-Ethernet, Myrinet e SCI. Sua arquitetura pode ser observada na figura 1 e a tabela 2 representa com detalhes a configuração dos nós. Através desses detalhes, percebe-se claramente a heterogeneidade do cluster, pois existem máquinas com um e dois processadores, processadores com velocidades diferentes e

capacidades de memória também diferentes. Figura 1. Cluster do Instituto de Informática da UFRGS

Tabela 2. Configuração dos nós do cluster do Instituto de Informática da UFRGS

Nó Nome CPU Cache (Kb) RAM (Mb) Rede 0 Servidor Pentium II 266 MHz 256 por Proc 128 FE/MY 1 Veríssimo Dual Pentium Pro 200 MHz 256 por Proc 128 FE/MY 2 Dionelio Dual Pentium Pro 200 MHz 256 por Proc 128 FE/MY 3 Euclides Dual Pentium Pro 200 MHz 256 por Proc 128 FE/MY 4 Quintana Dual Pentium Pro 200 MHz 256 por Proc 128 FE/MY 5 Luft Pentium Pro 200 MHz 256 por Proc 128 FE/MY 6 Ostermann Pentium Pro 200 MHz 256 por Proc 128 FE/MY 7 Kim Pentium III 500 MHz (SCI) dual 256 por Proc 256 FE/SCI 8 Sharon Pentium III 500 MHz (SCI) dual 256 por Proc 256 FE/SCI 9 Demi Pentium III 500 MHz (SCI) dual 256 por Proc 256 FE/SCI

10 Michelle Pentium III 500 MHz (SCI) dual 256 por Proc 256 FE/SCI FE = Fast Ethernet MY = Myrinet

Cluster Myrinet Cluster SCI

Switch Fast Ethernet

Rede Fast Ethernet

Um dos trabalhos desenvolvidos é o modelo computacional paralelo do Lago Guaíba, um projeto denominado “HIDRA”, que tem o objetivo de simular a hidrodinâmica e o transporte de massa tridimensional em corpos de água em arquiteturas multiprocessadas e heterogêneas (figura 3). Essa modelagem envolve fatores como a implementação paralela de métodos numéricos, métodos de decomposição de domínio e balanceamento de carga [12].

Figura 3. Modelo computacional do Lago Guaiba – Porto Alegre – RS

Um dos problemas fundamentais quando se implementa tais modelos que simulam problemas de grande porte em um ambiente computacional com memória distribuída, é a questão de como particionar o domínio computacional subjacente de maneira eficiente [13]. Para se resolver o problema, utilizando-se um ambiente paralelo, envia-se cada parte do subdomínio (figura 4) a um processador diferente onde o mesmo é resolvido. Para isso é necessário que se crie o grafo da aplicação representando o problema na forma discreta e o grafo da arquitetura representando a máquina que será utilizada para execução da solução.

Figura 4. Distribuição de subdomínios (aplicação) para os processadores (arquitetura)

Durante essa distribuição deve-se atribuir várias cargas entre os diversos processadores, de forma que os processadores fiquem com cargas de trabalho que sejam proporcionais a seu poder computacional, ou seja, as cargas podem ser iguais em um ambiente homogêneo ou diferentes em um ambiente heterogêneo. Nesse caso, nenhum dos processadores deve ficar sobrecarregado ou ocioso durante a computação.

Observando-se a figura 5, na qual uma aplicação foi dividida em 4 domínios [14], pode-se considerar dois aspectos diferentes, dependendo do ambiente computacional. Primeiro, um ambiente computacional heterogêneo composto por exemplo por 4 computadores, todos com mesma capacidade de memória RAM, mesmo cache, mesmo disco e mesma tecnologia de rede de interconexão, porém com 4 processadores diferentes de 100, 200, 500 e 1.000 Mhz respectivamente. Nesse exemplo a diferença está apenas na capacidade dos processadores, mas poderia estar em qualquer outra característica. Desde que tornasse qualquer uma das máquinas diferente das outras, o ambiente se caracterizaria como

1

3

2

4 5 6

7

PE PE PE

PE PE PE

PE PE PE

Grafo da Aplicação Grafo da Arquitetura

heterogêneo. Segundo, um ambiente computacional homogêneo, composto por exemplo por 4 computadores com exatamente a mesma configuração no que se refere a velocidade do processador, capacidade de memória RAM, capacidade de memória cache, disco e tecnologia de rede de interconexão. Considerando-se esses dois aspectos, as figura 5a e 5b, apresentam o mesmo domínio com dois tipos de particionamento, o primeiro mais adequado para um ambiente heterogêneo e segundo mais adequado para um ambiente homogêneo respectivamente.

Figura 5. Aplicação particionada em 4 subdomínios de tamanhos diferentes (a) e tamanhos iguais (b).

Nesse caso o problema denominado “balanceamento de carga” pode ser visto como um problema de mapeamento de grafos. A tarefa é encontrar um mapeamento π : GApl → GArq do grafo da aplicação para o grafo de processadores minimizando o custo de comunicação. Para isso, é necessário dividir o grafo da aplicação, de forma que o número de arestas entre processadores seja o menor possível [11].

Baseado nessa afirmação surge a necessidade de se modelar a arquitetura do Cluster do Instituto de Informática da UFRGS, que por ser do tipo heterogêneo, exige um modelo analítico que possa expressar o poder computacional de cada nó do cluster, de forma que uma carga possa ser bem distribuída entre cada um deles de acordo com a sua capacidade. Para isso será criado um grafo inicial, em seguida serão utilizados programas de benchmarks e os resultados serão aplicados ao modelo analítico do cluster e representados através um grafo com pesos em seus vértices. As próximas seções descreverão as várias etapas para se concluir essa modelagem. 4. Modelagem Inicial A modelagem inicial do cluster do Instituto de Informática da UFRGS foi concebida com base na teoria dos grafos e na topologia das duas redes. A figura 6 apresenta dois grafos, o primeiro representa a rede interconectada Myrinet composta por 6 máquinas e o segundo representa a rede em anel SCI composta por 4 máquinas.

Figura 6. Versão inicial do grafo da arquitetura do cluster do Instituto de Informática da UFRGS

Após a criação do grafo inicial, que representa apenas a topologia das redes e seus componente, foram realizados dois experimentos para se analisar o desempenho das máquinas: no primeiro experimento foi executado o programa de benchmark Flops [8],

a) b)

01 a)

02

04 05

03 06

07

b) SCI

08

09 10

destinado a medir capacidade para se executar cálculos de ponto flutuante de uma máquina. No segundo experimento foi executado o programa de benchmark Stream[10], destinado a medir velocidade da memória RAM de uma máquina. Os dois programas foram executados em cada uma das 10 máquinas que compõem o cluster. Foram disparadas 10 execuções de cada programa em cada máquina, em horário noturno e quando não haviam usuários e/ou outras aplicações em execução na mesma.

Os resultados obtidos podem ser observados nas tabelas 3 e 4. A tabela 3 representa os resultados apresentados pelo programa Flops. Nessa tabela a coluna “Média” representa a média aritmética de todos os resultados apresentados para cada série numérica processada e para cada uma das máquinas avaliadas. A Tabela 4 representa os resultados apresentados pelo programa Stream. Nessa tabela a coluna “Média” representa a média de todos os resultados apresentados para cada uma das operações executadas pelo programa, para cada máquina.

Tabela 3. Resultados obtidos com o programa de benchmark Flops

Tabela 4. Resultados obtidos com o programa de benchmark Stream

5. Cálculo do Peso Final ou Poder Computacional Com base nos resultados referente ao desempenho em operações de ponto flutuante e desempenho da memória, pode-se calcular então o valor referente ao poder computacional de cada máquina. Para esse trabalho, entenda-se que o termo “Poder Computacional”, representado pela coluna “Pc” na Tabela 5, foi concebido considerando-se a capacidade da máquina para realizar operações de ponto flutuante e a velocidade de sua memória RAM. Para representar essa métrica, foi elaborada a seguinte fórmula:

Máquina 1 2 3 4 5 6 7 8 MédiaVerissimo 20,5977 13,6336 30,2390 34,1637 25,7849 29,6202 11,8959 31,9361 24,7339Dionelio 20,6072 13,6253 30,2390 34,1880 25,7921 29,6202 11,8996 31,9468 24,7398Euclides 20,7120 13,6336 30,2222 34,1880 25,7849 29,6296 11,9403 31,9255 24,7545Quintana 20,6072 13,6336 30,2390 34,1637 25,7921 29,6202 11,8959 31,9468 24,7373Luft 20,5977 13,6253 30,2222 34,1394 25,7778 29,6107 11,8885 31,9361 24,7247Ostermann 20,5977 13,6087 30,2222 34,1394 25,7778 29,6107 11,8885 31,9361 24,7226Kim 162,6134 118,8329 230,1428 196,0184 156,1632 220,1008 52,5128 224,8244 170,1511Sharon 162,6872 118,7541 230,1428 195,8185 156,1632 220,0356 52,4859 224,8902 170,1222Demi 162,0253 118,7541 229,8996 196,2187 156,5254 221,6781 52,4232 224,5614 170,2607Michelle 163,4660 118,8329 229,8996 195,6190 156,2618 223,0769 52,5398 224,7586 170,5568

829,5037

Operaçõesde Ponto Flutuante por Segundo

Máquina Copy Scale Add Triad MédiaVerissimo 76,1905 76,1905 82,7586 77,4194 78,1398 Dionelio 100,0000 100,0000 104,3478 100,0000 101,0870 Euclides 100,0000 100,0000 114,2857 104,3478 104,6584 Quintana 94,1176 94,1176 100,0000 96,0000 96,0588 Luft 100,0000 100,0000 109,0909 104,3478 103,3597 Ostermann 66,6667 66,6667 75,0000 75,0000 70,8334 Kim 320,0000 320,0000 342,8571 240,0000 305,7143 Sharon 266,6667 320,0000 342,8571 266,6667 299,0476 Demmi 320,0000 320,0000 342,8571 266,6667 312,3810 Michelle 320,0000 320,0000 342,8571 240,0000 305,7143

Megabytes por Segundo

10/))*()*(( βα amropfc CCP +=

onde: Pc = Poder Computacional Copf = Capacidade de realização de operações de ponto flutuante em operações por segundo α = Peso atribuído para Copf Camr = Capacidade de acesso à memória RAM em megabytes por segundo β = Peso atribuído para Camr

Cabe aqui observar que essa fórmula pode ser ajustada de acordo com o propósito da aplicação a ser particionada e mapeada em alguma arquitetura. Para se chegar a um consenso de como ajustar os parâmetros, recomenda-se que se faça uma análise da aplicação, de modo que se identifique as necessidades da mesma, como por exemplo: necessidade de utilizar mais memória e menos operações de ponto flutuante ou vice-versa, ou ainda a necessidade de se utilizar outro recurso computacional que possa ser mensurado através de algum programa de benchmark, como por exemplo acesso a disco que pode ser avaliado através do programa de benchmark Iozone [15]. Em seguida basta ajustar a fórmula na tentativa de se obter o máximo de precisão.

Considerando-se como exemplo uma aplicação que utilize muito mais o processador do que a memória, ajustou-se experimentalmente a fórmula do peso computacional com os seguintes parâmetros:

10/))2*()8*(( amropfc CCP +=

Realizados os experimentos e obtidos os resultados, o próximo passo foi adotar um critério para elaboração dos pesos para os vértices e arestas do grafo da arquitetura. Para isso, resolveu-se o seguinte: o cluster possui 10 máquinas, cada uma representando uma parte sobre a capacidade total de processamento do mesmo, de modo que a soma dessas partes resulte em 100% da capacidade total. Portanto, baseado nos experimentos realizados, calculou-se quanto cada máquina representa dessa capacidade. Esse valor será representado pela coluna “%Part” (para cada experimento) na tabela 5. A Tabela 5 representa o resultado obtido com essa fórmula experimental para o cluster modelado nesse trabalho.

Tabela 5. Cálculo do Poder Computacional

6. Modelagem final do Cluster do Instituto de Informática da UFRGS Uma vez que o cluster é composto pelas duas redes, uma com 6 nós e outra com 4 nós, o modelo analítico que representa o cluster como um todo pode ser representado pela seguinte fórmula:

)10/))2*()8*(((1

amropfc

N

i

CCP +=∑=

onde N é a quantidade de nós que o cluster possui.

Considerando-se a Figura 2 e alguns testes de comunicação realizados com o programa benchmark Pingpong [WOM01], um programa escrito em MPI que calcula o tempo de round-trip (tempo de ida e volta de uma mensagem), concluiu-se que todas as máquinas do cluster conseguem se comunicar entre si, portanto embora as redes tenham tecnologias e topologias diferentes, criou-se uma nova versão do grafo da arquitetura, observada na figura 6, onde todos os nós podem se comunicar entre si.

Considerando-se os experimentos realizados com os programas de benchmark e os resultados ajustados de acordo com o modelo analítico, atribui-se para cada nó um peso referente ao seu poder computacional. Este peso está representado por “PN” dentro de cada vértice do grafo, onde “P” representa o peso e “N” o valor constante na coluna PC (Poder Computacional) da tabela 5.

Seq Nome CPU 1 Proc 2 Proc % Part MB/s % Part Pc1 Verissimo Dual Pentium Pro 200 MHz 24,7339 42,8308 3% 78,1398 4% 3%2 Dionelio Dual Pentium Pro 200 MHz 24,7398 45,9252 3% 101,0870 6% 4%3 Euclides Dual Pentium Pro 200 MHz 24,7545 45,2454 3% 104,6584 6% 4%4 Quintana Dual Pentium Pro 200 MHz 24,7373 43,9863 3% 96,0588 5% 3%5 Luft Pentium Pró 200 MHz 24,7247 24,7247 2% 103,3597 6% 2%6 Ostermann Pentium Pró 200 MHz 24,7226 24,7226 2% 70,8334 4% 2%7 Kim Pentium III 500 MHz (SCI) dual 170,1511 330,2468 21% 305,7143 17% 21%8 Sharon Pentium III 500 MHz (SCI) dual 170,1222 338,3904 22% 299,0476 17% 21%9 Demi Pentium III 500 MHz (SCI) dual 170,2607 323,7432 21% 312,3810 18% 20%10 Michelle Pentium III 500 MHz (SCI) dual 170,5568 323,5316 21% 305,7143 17% 20%

Total 829,5037 1.543,3470 100% 1.776,9940 100% 100%

Execução Média de Operações de Ponto Flutuante

Transmissão Média RAM

1P04

2P04

3P04

4P04

5P03

6P02

7P20

8P20

9P20

10P20

Figura 6. Versão final do grafo da arquitetura

Essa modelagem certamente contribuirá para trabalhos de particionamento de domínios em ambientes heterogêneos, onde certamente um domínio deverá ser particionado proporcionalmente ao poder computacional de cada processador utilizado para a resolução do problema. Como exemplo pode-se observar na figura 7 o modelo computacional do Lago Guaíba particionado em 10 (iniciando-se a partir do zero) domínios proporcionais ao pode computacional de cada nó do cluster modelado neste trabalho.

Figura 7 - Modelo computacional do Lago Guaiba particionado em 10 domínios

7. Considerações Finais Este artigo apresentou métodos para análise de desempenho, destacando-se as características dos programas de benchmark e a importância em se avaliar o desempenho de parâmetros específicos que podem ser de grande importância para a atividade fim do ambiente

computacional avaliado. Pois não adianta nada avaliar o desempenho de um disco, em uma aplicação que utilizará poucas operações de I/O e muitas operações de ponto flutuante.

Medir o desempenho de computadores não é uma tarefa fácil, pois exige um estudo razoavelmente aprofundado dos métodos que podem ser utilizados. Esses métodos devem ser específicos a ponto de conseguir medir determinados parâmetros sem exigir ou beneficiar-se de outros parâmetros, como por exemplo: um programa de benchmark que mede a capacidade do processador, deve utilizar somente recursos do processador sem se beneficiar da memória e/ou outros recursos para otimizar seus resultados.

Percebe-se que a maioria dos fabricantes, testam o desempenho de seus computadores após fazerem alguns ajustes nos programas de benchmark e no processo de compilação, otimizando o código de forma a produzir o melhor resultado possível. Para solucionar esse problema, existe uma grande discussão sobre a padronização dos programas de benchmark e das unidades de medida. Atualmente, o maior esforço neste sentido talvez seja o comitê PARKBENCH[16] por contar com a colaboração de importantes representantes de universidades, laboratórios e indústrias e do SPEC um órgão com ampla documentação disponível e atualizada. 8. Referências Bibliográficas [1] GUBITOSO, M. D. Modelagem Analítica de Desempenho para Sistemas de

Memória Compartilhada Virtual. 1996. 95p. Tese (Doutorado em Matemática Aplicada). Instituto de Matemática, Universidade Universidade de São Paulo, São Paulo.

[2] SAGULA, R. L. Avaliação de Desempenho de Bibliotecas Intervalares. Porto Alegre:Instituto de Informática, 1997. Projeto de Diplomação.

[3] VASQUEZ, P. A. M. Técnicas para análise de desempenho de computadores. Relatório de pesquisa CP 6154. Instituto de Química, Universidade Estadual de Campinas, 2001.

[4] Torvalds, L. GNU/Linux The Debian Distribution. Debian Org, 1995. Disponível por WWW em www.debian.org.

[5] SPECmarks. Spec89, Spec92, Spec95 e Spec99. System Performance Evaluation Cooperative, 2000. Disponível por WWW em www.spec.org.

[6] TANENBAUM, A. S. Modern Operating System. Prentice-Hall, 1995. 493p.

[7] DONGARRA, J. The Linpack Benchmark. UTK & Netlib, 1988. Disponível por WWW em www.netlib.org.

[8] ABURTO, A. Flops.c Version 2.0. Disponível por WWW em ftp://ftp.nosc.mil/pub/aburto.

[9] McCALPIN, J. D. IEEE Technical Committee on Computer Architecture (TCCA). Newsletter, 1995. Disponível por WWW em www.computer.org/tab/tcca/NEWS/DEC95/DEC95.HTM.

[10] MCCALPIN, JOHN D. STREAM: Sustainable Memory Bandwidth in High Performance Computers. Dept of Computer Science. University of Virginia, Virgina. Disponível por WWW em www.cs.virginia.edu/stream.

[11] DORNELES, RICARDO V. Particionamento de Domínio e Balanceamento Dinâmico de Carga em Arquiteturas Heterogêneas : Aplicação a Modelos Hidrodinâmicos e de Transporte de Massa 2-D e 3-D. Porto Alegre: PPGC da UFRGS, 2001. Proposta de Tese.

[12] RIZZI, ROGÉRIO L. Modelo Computacional Paralelo para a Hidrodinâmica e para o Transporte de Massa 2-D e 3D. Porto Alegre: PPGC da UFRGS, 2001. Proposta de Tese.

[13] SIMON, H. Partitioning of Unstructured Problems for Parallel Processing. Relatório Técnico RNR-91-008. NASA Ames Research Center. Disponível por WWW em www.nas.nasa.gov/Research/Reports/Techreports/1991/rnr-91-008-abstract.html.

[14] SCHLOEGEL, K., KARYPIS, G., KUMAR, V. Graph Partitioning for High Performance Scientific Simulation. Disponível por WWW em www-users.cs.umn.edu/~karypis/publications/partitioning.html.

[15] NORCOTT, W. D. IOzone Filesystem Benchmark. Iozone Org. Disponível por WWW em http://www.iozone.org/.

[16] WOMINGER, J. Pingpong - Measure effective bandwidth and latency. Lehrstuhl Fur Betriebssysteme University. Disponível por WWW em http://www.lfbs.rwth-aachen.de/~joachim/SCI-MPICH/pingpong_src.html.

[17] HOCKNEY, R., BERRY, M. Public International Benchmarks for Parallel Computers. Parkbench Committee: Report-1, Fev, 1994. Disponível por WWW em http://www.netlib.org/parkbench/.