O documento descreve o Sistema Aldeia, que fornece comunicação eficiente em Java sobre a rede Infiniband. O sistema foi desenvolvido para permitir programação paralela e distribuída em Java com alto desempenho, utilizando comunicação direta e assíncrona em nível de usuário na rede Infiniband.
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
Sistema Aldeia: Mestre em Ciência da Computação (UFRGS 2005)
1. Sistema Aldeia:
Programac¸ ˜ao Paralela e Distribu´ıda em
Java sobre Infiniband e DECK
Rodrigo da Rosa Righi
Orientador: Philippe Olivier Alexandre Navaux
Co-orientador: Marcelo Pasin
Programa de P´os-Graduac¸ ˜ao em Computac¸ ˜ao - PPGC/UFRGS
Defesa de dissertac¸ ˜ao de Mestrado
2. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Roteiro
1 Parte I: Introduc¸ ˜ao
2 Parte II: Sistema Aldeia
3 Parte III: Avaliac¸ ˜ao do Sistema Aldeia
4 Parte IV: Considerac¸ ˜oes Finais
2/67
3. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Introduc¸ ˜ao
1 Parte I: Introduc¸ ˜ao
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
2 Parte II: Sistema Aldeia
3 Parte III: Avaliac¸ ˜ao do Sistema Aldeia
4 Parte IV: Considerac¸ ˜oes Finais
3/67
4. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Foco Principal
Comunicac¸ ˜ao de alto desempenho para agregados (clusters)
Programac¸ ˜ao orientada a objetos em Java
Redes de sistema (redes dedicadas) atuais
Java + Infiniband
4/67
5. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
M´aquina Paralela e Sistemas de Interconex˜ao
Interconex˜ao de agregados com redes tradicionais
Ethernet (802.*) e TCP/IP
Baixo custo e escalabilidade
Sobrecarga do TCP/IP: controle de fluxo, retransmiss˜ao,
c´opias
Interconex˜ao de agregados com redes r´apidas
Priorizam alta vaz˜ao e baixa latˆencia
Protocolos leves
Reduzir c´opias, passar sobrecarga para o hardware e DMA
Myrinet, SCI, Quadrics, VIA e Infiniband
U-Net, VIA, GM, DECK e VAPI
5/67
6. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
M´aquina Paralela e Sistemas de Interconex˜ao
Interconex˜ao de agregados com redes tradicionais
Ethernet (802.*) e TCP/IP
Baixo custo e escalabilidade
Sobrecarga do TCP/IP: controle de fluxo, retransmiss˜ao,
c´opias
Interconex˜ao de agregados com redes r´apidas
Priorizam alta vaz˜ao e baixa latˆencia
Protocolos leves
Reduzir c´opias, passar sobrecarga para o hardware e DMA
Myrinet, SCI, Quadrics, VIA e Infiniband
U-Net, VIA, GM, DECK e VAPI
5/67
7. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
M´aquina Paralela e Sistemas de Interconex˜ao
Arquitetura de Interconex˜ao Infiniband
Tentativa de padronizac¸ ˜ao para redes de sistema
Vaz˜ao: 2.5, 10 e 30 gigabits por segundo
Comunicac¸ ˜ao chaveada e concorrente entre n´os
Qualidade de servic¸o em hardware
Bibliotecas de baixo n´ıvel: VAPI e InfiniBlue
Bibliotecas com interfaces bem definidas: MPI
6/67
8. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
M´aquina Paralela e Sistemas de Interconex˜ao
Arquitetura de Interconex˜ao Infiniband
Tentativa de padronizac¸ ˜ao para redes de sistema
Vaz˜ao: 2.5, 10 e 30 gigabits por segundo
Comunicac¸ ˜ao chaveada e concorrente entre n´os
Qualidade de servic¸o em hardware
Bibliotecas de baixo n´ıvel: VAPI e InfiniBlue
Bibliotecas com interfaces bem definidas: MPI
6/67
9. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
M´aquina Paralela e Sistemas de Interconex˜ao
NóNóNóNó
Nó
Nó
Nó Nó
Nó
Nó
Chaveador
Chaveador
Chaveador
Nó
Adaptador de rede
Porta Porta
Rede Infiniband
7/67
10. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Linguagem de Programac¸ ˜ao Java
Caracter´ısticas Gerais de Java
Programac¸ ˜ao orientada a objetos
Funcionalidades para a programac¸ ˜ao distribu´ıda e
concorrente
Portabilidade (interpretac¸ ˜ao)
Desempenho est´a melhorando: compiladores JIT e direto,
novos sistemas para a programac¸ ˜ao paralela e distribu´ıda
8/67
11. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Linguagem de Programac¸ ˜ao Java
Programac¸ ˜ao distribu´ıda em Java
Soquetes Java - comunicac¸ ˜ao s´ıncrona sobre TCP/IP
Java RMI - comunicac¸ ˜ao sobre TCP/IP de forma
transparente
Programac¸ ˜ao paralela em Java
Ibis - v´arias interfaces de comunicac¸ ˜ao sobre MPI,
soquetes TCP/IP, Panda e GM
JavaSymphony - interface particular sobre TCP/IP
ProActive - comunicac¸ ˜ao de alto n´ıvel sobre RMI, Jini e Ibis
9/67
12. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Linguagem de Programac¸ ˜ao Java
Programac¸ ˜ao distribu´ıda em Java
Soquetes Java - comunicac¸ ˜ao s´ıncrona sobre TCP/IP
Java RMI - comunicac¸ ˜ao sobre TCP/IP de forma
transparente
Programac¸ ˜ao paralela em Java
Ibis - v´arias interfaces de comunicac¸ ˜ao sobre MPI,
soquetes TCP/IP, Panda e GM
JavaSymphony - interface particular sobre TCP/IP
ProActive - comunicac¸ ˜ao de alto n´ıvel sobre RMI, Jini e Ibis
9/67
13. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Motivac¸ ˜ao
Java em agregados ´e ineficiente para alto desempenho
TCP/IP
S´ıncrono
Comunicac¸ ˜ao direta em Java em n´ıvel de usu´ario
especialmente para Infiniband ´e algo inexplorado
Comunicac¸ ˜ao eficiente em Java sobre Infiniband
10/67
14. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Motivac¸ ˜ao
Java em agregados ´e ineficiente para alto desempenho
TCP/IP
S´ıncrono
Comunicac¸ ˜ao direta em Java em n´ıvel de usu´ario
especialmente para Infiniband ´e algo inexplorado
Comunicac¸ ˜ao eficiente em Java sobre Infiniband
10/67
15. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Foco Principal
M´aquina Paralela e Sistemas de Interconex˜ao
Linguagem de Programac¸ ˜ao Java
Motivac¸ ˜ao
Objetivos
Objetivos
Desenvolvimento do Sistema Aldeia
Comunicac¸ ˜ao eficiente para Java sobre Infiniband
Usar comunicac¸ ˜ao em n´ıvel de usu´ario
Usar assincronismo na comunicac¸ ˜ao
Usar protocolos leves
Usar uma interface de programac¸ ˜ao Java bem conhecida
Aproveitar o legado de redes de sistemas do ambiente
DECK
11/67
16. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Roteiro
1 Parte I: Introduc¸ ˜ao
2 Parte II: Sistema Aldeia
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
3 Parte III: Avaliac¸ ˜ao do Sistema Aldeia
4 Parte IV: Considerac¸ ˜oes Finais
12/67
17. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Decis˜oes de Projeto
Java eficiente para Infiniband e DECK
Adaptador OO + novo DECK + Infiniband
Ineficiente
Adaptador OO + Infiniband
Eficiente
Usa DECK via segundo adaptador no n´ıvel Infiniband
13/67
18. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Decis˜oes de Projeto
Adaptac¸ ˜ao em n´ıvel de RMI
Implementac¸ ˜ao espec´ıfica de mensagens ativas
Implementac¸ ˜oes conhecidas de RMI
Usam soquetes
Adaptac¸ ˜ao em n´ıvel de soquetes
Permite n˜ao reimplementar RMI
Pode ser aproveitada para aplicac¸ ˜oes que usam soquetes
Java eficiente para Infiniband e DECK
Soquetes Java para Infiniband
14/67
19. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Decis˜oes de Projeto
Sistema Aldeia
Arcabouc¸o para a inclus˜ao de novos sistemas de
comunicac¸ ˜ao
Assincronismo na transmiss˜ao de dados
Qualidade de servic¸o sobre Infiniband
Gerac¸ ˜ao de rastros sobre DECK
15/67
20. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Estrutura de M´odulos do Aldeia
Aplicação
Biblioteca
VAPI DECK
Biblioteca
uVAPI
Biblioteca
Adaptador VAPI
Soquetes Aldeia
RMI
JNI
Linguagem Java
Linguagem C
16/67
21. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Estrutura de M´odulos do Aldeia
Aplicação
Biblioteca
VAPI DECK
Biblioteca
uVAPI
Biblioteca
Adaptador VAPI
Soquetes Aldeia
RMI
JNI
Linguagem Java
Linguagem C
17/67
22. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Interface de Programac¸ ˜ao do Aldeia
Dois fluxos de comunicac¸ ˜ao: entrada e sa´ıda
M´etodos principais
read()
write()
flush()
Mensagens de tamanho vari´avel
Transmissor envia 100 bytes e receptor chama duas vezes
o m´etodo para a leitura de 50 bytes
18/67
23. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
19/67
24. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Arquivo de Configurac¸ ˜ao do Aldeia
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Comunicac¸ ˜ao com a VAPI
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
20/67
25. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Arquivo de Configurac¸ ˜ao do Aldeia
Estabelecer propriedades ao Aldeia sem alterar a interface
dos soquetes
Conte´udo do arquivo de configurac¸ ˜ao
Porta do adaptador Infiniband
Qualidade de servic¸o Infiniband
Identificador do processo DECK
Quantidade total de processos DECK
Tipo de soquetes (DECK ou Infiniband)
Tamanho da unidade de transferˆencia
21/67
26. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Arquivo de Configurac¸ ˜ao do Aldeia
Estabelecer propriedades ao Aldeia sem alterar a interface
dos soquetes
Conte´udo do arquivo de configurac¸ ˜ao
Porta do adaptador Infiniband
Qualidade de servic¸o Infiniband
Identificador do processo DECK
Quantidade total de processos DECK
Tipo de soquetes (DECK ou Infiniband)
Tamanho da unidade de transferˆencia
21/67
27. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Arquivo de Configurac¸ ˜ao do Aldeia
Estabelecer propriedades ao Aldeia sem alterar a interface
dos soquetes
Conte´udo do arquivo de configurac¸ ˜ao
Porta do adaptador Infiniband
Qualidade de servic¸o Infiniband
Identificador do processo DECK
Quantidade total de processos DECK
Tipo de soquetes (DECK ou Infiniband)
Tamanho da unidade de transferˆencia
21/67
28. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Processo de conex˜ao com o Aldeia
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
22/67
29. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Processo de conex˜ao com o Aldeia
ServerSocket ss = new ServerSocket(356) ;
Socket s;
s = ss.accept();
Socket c = new Socket(¨server.inf.ufrgs.br¨, 356);
Servidor
Cliente
Servidor abre porta local e cliente se conecta no servidor
informando a m´aquina e a porta
23/67
30. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Processo de conex˜ao com o Aldeia
Nó 1 Nó 2
ID2
ID1 ID1
ID2
Infiniband e implementac¸ ˜ao com o DECK - Interlocutores
precisam de informac¸ ˜oes sobre o ponto remoto
Criar soquete TCP/IP com a porta passada na interface
Java para transmitir essas informac¸ ˜oes
24/67
31. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao de Fluxo de Dados para Troca de Mensagens
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
25/67
32. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao de Fluxo de Dados para Troca de Mensagens
Soquetes Java transportam dados de qualquer tamanho
(fluxo - stream)
Enviar duas mensagens para cada requisic¸ ˜ao
Latˆencia de comunicac¸ ˜ao
Registro de mem´oria (invi´avel)
Usar unidade m´axima para transferˆencia de dados (MTU)
Saber de antem˜ao o tamanho da mensagem no receptor
Economia operac¸ ˜oes de registro de mem´oria
V´arias comunicac¸ ˜oes para mensagens grandes
26/67
33. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Organizac¸ ˜ao dos C´odigos em C e em Java
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
27/67
34. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Organizac¸ ˜ao dos C´odigos em C e em Java
Aplicação
Soquetes Aldeia
Adaptador VAPI
Biblioteca
Comunicação Comunicação
Biblioteca
Adaptador VAPI
Soquetes Aldeia
Aplicação
Rede de interconexão
Ponto final 2Ponto final 1
JNI
Linguagem
Java
Linguagem C
28/67
35. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Organizac¸ ˜ao dos C´odigos em C e em Java
Prot´otipo 1
Segmentac¸ ˜ao das mensagens em Java
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 2
Segmentac¸ ˜ao das mensagens em Java
Utilizac¸ ˜ao de um objeto ByteBuffer
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 3
Segmentac¸ ˜ao de mensagens em linguagem C
´Unica transmiss˜ao dos dados pelo m´etodo nativo
29/67
36. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Organizac¸ ˜ao dos C´odigos em C e em Java
Prot´otipo 1
Segmentac¸ ˜ao das mensagens em Java
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 2
Segmentac¸ ˜ao das mensagens em Java
Utilizac¸ ˜ao de um objeto ByteBuffer
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 3
Segmentac¸ ˜ao de mensagens em linguagem C
´Unica transmiss˜ao dos dados pelo m´etodo nativo
29/67
37. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Organizac¸ ˜ao dos C´odigos em C e em Java
Prot´otipo 1
Segmentac¸ ˜ao das mensagens em Java
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 2
Segmentac¸ ˜ao das mensagens em Java
Utilizac¸ ˜ao de um objeto ByteBuffer
V´arias chamadas para dados maiores que uma MTU
Prot´otipo 3
Segmentac¸ ˜ao de mensagens em linguagem C
´Unica transmiss˜ao dos dados pelo m´etodo nativo
29/67
38. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Comunicac¸ ˜ao com a VAPI
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Comunicac¸ ˜ao com a VAPI
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
30/67
39. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Comunicac¸ ˜ao com a VAPI
Par de filas de comunicac¸ ˜ao (QP) e par de filas de
conclus˜ao
Filas contˆem descritores de comunicac¸ ˜ao, com
Ponteiro para a ´area de mem´oria
Tamanho da ´area da mem´oria
Marcador para conclus˜ao
Descritores com marcador de conclus˜ao
S˜ao inseridos na correspondente fila de conclus˜ao
Descritores sem marcador de conclus˜ao
S˜ao descartados
Acesso a fila de conclus˜ao ´e lento (chamada ao SO)
31/67
40. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Comunicac¸ ˜ao com a VAPI
Par de filas de comunicac¸ ˜ao (QP) e par de filas de
conclus˜ao
Filas contˆem descritores de comunicac¸ ˜ao, com
Ponteiro para a ´area de mem´oria
Tamanho da ´area da mem´oria
Marcador para conclus˜ao
Descritores com marcador de conclus˜ao
S˜ao inseridos na correspondente fila de conclus˜ao
Descritores sem marcador de conclus˜ao
S˜ao descartados
Acesso a fila de conclus˜ao ´e lento (chamada ao SO)
31/67
41. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Comunicac¸ ˜ao com a VAPI
Par de filas de comunicac¸ ˜ao (QP) e par de filas de
conclus˜ao
Filas contˆem descritores de comunicac¸ ˜ao, com
Ponteiro para a ´area de mem´oria
Tamanho da ´area da mem´oria
Marcador para conclus˜ao
Descritores com marcador de conclus˜ao
S˜ao inseridos na correspondente fila de conclus˜ao
Descritores sem marcador de conclus˜ao
S˜ao descartados
Acesso a fila de conclus˜ao ´e lento (chamada ao SO)
31/67
42. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Transmiss˜ao de Dados
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Comunicac¸ ˜ao com a VAPI
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
32/67
43. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Transmiss˜ao de Dados com o Aldeia
Buffer circular de envio
Mem´oria registrada (1MB = m´aximo transmitido)
Cont´em mensagens de tamanho vari´avel at´e 1 MTU
Lista circular de descritores de envio
Cont´em descritores de comunicac¸ ˜ao a serem inseridos na
fila de envio
Somente o ´ultimo de cada mensagem ´e marcado
33/67
44. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Transmiss˜ao de Dados com o Aldeia
1024 1024 1024 1024 952 1 1024 1024 1024 1024 500
req1 req2 req3 req4
Descritores
Buffer
34/67
45. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Recepc¸ ˜ao de Dados com o Aldeia
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Comunicac¸ ˜ao com a VAPI
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
35/67
46. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Recepc¸ ˜ao de Dados com o Aldeia
Buffer de 1 MTU
Mem´oria registrada
Com ponteiros para bytes j´a consumidos
Descritor de comunicac¸ ˜ao
Inserido na fila de recepc¸ ˜ao
Espera receber uma MTU
Ap´os a comunicac¸ ˜ao ´e preenchido com o tamanho da
mensagem
Reutilizado para completar a requisic¸ ˜ao
36/67
47. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Recepc¸ ˜ao de Dados com o Aldeia
Guardado para as
processados
Já
Tamanho igual a MTU
Região de memória registrada para a leitura
próximas interações
37/67
48. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
Arquivo de configurac¸ ˜ao
Processo de conex˜ao
Adaptac¸ ˜ao de fluxo de dados para troca de mensagens
Organizac¸ ˜ao dos c´odigos em C e em Java
Comunicac¸ ˜ao com a VAPI
Transmiss˜ao de dados
Recepc¸ ˜ao de dados
Adaptac¸ ˜ao para utilizac¸ ˜ao do DECK
38/67
49. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
DECK possui programa espec´ıfico para lanc¸amento de
processos que informa:
Quantidade de n´os
Identificador do n´o
Comunicac¸ ˜ao s´ıncrona
Comunicac¸ ˜ao com caixas de correio
Desenvolvimento da biblioteca MicroVAPI
Adaptar 17 func¸ ˜oes da VAPI para usar o DECK
Mesma sintaxe e semˆantica da VAPI
39/67
50. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
DECK possui programa espec´ıfico para lanc¸amento de
processos que informa:
Quantidade de n´os
Identificador do n´o
Comunicac¸ ˜ao s´ıncrona
Comunicac¸ ˜ao com caixas de correio
Desenvolvimento da biblioteca MicroVAPI
Adaptar 17 func¸ ˜oes da VAPI para usar o DECK
Mesma sintaxe e semˆantica da VAPI
39/67
51. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
Adaptac¸ ˜oes realizadas
Processo de conex˜ao
Par de filas
Comunicac¸ ˜ao ass´ıncrona
Adaptac¸ ˜ao no processo de conex˜ao
DECK utiliza o processo de clonagem
Troca de duas informac¸ ˜oes para a gerac¸ ˜ao de uma chave
´unica para clonagem
40/67
52. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
Adaptac¸ ˜oes realizadas
Processo de conex˜ao
Par de filas
Comunicac¸ ˜ao ass´ıncrona
Adaptac¸ ˜ao no processo de conex˜ao
DECK utiliza o processo de clonagem
Troca de duas informac¸ ˜oes para a gerac¸ ˜ao de uma chave
´unica para clonagem
40/67
53. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
Adaptac¸ ˜ao para a criac¸ ˜ao de par de filas
Nó B
QP B
Nó A
VAPI
QP A
Caixa B Clonada
Caixa A
QP A
Nó A
QP B
Nó B
Caixa A Clonada
Caixa B
MicroVAPI
41/67
54. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Decis˜oes de Projeto
Estrutura Modular
Interface de Programac¸ ˜ao
Implementac¸ ˜ao
Implementac¸ ˜ao
Adaptac¸ ˜ao para Utilizac¸ ˜ao do DECK
Adaptac¸ ˜ao para assincronismo: produtor-consumidor
Fluxo da biblioteca
MicroVAPI
Fluxo concorrente
de execução
comunicação
requisitar uma
Procedimento para
comunicação
Demônio para o
processamento da
Produtor Consumidor
1
3
2
4
6
5
Fila de requisições
Rede de Interconexão
42/67
55. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Roteiro
1 Parte I: Introduc¸ ˜ao
2 Parte II: Sistema Aldeia
3 Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
4 Parte IV: Considerac¸ ˜oes Finais
43/67
56. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Aplicac¸ ˜ao de Ping-Pong
Capturar o tempo final para a passagem de uma
mensagem
Nó 1
canal_saida.write(dados, 0, tamanho);
canal_saida.flush();
canal_recepcao.read(dados, 0, tamanho);
T_final = Captura_tempo();
T_inicial = captura_tempo();
}
for(i = 0; i < iteracoes; i++){
}
T_final=(T_final−T_inicial) / (2*iteracoes);
44/67
57. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Tempo de Comunicac¸ ˜ao Usando o Aldeia com a VAPI
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
50
100
150
200
250
300
350
400
450
500
550
600
650
Tempoemmicrosegundos
MTU 512
MTU 1024
MTU 2048
Tempo unidirecional da aplicação de Ping-Pong em microsegundos usando a VAPI
45/67
58. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Vaz˜ao Usando o Aldeia com a VAPI
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
25
50
75
100
125
150
175
200
225
250
275
300
325
350
375
400
Larguradebandaemmegabitsporsegundo
MTU 512
MTU 1024
MTU 2048
Tempo da aplicação de Ping-Pong em milisegundos usando a VAPI
46/67
59. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Vaz˜ao Usando o Aldeia com a VAPI
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
25
50
75
100
125
150
175
200
225
250
275
300
325
350
375
400
Larguradebandaemmegabitsporsegundo
MTU 512
MTU 1024
MTU 2048
Tempo da aplicação de Ping-Pong em milisegundos usando a VAPI
400 megabits
por segundo
47/67
60. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Tempo de Comunicac¸ ˜ao Usando o Aldeia com a DECK/TCP
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
50
100
150
200
250
300
350
400
450
500
550
600
650
700
750
800
850
900
950
1000
1050
1100
Tempoemmicrosegundos
MTU 512
MTU 1024
MTU 2048
Tempo unidirecional da aplicação de Ping-Pong em microsegundos usando o DECK/TCP
48/67
61. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Vaz˜ao Usando o Aldeia com a DECK/TCP
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
Larguradebandaemmegabitsporsegundo
MTU 512
MTU 1024
MTU 2048
Tempo da aplicação de Ping-Pong em milisegundos usando o DECK/TCP
49/67
62. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Vaz˜ao Usando o Aldeia com a DECK/TCP
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
Larguradebandaemmegabitsporsegundo
MTU 512
MTU 1024
MTU 2048
Vazão da aplicação de Ping-Pong usando o DECK/TCP
70 megabits
por segundo
50/67
63. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Comunicac¸ ˜ao Ass´ıncrona
Captura dos tempos ass´ıncrono e s´ıncrono
M´etodo flush() fora da estrutura iterativa
Nó 1
T_inicial = captura_tempo();
for( i = 0; i < iterações ; i++){
}
T_parcial = captura_tempo();
canal_saida.write(dados, 0, tamanho);
canal_saida.flush();
T_final = captura_tempo();
T_assinc = (T_parcial−T_inicial) / (2*iteracoes);
T_sinc = (T_final−T_inicial) / (2*iteracoes);
51/67
64. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Comunicac¸ ˜ao Ass´ıncrona
Comunicac¸ ˜ao Usando o Aldeia com a VAPI
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
25
50
75
100
125
150
175
200
Tempoemmicrosegundos
Comunicação Síncrona
Comunicação Assíncrona
Comunicação Assíncrona usando a VAPI
52/67
65. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Comunicac¸ ˜ao Ass´ıncrona
Comunicac¸ ˜ao Usando o Aldeia com o DECK/TCP
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Tamanho da mensagem em bytes
0
50
100
150
200
250
300
350
400
450
500
550
600
650
700
750
800
850
900
950
1000
Tempoemmicrosegundos
Comunicação Síncrona
Comunicação Assíncrona
Comunicação Assíncrona usando DECK TCP
53/67
66. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Serializac¸ ˜ao de Objetos
Serializac¸ ˜ao de um vetor de inteiros
Comparac¸ ˜ao com soquetes Java TCP/IP
Descarregamento do canal antes de capturar o tempo final
Utilizac¸ ˜ao do DECK na sua vers˜ao TCP/IP
T_inicial = captura_tempo();
Nó 1
int[ ] vetor = new int[tamanho];
objeto_saida.writeObject(vetor);
Tempo_final = T_final − T_inicial;
T_final = Captura_tempo();
canal_saida.flush();
54/67
67. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Serializac¸ ˜ao de Objetos
Tempo da passagem do vetor de inteiros em milisegundos
Sistema
Elementos do vetor
102
103
104
105
106
107
Soquetes
TCP/IP
27.3 28.9 47.9 113.2 447.5 3628.7
Aldeia
TCP/IP
26.9 27.6 48.2 114.4 449.3 3626.1
55/67
68. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Caracter´ısticas da aplicac¸ ˜ao
Paralelizac¸ ˜ao segundo o modelo mestre-escravo
Possui uma propriedade chamada m´ascara
Utilizac¸ ˜ao de todos os n´os do agregado LabTeC
Utilizac¸ ˜ao do DECK na sua vers˜ao TCP/IP
Avaliar a correta transmiss˜ao dos dados com o Aldeia
56/67
69. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
57/67
70. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Eficiˆencia Usando Diferentes M´ascaras
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Número de processos escravos
0
10
20
30
40
50
60
70
80
90
100
Porcentagemdaeficiência
Máscara 9x9
Máscara 7x7
Máscara 5x5
Máscara 3x3
Eficiência na aplicação do Filtro de Mediana
58/67
71. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Gerac¸ ˜ao de Rastros
Caracter´ısticas da gerac¸ ˜ao de rastros
Utilizac¸ ˜ao do DECK na sua vers˜ao instrumentada
DECK gera rastros para as criac¸ ˜ao e clonagem de caixas
de correio e trocas de mensagem
Visualizac¸ ˜ao na ferramenta Paj´e
Permite identificar o instante da troca de mensagem e
quantidade de dados envolvida
59/67
72. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Gerac¸ ˜ao de Rastros e Depurac¸ ˜ao
Transmiss˜ao de um vetor de inteiros
Identificar a comunicac¸ ˜ao na serializac¸ ˜ao de objetos
Processo de conex˜ao
Criac¸ ˜ao de caixa de correio e clonagem da caixa remota
Machine
labtec-l1 Thread 5734 DECKState
labtec-l2 Thread 12098 DECKState
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 9
60/67
73. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Tempo de Comunicac¸ ˜ao e Vaz˜ao
Comunicac¸ ˜ao Ass´ıncrona
Serializac¸ ˜ao de Objetos
Aplicac¸ ˜ao Distribu´ıda do Filtro de Mediana
Gerac¸ ˜ao de Rastros
Gerac¸ ˜ao de Rastros
Troca de mensagem
Visualizac¸ ˜ao de trˆes instantes
Clicar nas linhas para verificar a quantidade de bytes
transmitidos
Machine
labtec-l1 Thread 5734 DECKState
labtec-l2 Thread 12098 DECKState
5 80 85 90 95 100 105 110 115 120 125 130 135 14
61/67
74. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Roteiro
1 Parte I: Introduc¸ ˜ao
2 Parte II: Sistema Aldeia
3 Parte III: Avaliac¸ ˜ao do Sistema Aldeia
4 Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
62/67
75. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Conclus˜oes Gerais
Aspectos gerais do sistema Aldeia
Organizado de modo que novas bibliotecas sejam
facilmente adicionadas
Possui uma interface que o programador est´a acostumado
Apresenta uma interface simples que esconde os detalhes
de utilizac¸ ˜ao das bibliotecas de baixo n´ıvel
Utilizac¸ ˜ao em sistemas distribu´ıdos, para alto desempenho
e aplicac¸ ˜oes corporativas
63/67
76. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Conclus˜oes Gerais
Aspectos gerais do sistema Aldeia
Organizado de modo que novas bibliotecas sejam
facilmente adicionadas
Possui uma interface que o programador est´a acostumado
Apresenta uma interface simples que esconde os detalhes
de utilizac¸ ˜ao das bibliotecas de baixo n´ıvel
Utilizac¸ ˜ao em sistemas distribu´ıdos, para alto desempenho
e aplicac¸ ˜oes corporativas
63/67
77. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Conclus˜oes Gerais
Aspectos gerais do sistema Aldeia
Organizado de modo que novas bibliotecas sejam
facilmente adicionadas
Possui uma interface que o programador est´a acostumado
Apresenta uma interface simples que esconde os detalhes
de utilizac¸ ˜ao das bibliotecas de baixo n´ıvel
Utilizac¸ ˜ao em sistemas distribu´ıdos, para alto desempenho
e aplicac¸ ˜oes corporativas
63/67
78. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Conclus˜oes Gerais
Aspectos gerais do sistema Aldeia
Organizado de modo que novas bibliotecas sejam
facilmente adicionadas
Possui uma interface que o programador est´a acostumado
Apresenta uma interface simples que esconde os detalhes
de utilizac¸ ˜ao das bibliotecas de baixo n´ıvel
Utilizac¸ ˜ao em sistemas distribu´ıdos, para alto desempenho
e aplicac¸ ˜oes corporativas
63/67
79. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Contribuic¸ ˜oes
Por que usar o sistema Aldeia?
Interface Java para comunicac¸ ˜ao sobre redes Infiniband
Transmiss˜ao de dados de forma ass´ıncrona sobre uma
interface Java
Qualidade de servic¸o para comunicac¸ ˜ao Infiniband
Gerac¸ ˜ao de rastros para a visualizac¸ ˜ao do comportamento
do programa paralelo usando a biblioteca DECK
Proporciona uma interface de programac¸ ˜ao em Java que ´e
simples e intuitiva e de f´acil integrac¸ ˜ao com sistemas RMI
64/67
80. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Contribuic¸ ˜oes
Por que usar o sistema Aldeia?
Interface Java para comunicac¸ ˜ao sobre redes Infiniband
Transmiss˜ao de dados de forma ass´ıncrona sobre uma
interface Java
Qualidade de servic¸o para comunicac¸ ˜ao Infiniband
Gerac¸ ˜ao de rastros para a visualizac¸ ˜ao do comportamento
do programa paralelo usando a biblioteca DECK
Proporciona uma interface de programac¸ ˜ao em Java que ´e
simples e intuitiva e de f´acil integrac¸ ˜ao com sistemas RMI
64/67
81. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Contribuic¸ ˜oes
Por que usar o sistema Aldeia?
Interface Java para comunicac¸ ˜ao sobre redes Infiniband
Transmiss˜ao de dados de forma ass´ıncrona sobre uma
interface Java
Qualidade de servic¸o para comunicac¸ ˜ao Infiniband
Gerac¸ ˜ao de rastros para a visualizac¸ ˜ao do comportamento
do programa paralelo usando a biblioteca DECK
Proporciona uma interface de programac¸ ˜ao em Java que ´e
simples e intuitiva e de f´acil integrac¸ ˜ao com sistemas RMI
64/67
82. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Contribuic¸ ˜oes
Por que usar o sistema Aldeia?
Interface Java para comunicac¸ ˜ao sobre redes Infiniband
Transmiss˜ao de dados de forma ass´ıncrona sobre uma
interface Java
Qualidade de servic¸o para comunicac¸ ˜ao Infiniband
Gerac¸ ˜ao de rastros para a visualizac¸ ˜ao do comportamento
do programa paralelo usando a biblioteca DECK
Proporciona uma interface de programac¸ ˜ao em Java que ´e
simples e intuitiva e de f´acil integrac¸ ˜ao com sistemas RMI
64/67
83. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Contribuic¸ ˜oes
Por que usar o sistema Aldeia?
Interface Java para comunicac¸ ˜ao sobre redes Infiniband
Transmiss˜ao de dados de forma ass´ıncrona sobre uma
interface Java
Qualidade de servic¸o para comunicac¸ ˜ao Infiniband
Gerac¸ ˜ao de rastros para a visualizac¸ ˜ao do comportamento
do programa paralelo usando a biblioteca DECK
Proporciona uma interface de programac¸ ˜ao em Java que ´e
simples e intuitiva e de f´acil integrac¸ ˜ao com sistemas RMI
64/67
84. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Trabalhos Futuros
Avaliac¸ ˜ao do Aldeia
Avaliac¸ ˜ao sobre a interface de rede Myrinet
Implementac¸ ˜ao do Aldeia
Adaptador DECK
Integrac¸ ˜ao de agregados formados por diferentes
tecnologias de rede
65/67
85. Parte I: Introduc¸ ˜ao
Parte II: Sistema Aldeia
Parte III: Avaliac¸ ˜ao do Sistema Aldeia
Parte IV: Considerac¸ ˜oes Finais
Conclus˜oes Gerais
Contribuic¸ ˜oes
Trabalhos Futuros
Publicac¸ ˜oes
Publicac¸ ˜oes
Sistema Aldeia: Invocac¸ ˜ao Remota e Ass´ıncrona de
M´etodos sobre Infiniband e DECK. Workshop em Sistemas
Computacionais de Alto Desempenho. Foz do Iguac¸u,
2004
Infiniband: Alta Eficiˆencia no tratamento de grandes
volumes de dados e na computac¸ ˜ao num´erica. Encontro
Nacional de Engenharia de Produc¸ ˜ao. Florian´opolis, 2004
libVIP: Arquitetura de Interface Virtual sobre TCP/IP.
Workshop em sistemas computacionais de alto
desempenho. S˜ao Paulo, 2003
66/67
86. Sistema Aldeia:
Programac¸ ˜ao Paralela e Distribu´ıda em
Java sobre Infiniband e DECK
Rodrigo da Rosa Righi
Orientador: Philippe Olivier Alexandre Navaux
Co-orientador: Marcelo Pasin
Programa de P´os-Graduac¸ ˜ao em Computac¸ ˜ao - PPGC/UFRGS
Defesa de dissertac¸ ˜ao de Mestrado