14.04.2013 Views

JCGrid - Java Grid Computing - Univates

JCGrid - Java Grid Computing - Univates

JCGrid - Java Grid Computing - Univates

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Univates</strong><br />

Programação Paralela e Distribuída<br />

Maglan Cristiano Diemer<br />

<strong>JC<strong>Grid</strong></strong> - <strong>Java</strong> <strong>Grid</strong> <strong>Computing</strong><br />

Eduardo Diersmann<br />

Maurício Postal<br />

Michael Marques<br />

Vagner Furlanetto


Sobre o Jc<strong>Grid</strong><br />

● Ferramenta de grid computacional.<br />

● Ser de fácil utilização.<br />

● Requer apenas o ambiente JAVA.<br />

● Não requer configuração específica de sistema operacional.<br />

● Não necessita de sistema de arquivos compartilhados, como<br />

NFS, samba, etc...<br />

● Permite dividir o processamento entre diversos estações de<br />

trabalho.<br />

● Arquivos são transferidos pela ferramenta.


Descrição:<br />

Há três tipos de nodos no Jc<strong>Grid</strong>:<br />

● Server<br />

● Worker<br />

● Client<br />

O Client e todos os Workers conectam-se ao server, utilizando<br />

sockets TCP/IP. O client conecta-se ao server, por padrão, pela<br />

porta 10101, já os workers conectam-se, por padrão, pela porta<br />

10102.


Descrição<br />

Server<br />

Possui apenas um server, que recebe pedidos de trabalho do<br />

Client e passa esses pedidos para os workers, após isso ele<br />

recebe os resultados obtidos pelo workers e os retorna ao<br />

client. Cada arquivo que ele recebe do client ele armazena<br />

numa cache local e envia para os workers quando for<br />

requisitado, evitando assim o envio de arquivos duplicados.


Descrição<br />

Workers<br />

Pode-se ter quantos workers desejar, e pode-se rodar vários<br />

em uma mesma máquina. Ele realiza o trabalho requisitado<br />

pelo server e envia de volta o resultado.<br />

Client<br />

Pode-se ter quantos client desejar, eles dividem os trabalhos<br />

em várias requisições e depois coletam o resultado obtido<br />

dessas requisições.


Descrição


Descrição


Licença e Versão<br />

● Licença LGPL<br />

● Release 0.05 (2004/07/06)


Onde conseguir<br />

● http://sourceforge.net/projects/jcgrid/files/


Requisitos<br />

● <strong>Java</strong> Runtime 1.4.2 (ou superior)<br />

● binários: - jcgrid-server.tgz<br />

- jcgrid-worker.tgz<br />

- jcgrid-client.tgz<br />

● Para rodar implementação exemplo com POVRAY é<br />

necessário ter instalado a versão 3.6 (ou superior) do mesmo.


Tutorial: jc<strong>Grid</strong> com povray<br />

●Instalação e configuração;<br />

● povray e java;<br />

● Server;<br />

● Worker;<br />

● Client;<br />

●Demonstração;<br />

● Renderização de imagem com povray.


Tutorial: jc<strong>Grid</strong> com povray<br />

●Ubuntu 9.04;<br />

● apt-get install povray<br />

●<strong>Java</strong>;<br />

● apt-get install sun-java6-jdk (jre)<br />

● update-java-alternatives --list


Tutorial: jc<strong>Grid</strong> com povray : SERVER<br />

Descompactar arquivo: tar zxvf jcgrid-server-0.05.tgz<br />

Entrar no diretório: cd jcgrid-server/<br />

Configurar parâmetros: vim povray-server-go.sh<br />

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16


Tutorial: jc<strong>Grid</strong> com povray : SERVER<br />

Parâmetros:<br />

-a set server admin. communication port<br />

-d set working directory<br />

-e enable secure connection<br />

-k set server woker communication port<br />

-p set server client communication port<br />

-s set server address<br />

-w set server password<br />

-z enable compressed connection<br />

Rodar o servidor: sh povray-server-go.sh


Tutorial: jc<strong>Grid</strong> com povray : WORKER<br />

Descompactar arquivo: tar zxvf jcgrid-worker-0.05.tgz<br />

Entrar no diretório: cd jcgrid-worker/<br />

Configurar parâmetros: vim povray-worker-go.sh<br />

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16<br />

export JCGRID_SERVER_NAME=10.3.12.20<br />

export JCGRID_WORKER_NAME=worker04<br />

export JCGRID_WORKER_CPU=1


Tutorial: jc<strong>Grid</strong> com povray : WORKER<br />

Parâmetros:<br />

-a set server admin. communication port<br />

