• Nenhum resultado encontrado

Visualização da biblioteca de

N/A
N/A
Protected

Academic year: 2022

Share "Visualização da biblioteca de"

Copied!
6
0
0

Texto

(1)

comunicação DECK em Pajé

Lucas Mello Schnorr1 Philippe Navaux2 Benhur Stein3

Resumo

A depuração de programas paralelos é uma fase importante para a otimização e o desen- volvimento dessas aplicações. Uma das técnicas utilizadas para depuração é a visualização do comportamento de um programa após a sua execução. Este trabalho descreve as altera- ções efetuadas no DECK para possibilitar a visualização de programas desenvolvidos com essa biblioteca na ferramenta de visualização genérica Pajé.

1 Introdução

A depuração de aplicações paralelas é uma tarefa complexa quando comparada à depu- ração de programas seqüenciais. Isso acontece porque os programas paralelos não tem um comportamento determinístico, isto é, diferentes resultados e comportamentos podem acon- tecer para o mesmo conjunto de entradas para esse programa.

A visualização do comportamento dos programas após a execução é uma forma de se re- alizar a depuração de aplicações paralelas. Esse processo consiste em registrar os principais eventos de uma aplicação durante a sua execução, de forma que eles possam ser analisa- dos posteriormente. A vantagem principal desta forma de se depurar é a sua simplicidade, quando comparada a outras formas de depuração, como as que oferecem a possibilidade de depurar programas paralelos durante a sua execução (ARVIND; YOKOTSUKA, 1991;BERA- NEK, 1992)

DECK (BARRETO; NAVAUX; RIVIÈRE, 1998) é um ambiente composto por um sistema de execução e uma biblioteca de comunicação e gerenciamento de fluxos de execução. Atu- almente, não existe uma forma de se fazer a visualização, após a execução, de aplicações desenvolvidas com essa biblioteca. Existe, em contrapartida, esforços para possibilitar a

1[email protected] Bolsista CNPq

2[email protected] Orientador

3[email protected] Co-Orientador

(2)

depuração durante a execução de aplicações paralelas com DECK (STRINGHINI; NAVAUX;

KERGOMMEAUX, 2000).

Este texto relata o desenvolvimento do trabalho que permite a visualização de programas paralelos desenvolvidos no ambiente DECK usando a ferramenta Pajé (STEIN; KERGOM- MEAUX; BERNARD, 2000). A seção 2 descreve a biblioteca de comunicação DECK e a ferramenta de visualização Pajé. Na seção 3 é descrita a implementação do trabalho. Por fim é apresentada uma conclusão e os trabalhos futuros.

2 DECK e Pajé

DECK é um ambiente de programação paralela para cluster. Esse ambiente é composto por uma biblioteca e por ferramentas para execução de aplicações paralelas. A biblioteca oferece, entre outras coisas, funções que permitem a comunicação entre processos e funções para gerenciamento de fluxos de execução.

A biblioteca DECK é estruturada em dois níveis: µDECK e a camada de serviço. O µDECK é responsável por interagir com o sistema operacional e os protocolos de comuni- cação. A camada de serviço é responsável por fornecer funcionalidades como tolerância a falhas, balanceamento de carga e comunicação de grupo para as aplicações paralelas.

A comunicação no DECK é feita através da abstração de caixas de correio. Um processo que deseja receber dados deve criar uma caixa de correio. Quando outros processos que- rem enviar dados para esse primeiro processo, eles devem clonar aquela caixa de correio e então colocar nela a mensagem a ser enviada. Com essa abstração, para dois processos se comunicarem devem ser criadas duas caixas de correio, uma por cada processo.

Pajé é uma ferramenta de visualização interativa, extensível e escalável (STEIN; KER- GOMMEAUX; BERNARD, 2000). Com essas características, a ferramenta pode ser adaptada a diferentes ambientes de desenvolvimento de programas paralelos.

O arquivo de entrada de Pajé (KERGOMMEAUX; STEIN; MOUNIÉ, 1999) não apresenta eventos específicos a um ambiente de programação ou a uma biblioteca de comunicação. Ele possui, ao contrário, eventos capazes de criar abstrações na visualização.

3 Implementação

O processo de visualização desenvolvido neste trabalho foi composto por três etapas:

registro de informação durante a execução de uma aplicação com DECK, conversão desses registros para um arquivo no formato do Pajé e a visualização em si.

3.1 Registro de eventos

Para a primeira etapa, utilizou-se a técnica de instrumentação do código da biblioteca DECK para que os principais eventos fossem registrados durante a execução de uma aplica-

(3)

ção com essa biblioteca. Esses eventos são registrados na forma de rastros de execução. A técnica de instrumentação consiste basicamente na inserção de pedaços de código que cha- mam funções capazes de registrar um determinado evento.

