Efficient Java Communication Protocols on High-speed Cluster Interconnects Alexandre Almeida Felipe Severino Tema • Criação de um protocolo de comunicação Java otimizado para comunicação eficiente em clusters de alto desempenho (e.g. GbE e SCI); • Java Fast Sockets: compatível com Java Sockets. Motivação • Clusters de alto desempenho precisam de uma interconexão eficiente; • Crescente interesse na utilização de Java para high-performance computing; • O desempenho de uma aplicação paralela é diretamente influenciado pela sobrecarga da comunicação; • Java não suporta protocolos de comunicação de alto desempenho (e.g. SCI e Myrinet). Estado-da-arte • Sockets-MX/Sockets-GM: – Implementação de sockets de baixa latência para Myrinet; – Não usa pilha TCP/IP: comunicação mais eficiente que emulação de TCP/IP sobre Myrinet; – Dois modelos de comunicação: • Zero-copy: high badwidth; • One-copy: low latency. Estado-da-arte • SCISOCKETS – Implementação socket sobre interface SISCI e GENIF; – SISCI: • Interface user level para SCI; • Implementa mecanismos de compartilhamento de memória e transferência de dados entre eles; – GENIF: • Interface kernel level para SCI. Objetivos • Criação de uma interface de alto nível para comunicação em clusters de alto desempenho: – SCI; – GbE; JFS • Java Fast Sockets (JFS): – Java-related: • • • • Portabilidade X desempenho; Facilidades de Java NIO; Camada de comunicação leve; Transparência. – Native-related: • • • • Utilização de métodos nativos para ganho de desempenho; Interação entre código Java e código nativo; Escolha entre User Level ou Kernel Level. Etc JFS • Se houver protocolo nativo ele irá assumir a conexão; • Caso contrário, será usada implementação Java socket; JFS • Utilização é feita substituindo a implementação padrão por JFS; – Transparente ao usuário: JFS • Facilidades de Java NIO: – Solução Java é baseada em Java NIO SocketChannels e direct byte buffers; – Solução nativa é baseada em uma extensão de I/O Stream do pacote java.io, que irá tratar os direct byte buffers através de métodos nativos; Arquitetura do JFS • Integração do protocolo nativo no JFS Resultados • Ambiente de teste: – Dois processadores Xeon (dual-core) conectados através de SCI e GbE; – S.O.: Linux Centos 4.2 com kernel 2.6.9 e compiladores gcc 3.4.4 e Sun JDK 1.5.0_05; – Benchmark utilizando NetPIPE (Network Protocol Independent Performance Evaluator); Avaliação • Abordagem Java para comunicação de alto desempenho; – Relativamente relevante; • A escrita do artigo é bastante confusa; – A qualidade de escrita do texto deixa a desejar; – Problemas com citações; • Os resultados obtidos são questionáveis e obtidos apenas sobre SCI e GbE, sendo este último muito similar ao Java Sockets convencional. Notas • a) motivação e estado-da-arte: 3 • b) problema a resolver e modelo: 4 • c) Protótipo, resultados e comparações com trabalhos relacionados: 2 • d) Redação e formatação: 2