-c set the number of workers to run<br />

-d set working directory<br />

-e enable secure connection<br />

-k set server woker communication port<br />

-n set server session name<br />

-p set server client communication port<br />

-s set server address<br />

-v Execute pvengine.exe instead of povray command<br />

-w set server password<br />

-z enable compressed connection<br />

Rodar o worker: sh povray-worker-go.sh


Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />

Descompactar arquivo: tar zxvf jcgrid-client-0.05.tgz<br />

Entrar no diretório: cd jcgrid-client/<br />

Configurar parâmetros: vim povray-client-go.sh<br />

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16<br />

export JCGRID_SERVER_NAME=10.3.12.20<br />

export JCGRID_CLIENT_NAME=cliente_1


Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />

Parâmetros:<br />

-a set server admin. communication port<br />

-b set the povray animation start frame<br />

-d set working directory<br />

-e enable secure connection<br />

-f set the povray ini file<br />

-g set the povray image fragment size<br />

-h set the povray animation end frame<br />

-k set server woker communication port<br />

-n set server session name


Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />

...continua Parâmetros:<br />

-o set the povray output file<br />

-p set server client communication port<br />

-r disable rendering window<br />

-s set server address<br />

-t set the povray output file format [i.e. png, ppm, jpg, etc.]<br />

-w set server password<br />

-x set the povray output file width<br />

-y set the povray output file height<br />

-z enable compressed connection


Tutorial: jc<strong>Grid</strong> com povray : RENDERIZAR<br />

Renderizar um arquivo de imagem :<br />

sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />

Complemento do nome do cliente: cornell<br />

Diretório de parâmetros do POVRAY : demos/povray/cornell<br />

Altura: 320<br />

Largura: 240<br />

Tamanho do fragmento: 64


Tutorial: jc<strong>Grid</strong> com povray : RENDERIZAR<br />

Renderizar um arquivo uma animação :<br />

sh povray-client-go.sh spiral demos/povray/anim-spiral 320 240 320 -b 1 -h 64<br />

Complemento do nome do cliente: spiral<br />

Diretório de parâmetros do POVRAY : demos/povray/anim-spiral<br />

Altura: 320<br />

Largura: 240<br />

Tamanho do fragmento: 320<br />

Frame inicial: 1<br />

Frame final: 64


Tutorial: povray : DEMONSTRAÇÃO<br />

Demonstração 1<br />

Linha de Comando Client:<br />

sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />

Estrutura<br />

●Servers: 1<br />

●Workers: 2<br />

●Clients: 1<br />

Tempo D1:_______<br />

CLIENT<br />

10.3.12.11<br />

SERVER<br />

10.3.12.11<br />

WORKER<br />

10.3.12.11<br />

WORKER<br />

10.3.12.17


Tutorial: povray : DEMONSTRAÇÃO<br />

Demonstração 2<br />

Linha de Comando Client:<br />

sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />

Estrutura<br />

●Servers: 1<br />

●Workers: 5<br />

●Clients: 1<br />

Tempo D1:_______<br />

Tempo D2:_______<br />

CLIENT<br />

10.3.12.11<br />

SERVER<br />

10.3.12.11<br />

WORKER<br />

10.3.12.17<br />

WORKER<br />

10.3.12.18 10.3.12.11<br />

WORKER<br />

10.3.12.19<br />

WORKER<br />

10.3.12.20<br />

WORKER<br />

10.3.12.21


Resultados povray<br />

Ubuntu 9.04<br />

Intel Pentium 4 CPU 2,66GHz<br />

1GB memória<br />

● 1 máquina - 1m22s<br />

● 2 máquinas - 49s<br />

● 3 máquinas - 33s<br />

● 4 máquinas - 29s<br />

Imagem 800x600 px 128 fragmentos


Outras aplicações<br />

● Mandel<strong>Grid</strong><br />

● Implementação do <strong>JC<strong>Grid</strong></strong> na plataforma Android<br />

http://griddroid.wordpress.com/


Problemas<br />

● Não há muita documentação no site do projeto.<br />

● O único exemplos que ajudam a entender a utilização da<br />

ferramenta são os três exemplos incluídos.


TODO<br />

● Implementar espaços de tuplas *<br />

● Implementar “worker affinity” **<br />

● Implementar suporte à múltiplos servidores<br />

* Um espaço de tuplas tem como função criar uma abstração de memória compartilhada<br />

sobre um sistema distribuído.<br />

** Affinity é uma flag que diz ao kernel em qual CPU pode rodar o código de determinado<br />

processo.


Finalizando.....<br />

PERGUNTAS?


Finalizando.....<br />

OBRIGADO!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!