Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Marlia, 2013
2
CENTRO UNIVERSITRIO EURPIDES DE MARLIA
FUNDAO DE ENSINO EURPIDES SOARES DA ROCHA
Monografia
apresentada
ao
Centro Universitrio Eurpides de
Marlia como parte dos requisitos
necessrios para a obteno do
grau de Bacharel em Cincia da
Computao.
Orientador: Prof. Mauricio Duarte
Marlia, 2013
AGRADECIMENTOS
Todo agradecimento vai para as pessoas que de alguma forma, direta ou
indiretamente, contriburam para que eu chegasse a este ponto de minha vida.
Os obstculos que so colocados parecem que at de propsito, fazem com que a
nossa vitria se torne ainda mais grandiosa. A realizao vem com trabalho, dedicao e
pensamento positivo. Sempre h um caminho quando se tem um obstculo, e este caminho s
vezes pode at se tornar um atalho.
Agradeo primeiramente a Deus, por ter me conduzido na realizao deste
objetivo, por me dar a motivao e vontade de concluir este ciclo, permitindo que chegasse
at aqui, e pela mo colocada sobre mim para que todas as dificuldades fossem superadas.
Agradeo a minha famlia, meu pai Moacir, minha me Rosngela, e meu irmo
Joo Pedro, pois sempre acreditaram que chegaria at aqui, e me deram a oportunidade para
uma formao profissional. A colaborao que tiveram at mesmo em gestos simples nos
infinitos dias desses quatro anos tambm merece um agradecimento especial.
Agradeo a meu orientador, professor Mauricio Duarte, pela ateno e prontido
em todos os momentos, principalmente nos que estive meio perdido.
Agradeo ao professor Ricardo Jos Sabatine, pela colaborao e conselhos dados
ao final e inicio de suas aulas ao longo do desenvolvimento deste projeto.
Agradeo aos meus amigos, que estiveram comigo nesta mesma caminhada, e
atravs dos conselhos e palavras de motivao trocadas, tambm so responsveis para que
chegasse at aqui.
Muito Obrigado a todos!
SUMRIO
INTRODUO ........................................................................................................................ 13
OBJETIVOS ......................................................................................................................... 14
ORGANIZAO DO TRABALHO ................................................................................... 14
1. SISTEMAS DISTRIBUDOS .............................................................................................. 16
1.1. Middleware .................................................................................................................... 16
1.2. Objetivos de um Sistema Distribudo ............................................................................ 17
1.3. Sistemas de Computao Distribudos .......................................................................... 20
1.3.1. Clusters ................................................................................................................... 21
1.3.2. Tipos de Clusters .................................................................................................... 23
1.4. Sistemas Distribudos Baseados em Objetos. ................................................................ 25
2. COMPUTAO PARALELA ............................................................................................. 26
2.1. Taxonomias de Arquiteturas Paralelas ........................................................................... 26
2.2. Computao Paralela Distribuda .................................................................................. 28
3. MECANISMOS DE COMUNICAO REMOTA E AMBIENTES DE TROCA DE
MENSAGENS .......................................................................................................................... 30
3.1. Sockets ........................................................................................................................... 30
3.2. Message Passing Interface (MPI) .................................................................................. 31
3.4. RMI Java ....................................................................................................................... 34
4. IMPLEMENTAO DO ALGORITMO ............................................................................ 38
4.1. Fatorao de nmeros inteiros ....................................................................................... 38
4.1.1. Mtodo de Fermat ................................................................................................... 38
4.2. Criptografia RSA ........................................................................................................... 39
4.3. Desenvolvimento do Algoritmo.................................................................................... 40
4.3.1. Algoritmo Sequencial ............................................................................................. 41
4.3.2. Algoritmo Paralelo Distribudo .............................................................................. 42
4.4. Execuo da aplicao ................................................................................................... 52
4.4.1. Execuo Sequencial .............................................................................................. 52
4.4.2. Execuo Paralela Distribuda ................................................................................ 52
5. TESTES E RESULTADOS .................................................................................................. 55
5.1. Speedup e Eficincia ..................................................................................................... 55
5.2. Cenrios de Teste ........................................................................................................... 56
5.2.1. Cenrio 01 .............................................................................................................. 57
5.2.2. Cenrio 02 .............................................................................................................. 58
5.2.3. Cenrio 03 .............................................................................................................. 59
LISTA DE FIGURAS
Figura 1 Sistema distribudo organizado como middleware (TANENBAUM, 2007).........17
Figura 2 Exemplo genrico de um cluster (TOULOUEI, 2010)...........................................22
Figura 3 Classificao das arquiteturas paralelas segundo Taxonomia de Tanenbaum
(SAITO, 2007)..........................................................................................................................27
Figura 4 Sistema computacional paralelo distribudo (SAITO, 2007)..................................29
Figura 5 Sockets (DA SILVA; FRANCO; AVELINO, 2006)................................................31
Figura 6 Modelo de execuo do MPI (PITANGA, 2008)....................................................33
Figura 7 Camadas do Middleware (COLOURIS, 2007)........................................................35
Figura 8 Organizao dos elementos de um sistema distribudo usando Java RMI
(PEREIRA, 2003......................................................................................................................36
Figura 9 Trecho do cdigo sequencial onde so realizados os clculos para se chegar as
fatores........................................................................................................................................41
Figura 10 Organizao dos componentes da aplicao e seus respectivos parmetros.......42
Figura 11 Mtodo de diviso do algoritmo sequencial..........................................................43
Figura 12 Diviso dos intervalos para os escravos ...............................................................45
Figura 13 Trecho do cdigo que faz a chamada das threads ................................................47
Figura 14 Construtor da thread..............................................................................................48
Figura 15 Trecho do cdigo onde realizado a invocao ao mtodo remoto....................48
Figura 16 Trecho do cdigo onde o objeto remoto registrado no RMIRegistry ...............49
Figura 17 Interface com a assinatura de seu mtodo ............................................................50
Figura 18 Trecho do cdigo onde so realizados os clculos para se chegar as fatores .....51
Figura 19 Exemplo de diviso dos intervalos onde o nmero de iteraes sempre o
mesmo.......................................................................................................................................62
Figura 20 Exemplo de diviso dos intervalos onde o nmero de iteraes modifica com a
adio de escravos....................................................................................................................68
LISTA DE TABELAS
Tabela 1. Modelo de construo dos cenrios...........................................................................53
Tabela 2. Resultados obtidos com testes realizados no cenrio 01...........................................57
Tabela 3. Resultados obtidos com testes realizados no cenrio 02...........................................58
Tabela 4. Resultados obtidos com testes realizados no cenrio 03...........................................60
Tabela 5. Resultados obtidos com testes realizados no cenrio 04...........................................63
Tabela 6. Resultados obtidos com testes realizados no cenrio 05...........................................65
Tabela 7. Resultados obtidos com testes realizados no cenrio 06...........................................66
LISTA DE GRFICOS
Grfico 1. Distribuio das mdias dos tempos de execuo no cenrio 01..........................58
Grfico 2. Distribuio das mdias dos tempos de execuo no cenrio 02..........................59
Grfico 3. Distribuio das mdias dos tempos de execuo no cenrio 02..........................61
Grfico 4. Distribuio das mdias dos tempos de execuo no cenrio 03..........................64
Grfico 5. Distribuio das mdias dos tempos de execuo no cenrio 04..........................65
Grfico 6. Distribuio das mdias dos tempos de execuo no cenrio 05.........................67
10
LISTA DE SIGLAS
AES Advanced Encryption Standard
API Application Programming Interface
DNS Domain Name System
Gbps Gigabits per second
HPC High Performance Computing
IP Internet Protocol
LAN Local Area Network
Mbps Megabits per second
MIMD Multiple Instruction Multiple Data
MISD Multiple Instruction Single Data
MPP Massively Parallel Processing
RMI Remote Method Invocation
RPC Remote Procedure Call
RSA Rivest Shamir Adleman
SIMD Single Instruction Multiple Data
SISD Single Instruction Single Data
TCP Transmission Control Protocol
UDP User Datagram Protocol
URL Uniform Resource Locator
WAN Wide Area Network
11
RESUMO
O objetivo deste trabalho efetuar uma anlise do desempenho de uma aplicao
que implemente um algoritmo com a funo de realizar a fatorao de nmeros inteiros de
maneira paralela distribuda, baseando-se na metodologia de fatorao proposta por Fermat e
utilizando o mecanismo da linguagem Java para programao distribuda, chamado RMI
(Remote Method Invocated). Este algoritmo ser executado de maneira sequencial, e de
maneira paralela, sobre um cluster composto por mquinas de caractersticas homogneas,
utilizando o paradigma mestre-escravo, onde cada escravo participante da execuo ter a
responsabilidade de executar um trecho de cdigo, cooperando com a execuo. A fatorao
de nmeros inteiros um dos mtodos utilizados para que se consiga quebrar uma chave
criptogrfica RSA, possuindo um tempo de execuo extremamente grande na fatorao de
um nmero de um cenrio real de criptografia, por isso muitos estudos so realizados para
encontrar maneiras de obter ganhos no tempo de execuo de uma fatorao, e por estes
motivos esta abordagem foi selecionada para ser aplicada neste projeto. Aps a execuo e
coleta dos resultados obtidos atravs de testes realizados em diferentes cenrios, os resultados
sero analisados, e ento, ser verificado e comparado o desempenho das diversas execues
realizadas, dando a possibilidade de se verificar em quais cenrios houve ganho ou perda de
desempenho, e os fatores que impactam diretamente no desempenho da aplicao.
12
ABSTRACT
The objective of this paper is to analyze the performance of an application that
implements an algorithm to perform the integers factorization in parallel distributed, based on
the methodology factorization proposed by Fermat and using the mechanism of the Java
language to distributed programming, called RMI (Remote Method Invocated). This
algorithm will be executed sequentially and in parallel on a cluster composed of homogeneous
machines characteristics, using the master-slave paradigm, where each participant slave
execution has the responsibility of executing a piece of code, cooperating with the execution.
The factorization of integers is responsible for one of the methods that can break a
cryptographic key RSA, having an execution time extremely large in the number factorization
from a real scenario of encryption, so many studies are conducted to find ways to get gains in
the runtime of a factorization, and for these reasons this approach was selected to be applied
in this project. Upon execution and collection of results obtained from tests carried out in
different scenarios, the results are analyzed, and then will be checked and compared the
performance of several executions, giving the possibility to check on what scenarios there was
a gain or loss of performance and the factors that impacted directly in the application
performance.
13
INTRODUO
Grandes desafios computacionais em vrios segmentos da computao desafiam
os profissionais desta rea que cada vez mais crescente pelo mundo todo. Sempre houve
uma maneira de resolver problemas que estavam na frente de pesquisadores naquele exato
momento ao longo da histria, ou por necessidade daquele contexto histrico, ou pelo simples
prazer de criar algo novo que fosse mudar o dia-a-dia de pessoas normais. Com o passar do
tempo e a evoluo dos computadores, vem aumentando o grau dos desafios que a computao tenta solucionar, e computadores que antes eram suficientes se tornaram incapazes de
ajudar.
A utilizao de supercomputadores uma alternativa para problemas mais complexos, porm o seu alto custo, e sua dificuldade em se aumentar o poder de processamento,
inviabilizam o uso desta soluo. Uma soluo financeiramente vivel e interessante o uso
de sistemas distribudos com processamento paralelo. A combinao entre estas reas da
computao pode ajudar profissionais de vrios segmentos da computao a resolverem certos
problemas de maneira em que o processamento possa ser dividido e distribudo pelas mquinas que formam um sistema, desse modo podem ser diminudos os custos com hardware,
(pois interligar mquinas caseiras em uma rede de alta velocidade mais barato que a aquisio de um supercomputador), e possivelmente obter um melhor desempenho no processamento (DANTAS, 2005).
Para implementao de um sistema distribudo necessrio que haja uma maneira
em que os computadores interligados se comuniquem pela rede. Existem alguns mtodos utilizados na computao como Sockets, RPC, entre outros, porm existe um mtodo para a programao distribuda exclusivo da linguagem Java, o RMI (Remote Method Invocated).
O RMI proporciona todas as ferramentas necessrias para a implementao de um
sistema distribudo utilizando a linguagem Java. Como esta API faz a funo de middleware,
o programador fica despreocupado com diferenas entre tecnologias de rede e de hardware,
por exemplo. A comunicao ento feita pela invocao de mtodos remotos, onde um cliente utiliza os servios disponibilizados pelo servidor, esta comunicao ocorre de maneira
sncrona (PEREIRA, 2003).
O obstculo que impede o paralelismo atravs de invocaes remotas acontece
justamente pela comunicao ser sncrona. Uma maneira de contornar este obstculo com a
utilizao de threads, que podem ser criadas para efetuarem invocaes remotas no mesmo
instante, de modo paralelo.
14
OBJETIVOS
Este trabalho tem como objetivo efetuar uma anlise e verificao no desempenho
e custo/beneficio da paralelizao de um algoritmo para fatorao de nmeros inteiros, atravs
da execuo sequencial e paralela, utilizando o mecanismo RMI da linguagem Java para a
comunicao entre as mquinas em diversos cenrios de execuo, com uma variao na
quantidade de escravos utilizados nos mesmos. O algoritmo ser implementado com base em
um mtodo para fatorao de nmeros inteiros proposto por Fermat. A fatorao de nmeros
inteiros uma maneira para que se consiga quebrar chaves criptogrficas RSA, onde a
fatorao ir resultar no encontro de dois fatores primos, que aplicados a outros
procedimentos possibilitam a quebra da chave criptogrfica.
Porm a fatorao deste nmero demanda um tempo de processamento
extremamente grande e se torna invivel para execuo em uma nica unidade de
processamento. Uma soluo seria a paralelizao deste problema. Com isso, espera-se por
meio deste trabalho, verificar atravs das anlises no desempenho de testes com nmeros
inteiros de menor tamanho, identificar cenrios propcios para a paralelizao e fatores que
causam impacto no desempenho desta aplicao.
ORGANIZAO DO TRABALHO
A organizao do trabalho procurou apresentar primeiramente os conceitos que
envolvem a elaborao desta monografia. No primeiro captulo ser apresentada toda parte
conceitual sobre sistemas distribudos e suas caractersticas principais. Na sequencial, ser
apresentado um captulo contendo informaes que caracterizam toda parte conceitual da
computao paralela. No terceiro captulo, sero abordados mecanismos para comunicao
remota e ambientes de troca de mensagens. Ao final da parte conceitual, sero apresentados
todos os passos para elaborao e implementao do algoritmo sequencial e do algoritmo
15
paralelo distribudo. E por fim, os resultados obtidos com os testes realizados de maneira
sequencial e paralela, seguido das concluses finais sobre o trabalho.
16
1. SISTEMAS DISTRIBUDOS
Um grande avano tecnolgico ocorreu na dcada de 80 com o desenvolvimento
de processadores de alto desempenho e com a inveno de redes de computadores de alta
velocidade, como as LANs e as WANs.
As LANs so redes pequenas de tamanho restrito que podem interligar de
dezenas a centenas de computadores, que pertencem a uma mesma organizao ou a um
mesmo local. Essas redes locais se caracterizavam por possuir um pequeno trfego de
informaes, porm o avano da tecnologia fez com que essas redes suportem um grande
trafego de informaes. (TANENBAUM; STEEN, 2007).
J as redes de longa distncia, as WANs, interligam milhes de computadores por
todo o planeta a uma velocidade que pode chegar a gigabits por segundo. Esse avano
tecnolgico permitiu que sistemas utilizando vrios computadores conectados por uma rede
de alta velocidade fossem facilmente implementados (TANENBAUM; STEEN, 2007).
O principal objetivo que leva a construo de tal sistema a necessidade dos
usurios em compartilhar recursos, sendo que o maior exemplo de um sistema distribudo a
internet, que comunica e compartilha recursos com usurios do mundo todo. A comunicao
entre os componentes de um sistema distribudo para o compartilhamento de recursos feita
atravs da troca de mensagem, e por estes componentes serem independentes um dos outros,
podem haver diferenas em questes como hardware, rede, sistemas operacionais, que
dificultem ou at mesmo impeam a comunicao entre os componentes. Para tratar este
problema utilizamos uma camada de software denominada middleware (COULOURIS;
DOLLIMORE; KINDBERG, 2007).
1.1. Middleware
O cenrio onde vrios computadores independentes esto conectados utilizando
uma rede de alta velocidade, dando ao usurio a impresso de estar utilizando um sistema
nico e coerente, uma das definies propostas para um sistema distribudo. Estes vrios
computadores que fazem parte de um sistema distribudo so componentes independentes, por
isso podem possuir caractersticas diferentes em relao ao hardware, e para que cada
componente desse sistema consiga relevar essas diferenas buscando a troca de informaes
com os outros componentes, necessrio uma camada de software denominada middleware.
17
Esta camada alm de mascarar a heterogeneidade encontrada nos tipos de rede utilizada, no
hardware, e sistema operacional, abstrai e facilita ao programador, questes da implementao
do sistema distribudo (COULOURIS; DOLLIMORE; KINDBERG, 2007). A camada de
middleware est ilustrada na Figura 1.
18
Com a rpida expanso da internet pelo mundo todo, fica cada vez mais
indispensvel que um sistema distribudo seja escalvel. Segundo Neuman, (NEUMAN,
1994) escalabilidade pode ter trs dimenses diferentes no mnimo, a primeira em relao ao
tamanho, a facilidade de se aumentar o nmero de usurios e recursos disponibilizados pelo
sistema, a segunda em relao escalabilidade em termos geogrficos, onde um usurio
pode estar longe geograficamente de um recurso, e a terceira a escalabilidade em relao a
termos administrativos, a facilidade em se gerenciar um sistema que envolva dados e recursos
de muitas organizaes diferentes (COULOURIS; DOLLIMORE; KINDBERG, 2007).
A escalabilidade de um sistema pode enfrentar alguns problemas principais, que
so: servios centralizados, dados centralizados, e algoritmos centralizados. Quando um
servio oferecido implementado por apenas um servidor, e com o passar do tempo o nmero
de usurios e aplicaes que utilizam aquele servio vai aumentando, a capacidade de
armazenamento e de processamento pode ficar limitada, o que impede o crescimento do
sistema, este caso exemplifica o problema com servios centralizados.
Dados centralizados so to problemticos quanto servios centralizados, pois so
utilizados apenas um banco de dados para armazenar as informaes, isto sobrecarregaria os
meios que o acessam.
Para impedir que se tenha uma quantidade excessiva de mensagens no sistema,
algoritmos centralizados devem ser evitados a todo custo, pois o excesso de mensagens
sobrecarregaria a rede. O ideal utilizar algoritmos que sejam descentralizados, e em geral
suas caractersticas so: nenhuma das mquinas que compem o sistema possui todas as
informaes sobre o estado do mesmo, as decises tomadas pelas mquinas so baseadas nas
informaes que as mesmas possuem, a falha de uma mquina no interfere no algoritmo, e
no h dependncia de um relgio global (COULOURIS; DOLLIMORE; KINDBERG,
2007).
Algumas tcnicas podem ser aplicadas para minimizar ou at mesmo resolver
estes problemas de escalabilidade apresentados anteriormente.
Ocultar as latncias de comunicao: quando se tenta evitar ao mximo esperar
por respostas remotas de servios requisitados. A ideia utilizar uma comunicao assncrona
que ao invs do processo do lado do cliente ficar ocioso esperando uma resposta do processo
do lado do servidor, ele executa outra atividade enquanto espera a resposta.
Ocultar as latncias de distribuio consiste em dividir um componente em partes
menores e distribu-lo pelo sistema, como no caso do Sistema de Nomes de Domnio da
Internet (DNS), que distribui o servio por vrios servidores que tratam certa quantidade de
19
20
vezes o melhor a se fazer mostrar o problema ao usurio para que ele decida pelo que fazer.
(TANENBAUM; STEEN, 2007).
21
1.3.1. Clusters
Quando dois ou mais computadores esto interligados, normalmente prximos
geograficamente e esto sendo utilizados para resolver um mesmo problema, temos a
definio de um cluster. Os computadores que formam um cluster so denominados ns,
nodes ou nodos. Cada n do cluster deve passar ao usurio a imagem de que o sistema nico
e coerente, para isso necessrio que haja transparncia do uso da computao paralela
distribuda em questes como: mtodos de sincronizao, comunicao (troca de mensagens),
distribuio de tarefas, e outros fatores que podem afetar a transparncia do sistema.
Lembrando que o conceito de transparncia deve estar quase que totalmente aplicado em um
sistema distribudo, pois nem sempre interessante mascarar a distribuio do sistema para o
usurio (TOULOUEI, 2010).
A Figura 2 apresenta um exemplo genrico de um cluster, formado por alguns ns
denominados ns escravos, que esto interligados por uma rede de alta velocidade e so
responsveis pela execuo das instrues, e um n controlador que fica responsvel pela
distribuio e controle das instrues, alm do monitoramento dos ns escravos.
22
Os clusters esto sendo muito utilizados devido a ser mais vivel financeiramente
que a aquisio de um supercomputador, alm de que um cluster proporciona flexibilidade no
momento em que h a necessidade de se aumentar o poder de processamento, ou ento
diminuir o poder de processamento para problemas menos complexos, a remoo ou adio
de ns ao cluster, implica apenas em um balanceamento da carga de processamento
(DANTAS, 2005).
Os componentes necessrios para que seja possvel projetar um cluster,
basicamente so:
Os computadores que representam os ns, e so responsveis pela parte da
execuo dos algoritmos ou trechos de um algoritmo. Alguns clusters utilizam
um n para ser o responsvel pela distribuio de tarefas aos ns escravos, este
n que distribu tarefas denominado n mestre.
A parte de transmisso de dados fica por conta das redes de internet, que
composta pelo meio fsico, mecanismos de controle de transmisso de dados, e
pela poltica de sincronizao. A tecnologia de rede mais utilizada a Ethernet,
23
sendo composta pela Fast Ethernet e pela Gigabit Ethernet. A Fast Ethernet
muito utilizado em clusters, podendo chegar a uma velocidade que varia entre
10 Mbps a 100 Mbps, j a Gigabit Ethernet pode chegar a 1 Gbps
(BACELLAR, 2010).
Um sistema operacional que tem a funo de controlar o funcionamento do
computador, gerenciando a utilizao e o compartilhamento de todos os
recursos disponveis. O sistema operacional utilizado pode ser especifico para
clusters, ou ento sistemas operacionais comuns para computadores pessoais.
Bibliotecas de passagem de mensagem, para a comunicao entre processos,
estas bibliotecas sero melhores abordadas no capitulo 3.
Aplicaes paralelas, para se utilizarem do servio final que o cluster
disponibiliza, a execuo em paralelo, lembrando que se for extrado ao
mximo o paralelismo das aplicaes, melhor ir ser o desempenho na
execuo.
As inmeras vantagens, dentre elas, a facilidade de se agrupar computadores
pessoais, e a viabilidade financeira, fez com que os clusters tivessem vrias implementaes,
projetadas por empresas, faculdades, dentre outras organizaes. E essas diferentes
implementaes foram separadas e nomeadas de acordo com suas caractersticas semelhantes.
No h uma taxonomia aceita para se classificar ambientes de clusters, porm,
com base em algumas caractersticas presentes nos clusters, possvel efetuar uma
classificao, tomando como base alguns aspectos como: limite geogrfico, utilizao dos
ns, tipo de topologia, aplicaes alvo, e tipos de ns (DANTAS, 2005).
24
25
26
2. COMPUTAO PARALELA
Cada vez mais a computao exige um alto grau de complexidade e desempenho
para resolver problemas que esto em torno de diversas reas de atuao, como: reas cientficas, mdicas, militares, entre outras, e necessitam de um alto poder computacional para fazer
o processamento de algoritmos complexos com grande quantidade de dados. O surgimento da
computao paralela se deu pela necessidade de se obter um desempenho que uma nica unidade de processamento no conseguia obter (DETOMINI, 2010).
Uma definio para computao paralela apresentada pela literatura, por meio de
Quinn (QUINN, 1987) de que a computao paralela o processamento de informaes que
enfatiza a manipulao concorrente dos dados. Esta manipulao pode pertencer a um ou mais
processos que objetivam resolver um nico problema.
O entendimento de computao paralela envolve o conhecimento de trs essncias, so elas: concorrncia, paralelismo e granularidade (SAITO, 2007). A concorrncia a
disputa entre dois ou mais processos para execuo. O paralelismo consiste na diviso de uma
aplicao em partes, onde essas partes so executadas por vrios elementos de processamento
no mesmo intervalo de tempo, buscando o melhor desempenho (DETOMINI, 2010). A granularidade definida pela razo entre o tempo necessrio para o clculo de determinada operao e os custos envolvidos nas trocas de mensagens. A granularidade pode ser fina (conjunto
de instrues simples), mdia ou grossa (conjunto de instrues complexas) (DETOMINI,
2010).
No entanto uma mquina ou um sistema que trabalhe em paralelo no ser de
muita utilidade se no for extrado ao mximo seu poder de processamento, para que isto
ocorra preciso que se tenham tambm excelentes programas paralelos, onde se paralelize
tudo o que possvel, o que se torna uma tarefa complexa para os programadores
(DETOMINI, 2010).
27
Figura 3 Classificao das arquiteturas paralelas segundo Taxonomia de Tanenbaum (SAITO, 2007).
Na classe SISD somente um nico fluxo de instrues age sobre um nico fluxo
de dados. Na classe MISD alguns fluxos de instrues agem sobre apenas um nico fluxo de
dados, onde cada unidade de processamento recebe uma diferente instruo que ser
executada em cima de um mesmo fluxo de dados. As diversas instrues so executadas ao
28
mesmo tempo sobre um mesmo espao de memria, o que torna esta tcnica impraticvel e a
classe sem nenhum aproveitamento prtico. Na classe SIMD apenas um nico fluxo de
instruo executado sobre diversos fluxos de dados, onde uma mesma instruo enviada
aos processadores que esto envolvidos no trabalho e estes executam em paralelo sobre
diferentes fluxos de dados, neste caso necessrio que a memria no esteja implementada
como um nico modulo de memria. Na classe MIMD diversas instruo so executadas
sobre diversos fluxos de instrues, onde um processador recebe um fluxo de instruo
diferente das demais instrues enviadas ao outros processadores envolvidos e estas
instrues so executadas sobre diferentes fluxos de dados para cada unidade de
processamento, assim como no caso da classe SIMD, necessrio que a memria no esteja
implementada como um nico modulo de memria (DE ROSE, 2001).
29
sistema, levando um alto custo de comunicao e sincronizao para sistemas paralelos distribudos (SAITO, 2007).
30
3.1. Sockets
Este mecanismo de mais baixo nvel possibilita a comunicao entre duas
mquinas, onde uma mquina espera por conexes em uma determinada porta.
Quando um processo necessita estabelecer um canal de comunicao com outra
mquina, uma porta local selecionada para formar um canal de comunicao com uma outra
porta de um processo remoto, estas portas so denominadas sockets e possuem a funo de
estabelecer este canal de comunicao, efetuando o envio e recebimento de informaes entre
os dois processos.
31
32
33
34
comunicao mais recente consegue oferecer e por isso vem sendo muito utilizado em
sistemas distribudos atuais.
35
36
Figura 8 Organizao dos elementos de um sistema distribudo usando Java RMI (PEREIRA, 2003).
O stub inicia uma conexo com o servidor em que o objeto remoto est localizado. As informaes que precisam ser enviadas ao servidor so colocadas
no parmetro da invocao e serializadas pelo stub para posterior envio. A
invocao est pronta e ento transmitida ao servidor pela rede.
Logo aps receber a invocao, o skeleton decodifica os parmetros e repassa ao servidor para que este execute o mtodo que ir atender a necessidade
da aplicao cliente.
37
Aps receber, o stub decodifica os parmetros da mensagem de reposta e repassa a aplicao cliente para que esta utilize o resultado do servio utilizado.
38
4. IMPLEMENTAO DO ALGORITMO
Este captulo visa apresentar as caractersticas do projeto desenvolvido, com questes que
envolvem o embasamento da implementao do algoritmo, como: fatorao de nmeros
inteiros e criptografia RSA, a implementao do algoritmo em si, o modo como o algoritmo
foi paralelizado, e os diferentes modos de execuo.
39
( + 1)
( + 1)
2
2002).
40
chave pblica, pois apenas ela conseguir decifrar a mensagem. Um exemplo quando uma
pessoa A deseja enviar uma mensagem para pessoa B, a pessoa A deve utilizar a chave pblica
de B para criptografar a mensagem, e depois de enviada, a pessoa B usa sua chave privada
para decifrar a mensagem. O algoritmo mais utilizado para este tipo de criptografia o RSA
(Rivest Shamir Adleman), que relativamente mais lento que o AES, porm oferece maior
segurana.
O mtodo utilizado pelo RSA para criptografar mensagens a base para o
desenvolvimento deste projeto. Este mtodo utiliza a multiplicao de grandes nmeros
primos como parte do seu processo para criptografar uma mensagem, onde esta multiplicao
ir gerar um nmero inteiro extremamente grande, e para que se consiga quebrar a
criptografia RSA basta encontrar os dois fatores primos a partir do nmero inteiro gerado na
multiplicao dos mesmos. A maior segurana que oferece este mtodo de criptografia em
relao a outros, esta relacionada a dificuldade, em termos de tempo e tecnologia, para se
fatorar um nmero extremamente grande (DETOMINI, 2010).
Para a soluo deste problema, existem alguns mtodos de fatorao de nmeros
inteiros, o mtodo de Fermat assume caractersticas que de certa forma facilitam sua
implementao e a diviso do problema em partes que podem ser paralelizadas, alm de sua
ideia estar baseada em um poderoso mtodo de fatorao de nmeros inteiros, o mtodo do
Crivo quadrtico. Por estes motivos o mtodo de Fermat foi selecionado para ser utilizado na
implementao deste projeto.
41
Figura 9 Trecho do cdigo sequencial onde so realizados os clculos para se chegar as fatores.
42
43
que apresente caractersticas paralelizveis. Aps este trecho ser identificado (representado
pelo retngulo vermelho na Figura 11), feita uma diviso de maneira que as partes geradas
possam ser distribudas pelos servidores, estas partes podem ser caracterizadas por trechos de
cdigos idnticos ou no. Para este projeto, as partes distribudas ente os servidores so
idnticas, e executam as mesmas instrues, recebendo valores distintos para executarem,
onde estes valores so representados por intervalos distintos de nmeros inteiros que cada
servidor ter que executar. Na Figura 11, estes intervalos esto sendo representados pelas
cores verde, roxo e amarelo.
A maneira como funciona a aplicao implementada para este projeto ocorre com
o cliente efetuando invocaes de maneira paralela aos mtodos remotos disponibilizados
pelos servidores, que executam as partes que possuem do algoritmo. Aps as execues terem
ocorrido, o servidor que obteve o resultado transmite a resposta ao cliente para que este possa
mostrar ao usurio o resultado obtido.
Com a utilizao do RMI faz-se necessrio que sejam implementadas interfaces e
outros componentes para que seja possvel sua utilizao, portanto, o lado do cliente, que ser
denominado mestre, ser composto pela classe cliente e por outros componentes, e o lado dos
servidores, que sero denominados escravos, ser composto para cada servidor, pela classe
servidor e por outros componentes necessrios.
A partir destas caractersticas o desenvolvimento do algoritmo paralelo foi
dividido em duas etapas principais. A primeira etapa visa implementao dos componentes
44
que fazem parte do mestre (cliente). Em sequencia, a segunda etapa visa implementao dos
componentes que pertencem ao lado do escravo (servidor).
Inicialmente, ser descrito todos os componentes que pertencem ao lado do
mestre, e depois, todos os componentes que pertencem ao lado dos escravos.
45
46
Esta forma de gerar o xFinal tambm se baseou nos testes preliminares, onde foi
possvel identificar que o valor de xInicial, ao ser incrementado, no ir ultrapassar de
maneira alguma o maior valor que se pode formar com a quantidade de dgitos do nmero n.
Caso o nmero n tenha 7 dgitos por exemplo, o xFinal ser correspondido pelo nmero
9999999, que estar armazenado na ltima posio do vetor.
Com o valor do xFinal definido, j possvel dividir o intervalo entre o xInicial e
o xFinal em quantos outros intervalos for necessrio, de acordo com o nmero de escravos
utilizados na execuo. Os valores que correspondem aos limites dos intervalos so
armazenados dentro do vetor, e aps todos os valores serem definidos e armazenados, a
responsabilidade da classe Cliente passa a ser a de criar a quantidade de threads necessrias.
A definio da quantidade mxima de threads que podem ser criadas pela
aplicao feita de maneira esttica, pois como os testes sero realizados em um nmero fixo
de cenrios, e a quantidade de threads ser igual quantidade de escravos utilizados na
execuo, no h necessidade de uma criao dinmica de threads.
Antes de uma execuo, define-se de maneira manual apenas a quantidade de
escravos utilizados, deixando que a aplicao inicie o nmero correto de threads para o
respectivo cenrio. As seguintes situaes podem ocorrer: a criao de apenas uma thread
quando apenas um escravo for utilizado, duas threads para quando dois escravos forem
utilizados, trs threads para quando trs escravos forem utilizados, quatro threads para quando
quatro escravos forem utilizados, e cinco threads para quando cinco escravos forem
utilizados.
Aps estarem criadas, as threads recebem como parmetro na sua chamada, o
valor de n, duas posies do vetor que correspondem a um intervalo de valores, e o tempo em
que se iniciou a execuo da aplicao, como demonstrado na Figura 13.
47
48
nomes.
No construtor da thread, so recebidos da classe Cliente.java, o nmero a ser
fatorado, um intervalo de nmeros inteiros, e o tempo inicial da execuo. O cdigo do
construtor da thread representado pela Figura 14.
49
50
classe
InterfaceServidorImplementada.java
implementa
interface
51
Figura 18 Trecho do cdigo onde so realizados os clculos para se chegar aos fatores.
52
53
inteiro a ser fatorado. A execuo em cada um dos cenrios leva em considerao outros seis
modos de execuo, so eles: execuo do algoritmo sequencial; execuo do algoritmo
utilizando uma mquina mestre e uma mquina escravo; execuo utilizando uma mquina
mestre e duas mquinas escravos; execuo utilizando uma mquina mestre e trs mquinas
escravos, execuo utilizando uma mquina mestre e quatro mquinas escravos, e uma
execuo utilizando uma mquina mestre e cinco escravos. Cada cenrio realizou os seis
modos de execuo, permitindo que fossem realizadas comparaes entre eles.
Todos os cenrios foram executados em um ambiente distribudo paralelo
controlado, onde o nmero inteiro a ser fatorado ser escolhido e inserido manualmente no
algoritmo antes da execuo de cada cenrio. A escolha do nmero inteiro ser feita utilizando
critrios para que os testes realizados possam mostrar casos onde ocorreu perda de
desempenho e onde ocorreu ganho de desempenho, dando a possibilidade de se explicar cada
caso, e tambm para que o tempo de uma nica execuo seja vivel para realizao de todos
os testes, pois sero realizadas 10 execues para o processamento sequencial e 10 execues
para cada quantidade de escravos utilizados na execuo paralela. Alguns dos critrios
utilizados que interferem diretamente no desempenho so: o tamanho e a distncia dos
fatores, que interferem diretamente no nmero de iteraes que ir ocorrer na execuo.
Sabendo disso, foi utilizado um mesmo modelo para a construo de todos os
cenrios, onde este modelo est sendo representado pela Tabela 1. Nesta figura, a letra X que
vem aps a palavra cenrio, representa o nmero do cenrio, que pode ser 01, 02, 03, 04,
05, 06, e a letra Y representa o nmero inteiro que ser fatorado no cenrio em questo.
Tabela 1 Modelo de construo dos cenrios
A escolha dos dois nmeros primos foi feita de maneira aleatria, observando e
garantindo que a multiplicao dos dois no gere um nmero que tenha acima de treze dgitos,
pois um nmero maior que esta quantidade de dgitos tomaria um tempo ainda maior para que
54
todas as execues dentro de todos os cenrios fossem concludas, sabendo que o tempo e a
infra-estrutura necessria muitas vezes escasso. Porm, com um nmero de treze dgitos
para ser fatorado, j possvel efetuar as anlises e concluses necessrias.
55
5. TESTES E RESULTADOS
Os testes foram todos realizados no laboratrio 01 do Centro Universitrio
Eurpides Soares da Rocha de Marlia UNIVEM. As mquinas utilizadas possuam
configurao homognea, onde executavam o sistema operacional Windows 7 Professional 32
bits, com processador Intel Core 2 Duo - E7500 de 2.94GHz e memria de 4Gbytes. As
mesmas estavam conectadas em uma rede padro ethernet 100Mbits, interligadas atravs da
utilizao de um switch.
A presena da plataforma Java nas mquinas possibilitou a execuo dos testes
que faz uso do mecanismo de comunicao Java RMI para a comunicao distribuda.
O desempenho foi analisado em cima de testes em diferentes tipos de cenrios em
um ambiente paralelo distribudo controlado. Foram necessrios seis cenrios para compor
todos os testes, sendo que a composio de cada um deles ser melhor detalhada nos capitulo
5.3.
Ao trmino da execuo dos testes, foi calculada a mdia dos tempos de execuo
de cada um dos cenrios, o que possibilitou efetuar uma anlise estatstica dos resultados
coletados. Algumas das medidas calculadas foram: desvio padro, speedup e eficincia.
S=
Onde:
S = speedup obtido atravs da razo de Ts e Tp.
Ts = tempo de execuo da aplicao sequencial.
Tp = tempo de execuo da aplicao em paralelo, com p processadores.
(1)
56
E=
(2)
Onde:
E = eficincia obtida atravs da razo entre Sp e p.
Sp = speedup obtido atravs da razo de Ts e Tp.
p = nmero de processadores utilizados.
Estas duas mtricas sero aplicadas utilizando os tempos mdios obtidos atravs
dos testes realizados nos diferentes cenrios de execuo e estaro disponveis nas tabelas
com outras mtricas do respectivo cenrio.
57
5.2.1. Cenrio 01
Neste primeiro cenrio, o nmero a ser fatorado o 2.100.044.300.161, onde seus
fatores so os nmeros primos, 1.500.007 e 1.400.023. A utilizao deste nmero se deu por
causa do tempo de execuo vivel que este apresenta, pelos fatores estarem a uma distncia
relativamente pequena um do outro, e por apresentar resultados interessantes de serem
analisados. Ao ser testado de maneira sequencial e paralela, em um ambiente distribudo, com
os testes da execuo paralela sendo realizados com um, dois, trs, quatro e cinco escravos,
foram obtidos os resultados que esto sendo apresentados pela Tabela 2.
Tabela 2 Resultados obtidos com testes realizados no cenrio 01
Aps observao dos resultados obtidos, foi possvel observar que houve perda de
desempenho em relao s execuo em paralelo com a execuo sequencial. E conforme o
nmero de escravos utilizados nos testes foi aumentando, o tempo de execuo tambm
aumentou. Este fato fica bem caracterizado ao ser analisada a eficincia, que diminui
medida que novos escravos vo sendo adicionados. No Grfico 1, mostrado abaixo, fica bem
visvel a crescente no tempo mdio de execuo conforme o nmero de escravos aumenta.
58
5.2.2. Cenrio 02
Para este segundo cenrio, o nmero escolhido para ser fatorado foi o
1.125.033.750.133, onde seus fatores so os nmeros primos, 1.500.007 e 750.019. Este
nmero foi escolhido, pois possui um tempo de execuo vivel para ser testado nos diversos
cenrios, pelos fatores estarem em uma distancia mdia um do outro, diferentemente da
distncia pequena entre os fatores do primeiro cenrio, e por apresentar resultados
interessantes para serem analisados. Ao ser testado de maneira sequencial e paralela, em um
ambiente distribudo, com os testes da execuo paralela sendo realizados com um, dois, trs,
quatro e cinco escravos, foram obtidos os resultados que esto sendo apresentados pela Tabela
3.
Tabela 3 Resultados obtidos com testes realizados no cenrio 02
59
aconteceu uma situao semelhante a do cenrio 01, onde houve perda de desempenho em
relao s execues em paralelo com a execuo sequencial, e a medida que o nmero de
escravos aumentou, o tempo mdio de execuo aumentou, e a eficincia diminuiu. Neste
cenrio 02, o tempo mdio de todas as execues foi superior ao tempo de execuo obtido
em todas as execues do cenrio 01.
No Grfico 2 mostrado abaixo tambm possvel verificar a piora no desempenho
atravs da crescente que ocorre nas colunas do grfico ao se aumentar o nmero de escravos.
O tempo mdio das execues em comparao com o tempo mdio do cenrio 1 tambm
aumentou.
5.2.3. Cenrio 03
Neste terceiro cenrio, o nmero escolhido para ser fatorado foi o
150.005.200.021, pois possui fatores mais distantes um do outro em relao aos cenrios
anteriores, onde seus fatores so os nmeros primos, 1.500.007 e 100.003, alm de apresentar
um tempo vivel de execuo e resultados interessantes de serem analisados. Ao ser testado
de maneira sequencial e paralela, em um ambiente distribudo, com os testes da execuo
paralela sendo realizados com um, dois, trs, quatro e cinco escravos, foram obtidos os
resultados que esto sendo apresentados pela Tabela 4.
60
61
62
nmero de escravos, pois o mestre ter que efetuar uma invocao a mais a cada escravo
adicionado, aumentando a utilizao da rede para troca de mensagens.
A Figura 19 mostra um exemplo de quando a diviso dos intervalos propicia um
melhor desempenho para execuo sequencial, o exemplo mostrado no faz referncia a
nenhum dos testes realizados anteriormente, mas representa o mesmo que aconteceu em cada
um dos trs primeiros cenrios.
Figura 19 Exemplo de diviso dos intervalos onde o nmero de iteraes sempre o mesmo.
63
a ser fatorado.
5.2.4. Cenrio 04
Aps se verificar e explicar a perda de desempenho obtida nos cenrios 01, 02, e
03, outros testes foram realizados onde foi possvel observar caractersticas diferentes em
relao a estes trs primeiros cenrios.
No quarto cenrio, o nmero escolhido para ser fatorado foi o 2.832.547, onde
seus fatores so os nmeros primos, 10.009 e 283. Este nmero foi escolhido, pois possui um
tempo de execuo vivel para ser testado, e por apresentar resultados interessantes e
diferentes dos resultados dos cenrios anteriores. Ao ser testado de maneira sequencial e
paralela, em um ambiente distribudo, com os testes da execuo paralela sendo realizados
com um, dois, trs, quatro e cinco escravos, foram obtidos os resultados que esto sendo
apresentados pela Tabela 5.
Tabela 5 Resultados obtidos com testes realizados no cenrio 04
64
anteriores. O motivo de isto acontecer ser explicado ao trmino da descrio dos prximos
cenrios.
Abaixo os dados referentes ao tempo mdio das diferentes execues foram
distribudos pelo Grfico 4, facilitando uma melhor interpretao dos resultados deste cenrio
04.
5.2.5. Cenrio 05
No cenrio 05, o nmero escolhido para ser fatorado foi o 905.131.559, onde seus
fatores so os nmeros primos, 100.559 e 9.001. A escolha deste nmero se deu pelo fato dele
possuir um tempo de execuo vivel para ser testado, e por apresentar resultados
interessantes para serem analisados e explicados.
Aps ser realizada a execuo de maneira sequencial e paralela, em um ambiente
distribudo com os testes da execuo paralela sendo realizados com um, dois, trs, quatro e
cinco escravos, foram obtidos os resultados que esto sendo apresentados pela Tabela 6.
65
Aps observao e anlise dos resultados obtidos neste cenrio 05 foi possvel
identificar que na execuo com trs escravos houve o melhor desempenho registrado, com o
speedup e a eficincia assumindo valores extremamente altos, e que aps esta melhora, o
tempo mdio foi aumentando novamente com o aumento dos escravos, porm ainda sim se
manteve inferior ao tempo mdio da execuo sequencial. A semelhana com o cenrio 04
acontece apenas no momento em que h uma melhora no desempenho, que verificada na
utilizao de trs escravos. Neste mesmo momento tambm pode ser verificada uma melhora
considervel na eficincia.
Abaixo os dados referentes ao tempo mdio de execuo foram distribudos pelo
Grfico 5, facilitando uma melhor interpretao dos resultados deste cenrio 05.
66
5.2.6. Cenrio 06
Neste sexto e ltimo cenrio a ser testado, o nmero escolhido para ser fatorado
foi o 16.765.699.193, onde seus fatores so os nmeros primos, 880.043 e 19.051. Este
nmero tambm foi selecionado pelo fato de possuir um tempo de execuo vivel para ser
testado, e por apresentar resultados interessantes para serem analisados. Ao ser testado de
maneira sequencial e paralela, em um ambiente distribudo, com os testes da execuo
paralela sendo realizados com um, dois, trs, quatro e cinco escravos, foram obtidos os
resultados que esto sendo apresentados pela Tabela 7.
67
68
este nmero mudasse de intervalo, podendo estar localizado mais prximo do inicio de um
dos intervalos, diminuindo o nmero de iteraes necessrias e o tempo de processamento.
Diferentemente dos trs primeiros cenrios analisados, estes trs ltimos cenrios obtiveram
um nmero menor de iteraes nas execues com trs ou mais escravos e por este motivo foi
possvel verificar uma melhora no desempenho em relao execuo sequencial.
A Figura 20 mostra um exemplo de quando a diviso dos intervalos propicia um
melhor desempenho para execuo paralela, o exemplo mostrado no faz referncia a nenhum
dos testes realizados, mas representa o mesmo que aconteceu nestes trs ltimos cenrios.
Figura 20 Exemplo de diviso dos intervalos onde o nmero de iteraes modifica com a adio de escravos.
69
no desempenho, o nmero de escravos pode assegurar que quanto maior for sua quantidade,
maior ser a possibilidade de se obter o melhor desempenho dentre todas as execues
posteriores, pois a cada escravo adicionado, menor sero os intervalos.
70
71
Referncias Bibliogrficas
ANTUNES, C. M. Mtodos de Fatorao de Nmeros Inteiros. Porto Alegre, 2002.
BACELLAR H. V. Cluster: Computao de Alto Desempenho. Instituto de Computao,
2010.
BARNAB, V. C. Uma introduo aos mtodos de fatorao de inteiros de Fermat e
Pollard. Dourados, Universidade Estadual do Mato Grosso do Sul, 2009.
BERNARDI, E. F. F. Utilizao de programao paralela e distribuda para quebra de
chaves de criptografia RSA. Porto Alegre: PUCRS, 2006.
COULOURIS G; DOLLIMORE J; KINDBERG T. Sistemas Distribudos.4 ed., So
Paulo: Artmed, 2007.
DANTAS, M. A. R. Computao Distribuda de Alto Desempenho: Redes, Clusters e
Grids Computacionais. Editora Axcel, 2005.
DA SILVA, D; FRANCO, C. E. C; AVELINO, F. D,Implementao de Sockets e Threads
no desenvolvimento de sistemas cliente /Servidor: Um estudo em VB.NET. Resende,
Associao Educacional Dom Bosco, 2006
DE ROSE, C. A. F. Arquiteturas Paralelas. Pontifcia Universidade Catlica do Rio
Grande do Sul, 2001.
DETOMINI, R. C. Explorao de Paralelismo em Criptografia utilizando GPUs. S. J.
R. Preto, Universidade Julio de Mesquita Filho, 2010.
JNIOR, E.P. F. Construindo Supercomputadores com Linux: Cluster Beowulf. Centro Federal de Educao Tecnolgica de Gois, Goinia, 2005.
NODA, A. K. Mecanismo de Invocao Remota de Mtodos em Mquinas Virtuais.
Pontifcia Universidade Catlica do Paran, 2005.
PEREIRA, F. M. Q. Arcademis: Um Arcabouo para Construo de Sistemas de Objetos Distribudos em Java, Belo Horizonte: UFMG Dezembro, 2003.
PITANGA, M. Construindo Supercomputadores com Linux. 3 ed, Rio de Janeiro, Brasport, 2008.
QUINN, M. J. Designing Efficient Algorithms for Parallel Computers. McGraw-Hill,
Inc., Nova Iorque, NY, EUA, 1987.
SABATINE, R. J. Implementao de Algoritmo Paralelo para Apoiar o Processamento
de Imagens utilizando JPVM. Marlia: Univem, 2007, pp. 23-43.
72
SAITO, P. T. M. Otimizao do Processamento de Imagens Mdicas Utilizando a Computao Paralela. Marlia: Univem, 2007, pp. 22-62.
SARAMAGO, J. A. F. G. Um Middleware para Computao Paralela em Clusters de
Multicores. Faculdade de Cincias e Tecnologia, Universidade Nova de Lisboa, 2012.
TANENBAUM, A. S; STEEN M. V. Sistemas Distribudos. 2 ed., Rio de Janeiro: Prentice-Hall, 2007.
TOLOUEI, D. V. L. Clusters Computacionais de Alto Desempenho. Vila Velha, 2010.