Antes da instrumentação do DECK foi decidido qual a forma de visualização desejada para aplicações desenvolvidas com essa biblioteca. A figura 1 mostra qual é a visualiza- ção desejada. Nessa figura, os retângulos horizontais representam os fluxos de execução da aplicação desenvolvida com DECK e as suas diferentes cores representam os estados desses fluxos. As flechas entre dois retângulos representam a comunicação entre os dois fluxos de execução.

Comunicações Estados Fluxos de execução

Figura 1: Esquema de visualização possível com eventos Pajé

Para realizar o registro das informações, foi utilizada a biblioteca libRastro (SILVA; STEIN, 2002). Essa biblioteca fornece facilidades como a sincronização de eventos, baixa sobrecarga na sua utilização e a possibilidade de se criar um conjunto de eventos próprio. Com esta bibli- oteca de geração de rastros, é criado um arquivo com os eventos registrados para cada fluxo de execução.

Para se atingir a visualização desejada da figura 1, foram registradas as funções da bi- blioteca DECK que realizam a comunicação através de caixas de correio (deck_mbox_), comunicações de grupo (deck_collective_) e as funções de gerenciamento de fluxos de execução (deck_thread_). Em cada uma dessas instrumentações, foi registrada a in- formação necessária para se atingir a visualização desejada de cada caso. Por exemplo, para se visualizar uma comunicação no DECK através da caixas de mensagens, foi necessário re- gistrar o fluxo de execução que executou a funçãodeck_mbox_poste o fluxo de execução que executoudeck_mbox_retrv. Com essas informações, é possível criar uma flecha do fluxo de execução que enviou até o que recebeu a mensagem.

3.2 Conversão dos eventos

Os eventos da biblioteca DECK foram registrados com a libRastro. Foi construído um programa que realiza a conversão dos eventos registrados durante a execução de uma aplica- ção paralela com DECK aos eventos que descrevem a visualização desejada para esses dados

(4)

em Pajé.

Esse conversor mapeia para cada tipo de evento registrado durante a execução da apli- cação um conjunto de eventos Pajé que descrevem a visualização desejada. Utilizando o exemplo da seção 3.1, o evento registrado na execução da funçãodeck_mbox_postdeve ser mapeado no evento Pajé que inicia uma flecha. De forma análoga, a evento registrado na funçãodeck_mbox_retrvé mapeado no evento Pajé que indica o fim de uma flecha.

A próxima seção mostra o resultado da conversão dos eventos registrados durante a exe- cução de uma aplicação desenvolvida com DECK para o formato Pajé, considerando o ma- peamento dos eventos de cada caso.

3.3 Visualização

Foram desenvolvidas algumas aplicações com o objetivo de mostrar os resultados da ins- trumentação da biblioteca DECK. Cada uma dessas aplicações proporcionou a visualização de cada uma das funcionalidades do DECK.

A primeira imagem da figura 2 mostra a visualização de um programa desenvolvido com DECK com fluxos de execução. Ela mostra o resultado da conversão dos eventos registrados nas seguintes funções:deck_thread_create, onde é registrado o identificador do fluxo de execução criado e quem o criou,deck_thread_sleeponde é registrado qual fluxo de execução entrou no estado bloqueado, edeck_thread_join, indicando que determinado fluxo de execução está esperando o fim de outro. Nessa figura, as flechas da visualização se originam em quem criou o fluxo de execução e terminam no fluxo de execução criado. As tonalidades diferentes em cada retângulo horizontal indicam os diferentes estados de deter- minado fluxo de execução.

A segunda imagem da figura 2 mostra a visualização de um programa com comunica- ção através de caixas de correio. Para esta imagem, foram convertidos eventos registrados nas funçõesdeck_mbox_post,deck_mbox_retrv. Nesta imagem, o programa visu- alizado tem 5 processos, sendo que cada um deles envia um dado para o primeiro processo, representado como o retângulo superior.

A terceira e última imagem da figura 2 mostra a visualização de um programa desenvol- vido em DECK que explora o serviço de comunicação de grupo. Nessa figura, são executadas várias chamadas a funçãodeck_collective_bcast, sendo que entre cada uma dessas chamadas é feita a sincronização em uma barreiradeck_collective_barrier. Depois são feitas chamadas a funçãodeck_collective_reduce.

Essas visualizações mostram o resultado desse trabalho, que é a visualização em Pajé do comportamento de programas desenvolvidos com a biblioteca de comunicação DECK. A forma de geração de rastros que possibilita essa visualização é feita de forma transparente ao desenvolvedor DECK. A baixa sobrecarga no registro desses rastros é proporcionada pela biblioteca libRastro, utilizada na instrumentação do DECK.

(5)

Figura 2: Visualizações de programas desenvolvidos com DECK. A primeira imagem mostra um programa com fluxos de execuções. A segunda mostra um programa com 5 processos re- alizando comunicação através de caixas de correio. A terceira imagem mostra a visualização de um programa que explorar o serviço de comunicação de grupo do DECK.

(6)

4 Conclusão

Este texto descreveu as alterações efetuadas no DECK para possibilitar a visualização de programas desenvolvidos com essa biblioteca na ferramenta de visualização Pajé. A seção 3 mostrou que o processo de visualização desses programas é feito em três etapas: registro de eventos, conversão após a execução e por fim, visualização. Esse processo teve por objetivo ser transparente ao desenvolvedor DECK e ter baixa sobrecarga na sua utilização.

Este trabalho faz parte da dissertação do autor deste texto. O objetivo dessa dissertação é construir um sistema que permita a análise de informações oriundas de diferentes fontes de dados. Essas fontes de dados podem ser diferentes monitoradores de clusters, informações de escalonamento do sistema operacional e também informações do ambiente de execução paralelo. Dessa forma, o trabalho descrito neste artigo é a publicação dos resultados parciais dessa dissertação.

A instrumentação e visualização da biblioteca DECK tem como trabalhos futuros a am- pliação da instrumentação, de forma que se possa registrar mais informação. Fazer com que seja possível o controle de registro dos eventos de acordo com ordens do desenvolvedor. Isso permitirá que o desenvolvedor aumente o grau de detalhe na geração de eventos em locais específicos da aplicação em desenvolvimento. Além desses trabalhos futuros, pretende-se registrar informações mais detalhes doµDECK, de forma que a visualização proposta neste trabalho também seja utilizada no desenvolvimento da biblioteca de comunicação DECK.

Referências Bibliográficas

ARVIND, D. K.; YOKOTSUKA, D. Debugging concurrent programs using static analysis and run-time hardware monitoring. In: Proceedings of IEEE Symposium on Parallel and Distributed Processing.

Dallas, Texas: [s.n.], 1991.

BARRETO, M. E.; NAVAUX, P. O. A.; RIVIÈRE, M. P. Deck: a new model for a distributed executive kernel integrating communication and multithreading for support of distributed object oriented applica- tion with fault tolerance support. In: Congreso Argentino de Ciencias de la Computacion. Neuquém, Argentina: [s.n.], 1998. v. 2, p. 623–637.

BERANEK, A. Data race detection based on execution replay for parallel applications. In: Proceedings of CONPAR ’92. Lyon, France: [s.n.], 1992. p. 109–114.

KERGOMMEAUX, J. C. de; STEIN, B. O.; MOUNIÉ, G. Pajé trace format. Technical Paper, 1999.

SILVA, G. J. da; STEIN, B. O. Uma biblioteca genérica de geração de rastros de execução para visua- lização de programas. Anais do I Simpósio de Informática da Região Centro, 2002.

STEIN, B. O.; KERGOMMEAUX, J. C. de; BERNARD, P.-E. Pajé, an interactive visualization tool for tuning multi-threaded parallel applications. Parallel Computing, v. 26, p. 1253–1274, 2000.

STRINGHINI, D.; NAVAUX, P.; KERGOMMEAUX, J. C. de. A selection mechanism to group pro- cesses in a parallel debugger. In: International Conference on Parallel and Distributed Processing Techniques and Applications. Las Vegas, USA: CSREA Press, 2000. v. 2.

Referências

Documentos relacionados

Frente a todos esses elementos, a prática de estágio docente como estudantes do mestrado acadêmico de saúde coletiva, foi necessário um novo planejamento e embasamento teórico

Portanto, mesmo percebendo a presença da música em diferentes situações no ambiente de educação infantil, percebe-se que as atividades relacionadas ao fazer musical ainda são

Muitos desses fungos podem ser encontrados nos grãos de café durante todo o ciclo produtivo, porém sob algumas condições especificas podem causar perda de

patula inibe a multiplicação do DENV-3 nas células, (Figura 4), além disso, nas análises microscópicas não foi observado efeito citotóxico do extrato sobre as

libras ou pedagogia com especialização e proficiência em libras 40h 3 Imediato 0821FLET03 FLET Curso de Letras - Língua e Literatura Portuguesa. Estudos literários

Objetivos - Avaliar a prevalência de anemia e seus determinantes entre crianças de 2 a 5 anos de idade, atendidas pelo programa Estratégia Saúde da Família ESF; analisar a

determinado grupo social. Por este motivo, é relevante o estudo aprofundado acerca deste método, como incentivador da humanização e personalização dos indivíduos que

Acrescenta que “a ‘fonte do direito’ é o próprio direito em sua passagem de um estado de fluidez e invisibilidade subterrânea ao estado de segurança e clareza” (Montoro, 2016,