DESENVOLVIDO EM UM AMBIENTE CLUSTER PARA UM AMBIENTE GRID Monografia apresentada UNOCHAPEC como parte dos requisitos para obteno do grau de ac!are" em Ci#ncia da Computao$ Orientador% E"ton &u's Minetto C!apec( ) *C+ ,un!o de -../ ii ESTUDO DA MIGRAO DE UM APLICATIVO DESENVOLVIDO EM UM AMBIENTE CLUSTER PARA UM AMBIENTE GRID AREANDSON CLEITON COSSA Esta Monografia foi 0u"gada para obteno do t'tu"o de ac!are" em Ci#ncia da Computao+ na 1rea de redes de computadores e apro2ada pe"o curso de Ci#ncia da Computao$ O34EN5A6O3% Prof$ E"ton &u's Minetto COO36ENA6O3A 6O CU3*O% Prof$ M7nica 5issiani 6e 5oni Pereira BANCA EXAMINADORA P3E*46EN5E% Prof$ E"ton &u's Minetto Prof$ &uciano Car"os 8rosi Prof$ A"mir Antunes AGRADECIMENTOS Agradeo primeiramente a 6eus que me concedeu fora e sa9de para construo deste traba"!o+ ao meu pai A"tair+ min!a me Mari+ ao meu irmo :abrie" e min!a namorada *usiana os quais sempre me incenti2aram+ me a0udaram e esta2am do meu "ado nas !oras que eu mais precisei ao decorrer destes quase cinco anos$ 5amb;m agradeo ao meu orientador+ professor e amigo E"ton &u's Minetto pe"a presena constante no desen2o"2imento do presente traba"!o a";m das significati2as contribui<es que muito me ensinaram durante o desen2o"2imento deste$ Por fim gostaria de agradecer a todos meus co"egas da uni2ersidade+ em especia" a 6iogo+ 6anie"+ A"ine e &eandro+ os quais a";m de amigos so tamb;m considerados por mim parte de min!a fam'"ia+ pois sem 2oc#s ta"2e= no c!egaria at; aqui$ :ostaria tamb;m agradecer aos meus amigos Maicon+ ,eferson+ :e"son+ Pau"o e outros que fa=iam parte da ga"era do 7nibus$ Com certe=a sem 2oc#s as 2iagens que fa='amos todos os dias facu"dade ficariam mais "ongas$ SUMRIO Lista de Figuas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"iii Lista de Ta#e$as!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!i% LISTA DE &UADROS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% Lista de SIGLAS E A#e"iatuas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%i RESUMO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%iii A#sta't!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%i" ( i)t*du+,*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(- (!( ORGANI.AO DO TRABAL/O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(0 1 Siste2as disti#u3d*s e 4aa$e$*s!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(5 6 C*24uta+,* e2 C$uste!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1( 6!( Va)tage)s e 7eas de a4$i'a+,* da '*24uta+,* e2 '$uste!!!!!!!!!!!!!!!!!!!!!!!!!!11 6!1 Ti4*s de '$ustes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 16 >$-$? A"ta disponibi"idade @HAA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -> >$-$- a"anceamento de carga @&OA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -B >$-$> Combinao HA e a"anceamento de carga$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$-C >$-$B Processamento para"e"o @A"ta Performance Computaciona" ) HPCA$$$$$$$$$$$$$$$$$$$$$$$$$$$$-/ >$-$B$? eoDu"f $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -E 8 C*24uta+,* e2 Gids 9Gid C*24uti)g:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6( 8!( M*de$*s de gids !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 68 B$?$? :rids computacionais$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >B B$?$- :rids de arma=enamento ou 6ata :rids $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$>C B$?$> :rids de comunicao ou NetDorF :rids$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$>C 8!1 COMPARAO ENTRE GRIDS E CLUSTERS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!60 - Fea2e)tas de dese)"*$"i2e)t* 9T**$;its:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6< -!( G$*#us!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6< C$?$? Componentes do :"obus 5oo"Fit$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >E C$?$- :"obus 5oo"Fit > @:5>A$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ B. C$?$> :"obus 5oo"Fit B @:5BA$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ B- -!1 Legi*)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 81 -!6 Ougid!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 86 0 BIBLIOTECAS PARA TROCAS DE MENSAGENS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!80 0!( Paa$$e$ "itua$ 2a'=i)e 9PVM:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!80 0!1 Message Passi)g I)te>a'e 9MPI: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8< /$-$? MP4CH$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ C? /$-$- MP4CH):-$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ C- < ESTUDOS DE CASO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-6 <!( I)sta$a+,* d* G$*#us T**$;it!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-8 E$?$? Criao de certifica<es e configura<es de segurana$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$CC E$?$- 4nicia"i=ao e *ubmisso de 0obs$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$C/ <!1 Estud* de 'as* (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -< <!6 Estud* de 'as* 1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0? <!8 Estud* de 'as* 6!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 0( 5 '*)sidea+*es >i)ais!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00 2i @ REFERANCIAS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!05 (? a)e%*s!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<( (?!( A)e%* I B C*dig* >*)te d* 4*ga2a de 2u$ti4$i'a+,* de 2atiCes uti$iCa)d* 24i!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! <( (?!1 a)e%* II D '*dig* >*)te d* 4*ga2a de 2u$ti4$i'a+,* de 2atiCes se2 uti$iCa 4aa$e$is2*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! << 2ii LISTA DE FIGURAS Figua (! E%e24$* de u2 '$uste de '*24utad*es!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1( Figua 1! C$uste de A$ta dis4*)i#i$idade!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!18 Figua 6! C$uste A$ta Dis4*)i#i$idade e Ba$a)'ea2e)t* de Caga 9/AELO: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!10 Figua 8! C$uste Be*Fu$>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!15 Figua -! Re'us*s '*24uta'i*)ais i)de4e)de)tes e =ete*gG)e*s!!!!!!!!!!66 Figua 0! C*24*)e)tes d* g$*#us T**$;it!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!65 Figua <! Gid Se"i'es!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8( Figua 5! Estutua de u2 Gid OuGid!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8- LISTA DE TABELAS Ta#e$a (! Ti4*s #7si'*s de dad*s d* MPI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!85 Ta#e$a 1! Fu)+Hes #7si'as d* MPI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8@ LISTA DE &UADROS &uad* (! E%e24$* de u2 4*ga2a uti$iCa)d* MPI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-? &uad* 1! RSL 4aa a su#2iss,* d* 4*ga2a a* gid!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-@ &uad* 6! Pseud*'Idig* d* 4*ga2a Pai *u Se"id*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!06 &uad* 8! Pseud*'Idig* d* 4*ga2a Fi$=*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!08 &uad* -! CIdig* >*)te 4*ga2a de 2u$ti4$i'a+,* de 2atiCes '*2 MPI!!<0 &uad* 0! CIdig* >*)te 4*ga2a de 2u$ti4$i'a+,* de 2atiCes se2 4aa$e$is2*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<@ LISTA DE SIGLAS E ABREVIATURAS O5 Bag of Tasks CPU Centra" Processing Unit 85P File Transfer Protocol ::8 Global Grid Forum :44* Grid Index Information Service :3AM Grid Resource Allocation Manager :34* Grid Resource Information Service :*H Grid Service Handle :*4 Grid Securit Infrastructure :*3 Grid Service Reference :5 Globus Toolkit HA Hig! Availabilit HPC Hig! Performance "om#uting H55P H#ertext Transfer Protocol &6AP $ig!t%eig!t &irector Access Protocol &O $oad Balancing &OA $egion 'b(ect Address &O46 $egion 'b(ect Identifier M6* Meta "om#uting &irector Service M4M6 Multi#le Instruction Multi#le &ata M4*6 Multi#le Instruction Single &ata MPM6 Multi#le Program Multi#le &ata MMG Multimedia )xtension MP4 Message Passing Interface O:*A '#en Grid Services Arc!itecture O:*4 '#en Grid Services Infrastructure PC Personal "om#uter PHM Parallel *irtual Mac!ine Io* +ualit of Service 3*& Globus Resource S#ecification $anguage *6E Service &ata )lements *4M6 Single Instruction Multi#le &ata *4*6 Single Instruction Single &ata *PM6 Sim#le Program Multi#le &ata *MP Smmetric Multi#rocessing *OAP Sim#le 'b(ect Access Protocol **& Secure Socket $aer U34 ,niform Resource Identifier U3& ,niform Resource $ocator J>C -orld -ide -eb "onsortium J*6& -eb Services &escri#tion $anguage GM& )xtensible Marku# $anguage RESUMO A uti"i=ao da programao distribu'da eKou para"e"a ; um paradigma que pode ser uti"i=ado como a"ternati2a a empresas ou institui<es que necessitam cada 2e= mais de poder computaciona"$ A "imitao f'sica imposta aos computadores+ que apesar de terem seu poder computaciona" em crescente eLpanso tendem a se estabi"i=ar+ ou a in2iabi"idade da aquisio de um supercomputador+ nos "e2am a considerar a uti"i=ao de 21rias esta<es de traba"!o sob a forma de um ambiente de processamento distribu'do+ como um c"uster ou um grid$ Este traba"!o rea"i=a um estudo dos ambientes c"usters e grids+ definindo)os e eLpondo suas principais caracter'sticas$ Hisa)se tamb;m fa=er um estudo da possibi"idade de migrao de ap"icati2os que outrora foram desen2o"2idos especificamente para ambientes c"usters para um ambiente grid$ Esse estudo ser1 rea"i=ado com base primeiramente nos conceitos aqui descritos+ sobre as principais tecno"ogias en2o"2idas na programao para"e"a e distribu'da$ Atra2;s de estudos de casos se tentar1 rea"i=ar essa migrao para a 2erificao de sua 2iabi"idade$ Estuda)se tamb;m a possibi"idade de se reescre2er um ap"icati2o para"e"o e distribu'do em um ambiente grid uti"i=ando suas bib"iotecas nati2as$ ABSTRACT 5!e use of t!e distributed andKor para""e" programming is a paradigm t!at can be used as a"ternati2e t!e companies or institutions t!at more t!an need eac! time to be ab"e computationa"$ 5!e p!Msica" "imitation imposed t!e computers+ t!at a"t!oug! to !a2e its computationa" poDer in increasing eLpansion t!eM tend to stabi"i=e+ or t!e unfeasibi"itM of t!e acquisition of a supercomputer+ in taFe t!em to consider t!e use of some stations of DorF under t!e form of an en2ironment of distributed processing+ as c"uster or one grid$ 5!is DorF focuses t!e en2ironment studM c"usters and grids+ defining t!em and disp"aMing its main c!aracteristics$ Je a"so aim at to maFe a studM of t!e possibi"itM of migration of app"icatorM t!at "ong ago t!eM !ad been de2e"oped specifica""M for en2ironments c"usters for an en2ironment grid$ 5!is studM it Das carried t!roug! Dit! base first in t!e !ere described concepts+ on t!e main in2o"2ed tec!no"ogies in t!e para""e" and distributed programming$ 5!roug! studies of cases De Di"" trM to carrM t!roug! suc! migration for t!e 2erification of t!e 2iabi"itM of suc!$ Je Di"" a"so studM t!e possibi"itM of if reDriting a app"icatorM para""e" and distributed in an en2ironment grid using its nati2e "ibraries$ ( INTRODUO Nos 9"timos tempos+ !ou2e aumento consider12e" da quantidade de dados produ=idos ou arma=enados e conseqNentemente um aumento de processamento$ Empresas+ entidades e organi=a<es esto buscando sa'das para essa situao$ O a"to custo da aquisio e manuteno de ser2idores eficientes forou as empresas a uti"i=arem sistemas de processamento distribu'dos eKou para"e"os como uma a"ternati2a 2i12e" para ta"$ Os principais sistemas uti"i=ados para esta tarefa so sistemas baseados em C"usters e :rids computacionais$ A uti"i=ao de um sistema distribu'do eKou para"e"o gera"mente ; a me"!or sa'da para quem dese0a aumentar a quantidade e 2e"ocidade de processamento sem a aquisio de no2os equipamentos$ Mas ento nos deparamos com uma du2ida$ Iua" a me"!or tecno"ogia ou a que me"!or se encaiLa as necessidades da empresaO Pensando nisso+ e atra2;s de uma bre2e pesquisa podemos notar que eListem poucos traba"!os que fa=em uma comparao para eLpor quais as diferenas+ 2antagens e des2antagens de se usar sistemas em um ambiente c"uster ou em um baseado em grids e qua" a dificu"dade encontrada para fa=er a migrao de um ap"icati2o desen2o"2ido para c"usters funcionar em grids$ Ao decorrer deste traba"!o+ fa=)se um estudo sobre as tecno"ogias empregadas+ quais as op<es para a migrao de um ap"icati2o desen2o"2ido em um ambiente de c"usters para um ambiente baseado em grids$ Ana"isando as diferentes bib"iotecas empregadas e quais as modifica<es necess1rias no processo de migrao e fa=endo uma equiparao atra2;s de prot(tipos desen2o"2idos em uma "inguagem de programao adequada para a2a"iao da 2iabi"idade de ta" operao$ Como 2eremos eListem 21rias op<es de grids+ este traba"!o ir1 fa=er uso do :"obus+ um ambiente est12e" e que possui todas as funciona"idades que necess1rias para rea"i=ar o estudo dese0ado$ Apesar de um ambiente grid suportar mi"!ares de nodos+ e"e ser1 insta"ado em apenas dois computadores+ cedidos pe"a Uni2ersidade Comunit1ria 3egiona" de C!apec( @UNOCHAPECOA+ mas que para este estudo so suficientes$ O ap"icati2o esco"!ido para a migrao foi desen2o"2ido pe"o ento acad#mico &uciano Car"os 8rosi para uti"i=ao em sua monografia submetida Uni2ersidade do Oeste de *anta Catarina @UNOE*CA com o tema PComparao entre bib"iotecas para processamento para"e"o com base em um c"uster eoDu"fQ$ A esco"!a deste ap"icati2o se deu por e"e 01 ter sido moti2o de estudo e de"e ser desen2o"2ido especificamente para um ambiente c"uster$ O estudo dessa migrao ser1 feito em tr#s estudos de caso+ o primeiro far1 a migrao do ap"icati2o para um ambiente c"uster sem a"tera<es em seu c(digo$ O segundo prop<em a eLecuo de um ap"icati2o monoprocessado@sem para"e"ismoA de forma remota pe"o grid$ E o terceiro prop<em que o programa se0a tota"mente reescrito uti"i=ando as bib"iotecas nati2as do :"obus 5oo"Fit+ ou se0a+ sem uti"i=ar bib"iotecas de passagem de mensagens$ ?$? O3:AN4RASTO 6O 53AA&HO Este traba"!o est1 organi=ado em de= cap'tu"os+ abordando primeiramente a sua introduo e organi=ao$ O segundo cap'tu"o da uma 2iso gera" do que so sistemas distribu'dos e para"e"os+ menciona um pouco de sua !istoria e as suas defini<es e o que os diferenciam$ 5amb;m aborda as c"assifica<es dos computadores segundo a arquitetura$ Em seguida abordamos a computao em c"usters+ dando sua definio+ suas 2antagens e suas c"assifica<es dando #nfase a computao de a"to desempen!o$ Neste capitu"o tamb;m apresentamos o c"uster de processamento para"e"o eoDu"f$ O capitu"o seguinte abrange a computao em grids+ defini<es e caracter'sticas$ Apresenta tamb;m os principais mode"os de grids eListentes descre2endo as caracter'sticas de cada um de"es$ H1 tamb;m uma bre2e comparao de c"usters e grids com intuito de um me"!or esc"arecimento de suas diferenas$ As ferramentas de desen2o"2imento para grids @ToolkitsA so abordadas no quinto capitu"o$ Neste capitu"o apresentamos o :"obus+ o &egion e o Ourgrid$ Onde fora dada #nfase ao :"obus por ser a ferramenta esco"!ida para ser uti"i=ada neste estudo$ No seLto cap'tu"o descre2emos sobre as bib"iotecas de passagem de mensagens em ambientes c"usters e grids$ 5amb;m fa"amos sobre os dois padr<es eListentes+ o PHM e o MP4+ este 9"timo mais deta"!adamente$ No s;timo cap'tu"o esto os estudos de casos imp"ementados pe"o acad#mico$ No pr(Limo so re"atadas as conc"us<es finais e sugest<es para traba"!os futuros$ O nono capitu"o tra= as refer#ncias bib"iogr1ficas uti"i=adas para o desen2o"2imento do presente traba"!o$ Em seguida temos os aneLos ? e -+ os quais tra=em os c(digos dos programas estudados neste traba"!o+ desen2o"2idos pe"o ento acad#mico &uciano Car"os 8rosi$
1 SISTEMAS DISTRIBUJDOS E PARALELOS A busca intermin12e" por poder computaciona" fa= com que a ind9stria de computadores busque no2as so"u<es para saciar a necessidade de cic"os de CPU$ *egundo 5anenbaum@?UU>A quando o Eniac surgiu+ eLecuta2a >.. opera<es por segundo+ mi" 2e=es mais r1pido que qua"quer ca"cu"adora da ;poca+ mas pessoas ainda no esta2am satisfeitas com o resu"tado$ Astr7nomos tentando descobrir o sentido do uni2erso+ bi("ogos tentando des2endar o genoma !umano+ engen!eiros aeron1uticos interessados em aumentar a segurana e a efici#ncia de aerona2es+ todos querem mais poder de processamento$ PNo importa quanto poder computaciona" eLista+ e"e nunca ser1 suficienteQ @5ANENAUM+?UU>A$ *egundo 5anembaum@?UUCA os sistemas computacionais esto tendo uma re2o"uo$ 6esde o inicio da era da computao moderna+ por 2o"ta de ?UBC+ at; meados de ?UVC+ os computadores eram grandes e caros$ Cada minicomputador gera"mente custa2a mi"!ares de d("ares+ por isto+ as organi=a<es tin!am apenas um grande e poderoso computador e di2ersas esta<es de traba"!os conectadas a e"e$ Com o desen2o"2imento dos microprocessadores e com a in2eno das redes de comunicao de a"ta 2e"ocidade essa situao comeou a se modificar$ 6e m1quinas que custa2am em torno de ?. mi"!<es de d("ares e eLecuta2am apenas a"gumas instru<es por segundo passamos para m1quinas que custam em torno de ?... d("ares e eLecutam ?. mi"!<es de instru<es por segundo$ *egundo 5anembaum@?UUCA se os carros ti2essem e2o"u'do na mesma proporo+ um 3o""s 3oMce custaria ?. d("ares e faria uma m;dia de um bi"!o de qui"7metros por "itro de gaso"ina$ A e2o"uo das redes de comunica<es possibi"itou que d9=ias ou centenas de computadores+ interconectados entre si+ pudessem trocar informa<es a uma a"ta 2e"ocidade+ fa=endo com que uma quantidade enorme de dados possam ser mo2idos entre as m1quinas com 2e"ocidades que 2ariam de ?. a ?.. mi"!<es de bitsKsec ou mais$ O resu"tado da e2o"uo dessas tecno"ogias tornou poss'2e" o surgimento de um sistema computaciona" formado por um grande n9mero de CPUWs inter"igadas por uma rede de comunicao de a"ta 2e"ocidade+ gera"mente c!amado de *istema 6istribu'do @5ANEMAUM+?UUCA$ Em uma me"!or definio+ podemos di=er que um sistema distribu'do ; uma co"eo de computadores independentes @aut7nomosA que se apresentam para os usu1rios do sistema como um simp"es computador$ O que a diferencia da programao para"e"a ; que esta di2ide ap"ica<es em di2ersos processos e os eLecuta para"e"amente em 21rios processadores+ 2isando o aumento de desempen!o$ ,1 a distribu'da eLecuta ap"ica<es espa"!adas por 21rios computadores interconectados atra2;s de uma rede+ podendo estes fa=er uso do para"e"ismo ou no$ @:ONSA&HE*+ PA64&HA+ -..?A Mic!ae" 8"Mnn em ?UE- c"assificou os mode"os de arquiteturas de computadores segundo o n9mero de f"uLo de dados e de instru<es eListentes em cada instante$ AbaiLo esto as quatro c"asses mencionadas por e"e @P45AN:A+ -..-A$ Single Instruction Single &ata @*4*6A X a arquitetura mais simp"es+ onde uma 9nica instruo ; eLecutada por 2e= a cada dado en2iado$ Estas m1quinas no uti"i=am nen!um para"e"ismo+ so as m1quinas de Han Neuman tradicionais$ Multi#le Instruction Single &ata @M4*6A X uma arquitetura onde as m1quinas eLecutam 21rias instru<es sobre apenas um item de dado$ Esta arquitetura ainda no possui um representante constru'do$ Single Instruction Multi#le &ata @*4M6A Nesta arquitetura ocorre o para"e"ismo de dados$ Uma 9nica instruo ; eLecutada para"e"amente uti"i=ando 21rios dados$ Como eLemp"o podemos citar a tecno"ogia Multimedia )xtension @MMGA encontrada nos processadores atuais e nos computadores 2etoriais$ Mu"tip"e 4nstruction Mu"tip"e 6ata @M4M6A X um mode"o de arquitetura para"e"a onde cada processador age independente+ com seu proprio f"uLo de dados$ Portanto !1 21rias instru<es uti"i=ando 21rios dados simu"taneamente$ *egundo 5anenbaum@?UUCA nesta categoria esto todos os sistemas distribu'dos$ Podemos di2idir essa arquitetura em duas c"asses+ M4M6 de mem(ria comparti"!ada e M4M6 com mem(ria distribu'da$ aA M4M6 de mem(ria comparti"!ada$ *o m1quinas que possuem 21rios processadores e comparti"!am um mesmo espao de mem(ria$ A principa" 2antagem ; que o comparti"!amento de dados entre os processos ; muito mais r1pido+ mas em contrapartida esses computadores so muito mais caros+ a"em de eListir uma "imitao f'sica na quantidade de processadores$ bA M4M6 com mem(ria distribu'da$ :era"mente c!amados de mu"ticomputadores+ so m1quinas que possuem 21rios processadores+ cada um com sua pr(pria mem(ria$ No eListe nen!um tipo de mem(ria comum entre e"es+ a comunicao ; feita atra2;s de dispositi2os de entradaKsa'da+ gera"mente com troca de mensagens entre e"es$ Um dispositi2o formado por processador+ mem(ria "oca" e dispositi2os de entrada e sa'da ; c!amado de n($ X poss'2e" construir m1quinas deste tipo com mi"!ares de unidades processadoras$ A des2antagem do seu uso ; a comp"eLidade de sua programao$ A programao para"e"a tem como principa" ob0eti2o transformar a"goritmos grandes e comp"eLos em pequenas tarefas e distribu')"as para que se0am eLecutadas simu"taneamente em 21rios processadores$ Por;m nem todas as ap"ica<es podem ser parcia"mente ou tota"mente para"e"i=adas$ Programar para"e"amente ; muito dif'ci"+ tarefas eLecutadas em para"e"o aguardam a fina"i=ao mutua para poder coordenar resu"tados+ trocar dados ou reiniciar uma no2a tarefa$ 8a=er uma correta sincronia entre e"as ; fundamenta" e muito dif'ci"$ 6 COMPUTAO EM CLUSTER *egundo Pitanga @-..>A um c"uster ; compreendido+ na sua forma mais b1sica+ por um sistema com no m'nimo dois computadores @denominados por nodosA que eLecutam ap"ica<es ou outras tarefas de uma maneira em que o usu1rio o qua" est1 interagindo com o sistema ten!a a i"uso que se trata de um recurso 9nico @Pcomputador 2irtua"QA$ Em uma definio mais simp"es+ c"uster ; um sistema onde dois ou mais computadores traba"!am em con0unto para rea"i=ar um processamento pesado+ di2idem as tarefas de processamento entre si e traba"!am como se fosse um 9nico computador$ 8onte% @ueno+-..-A$ 8igura ?$ ELemp"o de um c"uster de computadores$ A figura ? mostra um c"uster com seus nodos @back.endA @c?$$$cnA inter"igados por um s%it! e contro"ados por um ser2idor @front.endA A construo de um c"uster de computadores pode ser 2ista como uma a"ternati2a para uni2ersidades e empresas que precisam obter processamento de a"to desempen!o na reso"uo de prob"emas atra2;s de ap"ica<es que permitem ter seu processamento para"e"i=ado com uma frao apenas do 2a"or de aquisio de um supercomputador ? da mesma c"asse de processamento$ ? Computador com grande capacidade de processamento$ >$? HAN5A:EN* E Y3EA* 6E AP&4CASTO 6A COMPU5ASTO EM C&U*5E3 As grandes corpora<es precisam de um a"to desempen!o dos computadores para poderem+ por eLemp"o+ renderi=ar gr1ficos 2etoriais+ fa=erem pre2is<es meteoro"(gicas ou simu"a<es de eLp"os<es de bombas at7micas e outras tarefas de processamento pesado com um custo re"ati2amente baiLo$ ,1 a a"ta disponibi"idade de a"guns sistemas ; imprescind'2e" para a"gumas empresas+ onde minutos com o sistema indispon'2e" acarretariam em mi"!ares de d("ares em pre0u'=os @P45AN:A+-..-A$ A computao em c"uster oferece a"to desempen!o e to"erZncia a fa"!as enquanto a uti"i=ao de apenas um supercomputador no garantiria essa segurana$ *egundo Pitanga@-..-A so a"gumas 2antagens da uti"i=ao de c"usters de computadores$ A"to desempen!o H1 uma grande diminuio do tempo de processamento com a uti"i=ao de prob"emas comp"eLos atra2;s do processamento para"e"o$ Esca"abi"idade O poder computaciona" do c"uster pode ser faci"mente acrescido+ caso !a0a necessidade+ apenas com a adio de no2os componentes ou n(s ao mesmo$ 5o"erZncia a fa"!as O sistema+ como um todo+ ter1 um aumento de confiabi"idade+ caso a"guma parte c!egar a fa"!ar$ aiLo custo A uti"i=ao de computadores simp"es para a sua imp"ementao possibi"itando a obteno de processamento de a"to desempen!o a um custo re"ati2amente baiLo se comparado com supercomputadores com a mesma capacidade computaciona"$ 4ndepend#ncia de fornecedores A construo de um c"uster+ fa=endo o uso de soft%ares "i2res e a no uti"i=ao de um !ard%are especifico+ o torna "i2re de depend#ncias de fabricantes e "icenas de uso$ Os c"usters podem ser uti"i=ados em qua"quer situao onde ti2ermos grandes prob"emas computacionais e que o processamento para"e"o se0a considerado uma 2antagem$ :era"mente so ap"ica<es muito grandes+ que necessitam enormes quantidades de mem(ria+ tempo de processamento gigantesco ou fa=em uso e"e2ado de comunicao e que+ pe"a dimenso de suas necessidades+ so tidas como imposs'2eis de se reso"2er sem o uso de computadores para"e"os @P45AN:A+-..>A$ >$- 54PO* 6E C&U*5E3* EListem di2ersos tipos e ap"ica<es para os c"usters+ neste capitu"o abordaremos os principais tipos de c"usters uti"i=ados na atua"idade$ 3.2.1 A$ta dis4*)i#i$idade 9/A: 5er uma pre2iso de quando um computador ir1 ter prob"emas ou ir1 parar ; muito dif'ci"$ *egundo Pitanga@-..BA a partir de >.$... !oras de uso a probabi"idade que um sistema tem de apresentar fa"!as em seu !ardDare @discos+ fontes de a"imentao+ interfaces de rede entre outrosA ; enorme$ X muito f1ci" de encontrar um administrador de sistema que 01 te2e a not'cia de que um de seus ser2idores cr'ticos se encontra fora do ar bem no meio da madrugada+ tendo de "e2antar e tomar as de2idas pro2id#ncias para a reati2ao do sistema @P45AN:A+-..>A$ Atua"mente estamos muito dependentes de a"guns ser2ios "igados a computadores$ A a"ta disponibi"idade ; fundamenta"+ principa"mente quando a maior funciona"idade de uma empresa ; de a Poferta de a"gum ser2io computaciona"Q+ como sites de comercio e"etr7nico+ de noticias+ banco de dados entre outros @P45AN:A+-..>A$ Uma maneira de se manter a disponibi"idade de um ser2io ; imp"ementando um c"uster de A"ta 6isponibi"idade para rep"icar os ser2ios e ser2idores$ Pode ser uti"i=ada a redundZncia de !ardDare e uma reconfigurao de softDare+ fa=endo 21rios computadores traba"!arem como se fossem um 9nico+ onde todos se monitoram+ e em caso de fa"!as assumam os ser2ios do outro$ Esse monitoramento ; rea"i=ado por um softDare comp"eLo que tem a responsabi"idade de monitorar as m1quinas de uma rede+ saber quais os ser2ios que esto sendo eLecutados+ os computadores respons12eis por tais ser2ios e quais os procedimentos a serem seguidos em caso de fa"!a$ No caso de uma fa"!a ocorrer+ o ob0eti2o principa" ; a disponibi"idade dos ser2ios$ @P45AN:A+-..>A$ Nos c"usters de a"ta disponibi"idade os equipamentos so uti"i=ados em con0untos+ mantendo os ser2ios e os equipamentos sempre ati2os+ e2itando assim que m1quinas fiquem ociosas esperando apenas que um dos ser2ios ou ser2idores fa"!e para que este se0a substitu'do$ 8onte% @P45AN:A+-..>A$ 8igura -$ C"uster de A"ta disponibi"idade$ A figura - mostra um c"uster de a"ta disponibi"idade onde as esta<es+ independente do sistema operaciona"+ acessam um ser2idor de arqui2os atra2;s de uma rede pub"ica de uma forma transparente+ enLergando como se fosse apenas um computador$ Os ser2idores 554*3H? e 554*3H- monitoram)se atra2;s de uma rede pri2ada+ quando um de"es para+ o outro assume os ser2ios que o ser2idor rea"i=a2a$ Poder1 !a2er uma perda de desempen!o mas a disponibi"idade dos ser2ios ser1 garantida$ 3.2.2Ba$a)'ea2e)t* de 'aga 9LO: Com a ascenso da internet e o aumento no trafego de dados gerados por e"a+ !ou2e um grande congestionamento nos ser2idores que prestam ser2ios em uma rede$ Ana"isando qua"quer porta" de internet+ notamos que eListem 21rios ser2idores para a eLecuo de um mesmo con0unto de tarefas+ cada um com fun<es e capacidades diferentes$ Norma"mente apenas eListe a redundZncia de ser2ios+ mas muito poucos se preocupam com o ba"anceamento de cargas @P45AN:A+-..>A$ Uma so"uo que est1 em crescente uti"i=ao para pro2er um aumento na capacidade de rede e aumento de performance ; o ba"anceamento de carga entre ser2idores$ A !ospedagem de sites e o comercio e"etr7nico 01 de2em conter como parte integrante de seus pro0etos o ba"anceamento+ mas esta tecno"ogia no se de2e deter apenas a pro2edores$ Esse ba"anceamento ; rea"i=ado atra2;s de um softDare que fa= mais do que apenas redirecionamento do trafego de rede para os ser2idores+ e"e de2e pro2er de caracter'sticas de suporte a esca"abi"idade do 2o"ume de trafego 2erificando a comunicao e a redundZncia entre ser2idores$ Este ba"anceamento de2e ficar de forma transparente para o usu1rio+ fa=endo a i"uso de que se trata de apenas um ser2idor @P45AN:A+-..>A$ 3.2.3C*2#i)a+,* /A e Ba$a)'ea2e)t* de 'aga O A"to desempen!o e o ba"anceamento de carga no significam necessariamente a"ta disponibi"idade$ H1 casos onde eListe necessidade de se ter um sistema em ati2idade 2inte e quatro !oras por dia+ sete dias por semana e+ a";m disto+ possuir um sistema que possibi"ite um ba"anceamento no trafego de dados entre os ser2idores$ Por isso este c"uster combina as caracter'sticas de dois tipos de c"uster% A"ta disponibi"idade e a"anceamento de carga$ X uti"i=ado gera"mente em ser2idores Deb+ e)mai"+ neDs+ ftp entre outros @P45AN:A+-..>A$ 8onte% @P45AN:A+-..>A$ 8igura >$ C"uster A"ta 6isponibi"idade e a"anceamento de Carga @HA[&OA A figura > mostra a estrutura de um c"uster misto de A"ta 6isponibi"idade e a"anceamento de carga onde ; feita um ba"anceamento de carga nos ser2idores !ttp rodando apac!e - e com uma a"ta disponibi"idade dos ser2idores de dados que se monitoram atra2;s da t;cnica de !earbeat / 00 3.2.4 P*'essa2e)t* 4aa$e$* 9A$ta Pe>*2a)'e C*24uta'i*)a$ D /PC: aseia)se basicamente em um mode"o de c"uster uti"i=ado gera"mente para a rea"i=ao de grandes tarefas computacionais que eLigem a"ta capacidade de processamento$ Esse c"uster di2ide grandes processos em 21rios processos menores que so distribu'dos entre os nodos$ Cada n( do c"uster pode ser um simp"es computador+ sem a necessidade de grandes recursos computacionais+ como os encontrados em supercomputadores tradicionais$ Um eLemp"o desse tipo de c"uster ; o pro0eto Beo%ulf da NA*A @P45AN:A+ -..>A$ Os c"usters de a"ta performance so pro0etados para aumentar o poder de processamento uti"i=ando a computao para"e"a para a so"uo de determinado prob"ema$ EListem muitos eLemp"os de computadores cient'ficos que uti"i=am 21rios processadores de baiLo custo para eLecutar um grande n9mero de opera<es$ 4sto ; c!amado de computao para"e"a ou para"e"ismo @8O36 et a""+-..-A$ *egundo 8O36 et a"" @-..-A esse tipo de c"uster+ ; composto tipicamente de um grande n9mero de n(s$ C"usters com centenas de n(s no so incomuns$ 8requentemente neste ambiente+ um usu1rio interage com um n( espec'fico @front.endA para iniciar ou programar um traba"!o ser eLecutado$ A ap"icao+ 0untamente com 21rias fun<es dentro do c"uster+ determina como este traba"!o ser1 distribu'do atra2;s dos 21rios n(s do c"uster+ fa=endo uso dos recursos dispon'2eis para a"canar o resu"tado dese0ado$ *egundo Pitanga@-..>A+ os principais componentes para se construir um c"uster de a"ta performance so% computadores de A"ta Performance @PCs+ -orkstations ou *MPsA\ - Apac!e ; um ser2idor -eb1 "i2re e compat'2e" com o protoco"o !ttp$ > Hearbeat 2 um soft%are de monitoramento utili3ado entre os nodos de um cluster0 sistemas operacionais @baseados em um micro)Ferne" ou em camadasA\ redes de comunicao de a"ta performance @:igabit+ MMrinet e outrasA\ p"acas de rede compat'2eis com a tecno"ogia empregada\ ser2ios e protoco"os de comunicao @ Acti2e e 8ast Messages A\ c"uster Middle%are @4magem 9nica e disponibi"idade do sistemaA\ ap"ica<es e subsistemas @gerenciamento+ sistema de arqui2os para"e"oA\ softDare de gerenciamento de recursos e esca"onamento de tarefas @OpenP*+ CON6O3 e outrosA\ bib"iotecas ara passagem de mensagens e ferramentas @compi"adores+ PHM+ MP4 e outrosA\ ap"ica<es seqNenciais e para"e"as$ 3.2.4.1 eoDu"f A origem do nome Beo%ulf 2em do nome de um !er(i ing"#s muito 2a"ente+ que derrotou o mostro de :rende"$ Esse foi o nome esco"!ido para um c"uster primeiramente fundamentado pe"a NA*A com fina"idades especificas de processar informa<es espaciais @A&EC34M+-..BA$ O uso de computadores pessoais @PCA para eLpandir a fora de processamento para"e"o foi o"!ada pe"a NA*A como uma so"uo para as ap"ica<es de misso criticas e tamb;m conseguia atender os ob0eti2os da empresa de a"to desempen!o com baiLo custo$ Beo%ulf ; um c"uster de processamento para"e"o+ esca"12e"+ baseado em um con0unto de !ardDare fracamente acop"ado B em uma rede de comunicao pri2ada atra2;s de troca de mensagens e uti"i=ando softDares "i2res @&inuLA$ @ME3]E^+-..OA O pro0eto Beo%ulf foi pro0etado por seus idea"i=adores+ 6ona"d ecFer e 5!omas *ter"ing+ como uma a"ternati2a para os a"tos custos dos supercomputadores$ O prot(tipo inicia" era um c"uster de computadores que consistia em ?/ processadores 6GB conectados por uma B Computadores independentes que se comunicam atra2;s de troca de mensagens por uma rede$ rede Et!ernet C dedicada$ Y m1quina foi um sucesso imediato e a sua id;ia de sistemas baseados na uti"i=ao de microcomputadores para satisfa=er a eLig#ncias computacionais especificas se espa"!ou rapidamente atra2;s da NA*A e das comunidades acad#micas e de pesquisa @ME3]E^+-..OA$ *egundo Pitanga@-..>A podemos citar a"gumas 2antagens da uti"i=ao de um c"uster eoDu"f+$ A uti"i=ao de componentes de grande disponibi"idade no mercado+ e2itando assim a sua monopo"i=ao por certo fabricante e permitindo a reduo de custos e faci"itando a sua manuteno$ Continuidade 5ecno"(gica+ pois seus componentes so faci"mente encontrados$ 8"eLibi"idade de configurao+ o c"uster pode ser adequado a sua ap"icao e ao oramento dispon'2e"$ Esca"abi"idade+ tornando poss'2e" a eLpanso do c"uster com a adio de mais computadores+ conforme a necessidade de aumento de poder de processamento$ A"ta disponibi"idade+ pois cada n(@escra2oA traba"!a de uma forma independente+ caso um 2en!a a fa"!ar no afetara a disponibi"idade gera" do c"uster$ 8onte% @A&EC34M+ -..BA$ 8igura B$ C"uster Beo%ulf C Et!ernet ; uma tecno"ogia pra interconeLo para redes "ocais$ A figura C demonstra um esquema simp"es de um c"uster Beo%ulf onde os N(s @NodosA esto inter"igados por um s%itc! et!ernet e contro"ados ou gerenciados por uma estao @Front.end40 Para um c"uster poder ser considerado um eoDu"f e"e precisa atender a a"gumas caracter'sticas$ Os componentes uti"i=ados no podem ser sob encomenda\ 4ndepend#ncia de fornecedores de !ard%are e soft%are5 Os perif;ricos de2em ser esca"12eis\ Uti"i=ao de softDare "i2re e com c(digo aberto\ Uti"i=ao de ferramentas e bib"iotecas para computao distribu'da "i2res e sem grandes modifica<es\ 3etorno comunidade do pro0eto as me"!orias desen2o"2idas$ Uma das caracter'sticas c!a2e dos clusters Beo%ulf ; a uti"i=ao do sistema operaciona" "i2re &inuL e as bib"iotecas de "i2re distribuio para as trocas de mensagens @MP4 e PHMA$ 8 COMPUTAO EM GRIDS 9GRID COMPUTING: Os :rids computacionais so a pr(Lima gerao da computao distribu'da$ O seu ob0eti2o ; criar a i"uso de um sistema pr(prio simp"es+ por;m grande e poderoso que contro"a um computador 2irtua" eLterno formado por uma grande co"eo de sistemas !eterog#neos conectados que comparti"!am seus recursos @8E33E43A et a""+ -..CbA$ *egundo 8oster@-..CA o status atua" da computao pode ser comparada em a"guns aspectos com a e"etricidade por 2o"ta de ?U?.$ Naque"e tempo+ a gerao de energia e";trica era poss'2e"+ e os no2os dispositi2os que eram p"ane0ados 01 dependiam da energia e";trica+ mas a necessidade de cada usu1rio construir e operar um gerador e";trico in2iabi"i=a2a o seu uso$ O desen2o"2imento 2erdadeiramente re2o"ucion1rio no era a e"etricidade em si+ mas as tecno"ogias associadas a sua transmisso e distribuio$ Esses ser2ios agrupados forneciam um acesso de baiLo custo e de confiana a um ser2io padroni=ado$ E como resu"tado+ tornou a energia e";trica mundia"mente acess'2e"$ Na 2erdade+ foi desta ana"ogia que partiu a nomenc"atura Grid+ baseado nas ma"!as de inter"igao dos sistemas de energia e";trica$ *egundo Minetto@-..CA :rids so usu1rios geograficamente separados mas que comparti"!am de uma forma dinZmica seus recursos computacionais$ 3emo2endo as coneL<es fiLas entre ap"ica<es+ ser2idores+ bases de dados+ entre outros+ tratando tudo como se fosse um ser2io 2irtua"i=ado$ Esses dispositi2os podem ser distribu'dos geograficamente pe"o mundo+ pertencer a diferentes empresas ou institui<es e uti"i=ar diferentes sistemas operacionais ou p"ataformas de !ardDare$ Em uma definio mais forma" e mais comp"eta+ a computao em grids pode ser 2ista como um mode"o computaciona" distribu'do que suporta o conceito de organi=a<es dinZmicas 2irtuais fornecendo o acesso seguro e coordenado+ comparti"!ando de recursos !eterog#neos e geograficamente distribu'dos+ tais como ap"ica<es+ dados+ poder de processamento+ de "argura banda+ de capacidade de arma=enamento e de outras+ sobre uma rede a";m dos "imites organi=acionais+ usando padr<es e protoco"os abertos$ Os usu1rios do grid 2#em estes recursos como se fosse apenas um computador 2irtua" grande$ A padroni=ao das comunica<es entre sistemas !eterog#neos causou a eLp"oso da 4nternet$ A r1pida padroni=ao para comparti"!ar recursos+ 0unto com a disponibi"idade de uma "argura de banda maior+ est1 "e2ando a uma poss'2e" e2o"uo da computao em grids tornando)a igua"mente grande @8E33E43A et a""+ -..CbA$ A computao em grids tem e2o"u'do desde sua definio no inicio dos anos U.$ Naque"e tempo+ computao em grids era apenas um conceito que comea2a a ser imp"ementado nas uni2ersidades$ Ho0e+ ; uma rea"idade que pode ser usada no somente em ambientes acad#micos ou cient'ficos+ mas em empresas que necessitam de uma so"uo de ponta para seus c"ientes @8E33E43A+ et a""+ -..>A$ Muitas coisas aconteceram da ;poca do conceito inicia" at; sua imp"ementao$ Nos anos seguintes ao seu inicio+ os grids foram usados em "aborat(rios e gan!ando maturidade at; se tornarem um mode"o$ Esse mode"o iniciou uma no2a maneira de pensar da comunidade de 54 que a0udaram a reso"2er eLig#ncias dos usu1rios finais$ 6efini<es como Server Grid + &eskto# Grids + &ata Grids e outras apareceram$ Conforme 8erreira et a"" @-..CbA as principais caracter'sticas de um :rid so% Mode"o computaciona" distribu'do$ O ambiente grid ; baseado na computao distribu'da+ isto ;+ sua infra)estrutura no ; centra"i=ada+ pois seus recursos so distribu'dos geograficamente$ Uti"i=a uma rede de comunicao$ A rede ; a estrutura f'sica que interconecta os recursos distribu'dos$ Padr<es e protoco"os abertos$ A uti"i=ao de padr<es e protoco"os abertos fornece mecanismos para a comunicao entre componentes desen2o"2idos por 2endedores diferentes+ permite tamb;m que os co"aboradores se concentrem mais na programao "(gica do que nas rotinas de comunicao$ Uso de recursos comparti"!ados$ Como uti"i=a de uma mode"o de computao distribu'da os grids fornecem a !abi"idade de comparti"!ar recursos$ A"em de recursos b1sicos como processador centra"+ discos e mem(ria+ e"es podem en2o"2er ainda outros e"ementos+ tais como redes+ bases de dados+ dispositi2os de arma=enamento e outros$ Este comparti"!amento de recursos atra2;s de uma rede permite a obteno de um sistema !omog#neo composto de recursos !eterog#neos$ Organi=a<es dinZmicas 2irtuais$ Iuando um usu1rio requer um ser2io do grid+ pode uti"i=ar o recurso so"icitado de um segundo partido que pertena a uma outra organi=ao$ Por a"gum tempo+ estes dois partidos pertencero a mesma organi=ao+ uma organi=ao 2irtua" que tem a pretenso de fornecer o recurso so"icitado$ As organi=a<es 2irtuais precisam ser dinZmicas+ pois o se o usu1rio so"icitar mais recursos que o fornecedor tem capacidade de fornecer o grid de2e procurar por mais recursos+ eLpandindo essa organi=ao para suprir as necessidades do usu1rio$ Acesso seguro$ A uti"i=ao de organi=a<es 2irtuais dinZmicas requer mecanismos para assegurar a proteo de todos os e"ementos comparti"!ados$ X necess1rio garantir a identidade dos atores+ assegurando a autenticao dos consumidores e dos fornecedores+ bem como garantir que a informao transferida pe"a rede no se0a modificada ap(s a sua entrega$ A segurana de2e reforar a pri2acidade+ certificando que somente quem tem direito a informao poder1 ter acesso a mesma$ Acesso coordenado Um acesso coordenado tra= a id;ia de um agendamento de traba"!os+ processos ou unidades de processamento mais e"e2ado como tarefas$ A coordenao ; uma maneira de fornecer mecanismos para qua"idade de ser2io @Io*A$ Apesar de Io* no ser uma qua"idade origina" de um grid ; ob2io que se o grid puder assegurar Io* cumprir1 seus ob0eti2os de uma forma mais efica=$ Como eLemp"o seria separar os usu1rios de um grid como regu"ares e superiores$ Estes usu1rios superiores iriam se beneficiar de um Io* mais e"e2ado+ garantindo que seus traba"!os se0am agendados com uma prioridade mais a"ta$ 8onte% @8E33E43A et a""+ -..CaA 8igura C$ 3ecursos computacionais independentes e !eterog#neos$ A figura C mostra a maneira de como um grid pode ser constru'do de recursos computacionais !eterog#neos interconectados pe"a internet mas sem re"ao nen!uma entre e"es$ B$? MO6E&O* 6E :346* Os mode"os de grids podem ser identificados baseados nos tipos de ser2ios fornecidos e os eLigidos pe"os requisitantes$ EListem tamb;m a"guns mode"os fundamentais de grids baseados no tipo de ser2io fornecido$ Estes recursos podem ser poder computaciona"+ fornecidos por usu1rios ou computadores indi2iduais+ capacidade de arma=enamento+ por dep(sitos de informao eKou de dados+ ou por "argura de banda+ por infra)estruturas de rede$ Natura"mente+ um grid pode ser concebida para assegurar di2ersos tipos de recursos$ X poss'2e" tamb;m imp"ementa<es maiores+ adicionando ser2ios baseados em um ou mais destes mode"os @8E33E43A+ et a""+ -..>A$ 4.1.1 Gids '*24uta'i*)ais *egundo 8erreira+ et a""@-..>A um grid computaciona" ; uma infra)estrutura que permite que os recursos doem seu poder computaciona" sempre que eLigido$ Esta infra)estrutura ; apropriada para as ap"ica<es que eLigem poder de processamento adiciona"+ tanto quanto poss'2e"+ durante determinados per'odos de tempo onde uma 9nica m1quina no consegue fornecer ou !1 um custo muito a"to$ X associado gera"mente com a uti"i=ao de recursos de m1quinas deskto#s ociosas$ :rids computacionais so assim comumente c!amados por uti"i=arem principa"mente cic"os de processamento como recurso computaciona" dispon'2e"$ Os processadores podem 2ariar em 21rios fatores como arquitetura+ 2e"ocidade e p"ataforma de softDare$ Podem)se uti"i=ar os recursos de um grid computaciona" basicamente de tr#s formas$ A primeira seria esco"!endo uma m1quina dispon'2e" no grid+ independentemente de sua "oca"i=ao+ para a eLecuo de uma determinada ap"icao$ A segunda seria eLecutando o ap"icati2o para"e"amente dentro do grid+ quebrando esse ap"icati2o em partes menores e di2idindo)o entre as m1quinas$ A terceira seria rodando uma ap"icao 21rias 2e=es em diferentes m1quinas do grid @M4NE55O+ -..CA$ 4.1.2 Gids de a2aCe)a2e)t* *u Data Gids O segundo recurso comum mais uti"i=ado em um grid ; o arma=enamento de dados$ Um grid pode oferecer uma 2iso integrada do arma=enamento de dados+ que ; comumente c!amada de &ata Grid0 Cada m1quina dispon'2e" no grid gera"mente possui a"guma quantidade de arma=enamento para comparti"!ar+ mesmo que pro2isoriamente$ Esse arma=enamento pode ser mem(ria 3AM+ acesso muito r1pido mas tempor1rio+ ou pode ser um Parma=enamento secund1rioQ em disco r'gido ou outros meios de arma=enamento permanente$ O arma=enamento em mem(ria ; me"!or uti"i=ado como um cac!e de dados do grid+ ser2indo como um arma=enamento pro2is(rio para ap"ica<es que esto em eLecuo$ O arma=enamento secund1rio pode ser uti"i=ado de muitas maneiras para aumentar a capacidade+ o desempen!o e a confiabi"idade dos dados @8E33E43A+ et a""+ -..>A$ *egundo Minetto@-..CA+ esse espao de arma=enamento pode ser uti"i=ado como se fosse um 9nico sistema de arqui2os+ faci"itando a "oca"i=ao de determinado arqui2o+ sendo que este pode estar di2idido e espa"!ado pe"as m1quinas do grid+ superando prob"emas como taman!o m1Limo de arqui2os em certos sistemas operacionais$ Os dados podem ser dup"icados por um sistema de gerenciamento para aumentar a segurana atra2;s da redundZncia$ Pode se tamb;m+ ao uti"i=ar uma m1quina para eLecutar determinada ap"icao+ esco"!er a que esti2er com os dados requisitados pe"a mesma$ 4.1.3 Gids de '*2u)i'a+,* *u Network Grids Um dos recursos mais importantes dentro de um grid ; a capacidade de transmisso de dados$ 4nc"uindo comunica<es internas e eLternas ao grid$ A"gumas 2e=es+ ap"ica<es necessitam processar uma quantidade muito grande de dados+ e estes+ as 2e=es podem no se encontrar na mesma m1quina onde o ap"icati2o est1 sendo eLecutado$ Nestes casos os dados de2em ser en2iados atra2;s do grid 0unto com o eLecut12e"$ A "argura de banda dispon'2e" para tais comunica<es pode se tornar um recurso critico e pode "imitar a uti"i=ao do grid$ Ento+ m1quinas que esto com coneL<es ociosas podem ser uti"i=adas para transmitir esses dados+ tanto em comunica<es internas do grid quanto em en2ios de dados para fora+ como a internet$ :rids que possuem como principa" fina"idade fornecer o recurso de a"ta performance e redundZncia de comunica<es so gera"mente c!amados de net%ork grids @M4NE55O+-..CA B$- COMPA3ASTO EN53E :346* E C&U*5E3* *egundo Pitanga@-..>A as diferenas entre um c"uster e um grid ; que um ambiente c"uster constitui)se de um sistema formado por !ardDare e softDare conectados "oca"mente+ a"tamente acop"ados+ ser2indo a pro0etos espec'ficos$ Em um c"uster tamb;m eListe um ponto contro"ador ou uma entidade centra" gerenciando todos os recursos dispon'2eis+ dando a noo de uma imagem 9nica do sistema e de onde pode)se uti"i=ar todo o poder de processamento do c"uster$ Os c"usters so mais usados em ati2idades de pesquisa+ reso"2endo prob"emas comp"icados e na renderi=ao de gr1ficos >6$ ,1 um ambiente grid uti"i=a uma arquitetura mais democr1tica+ pois temos um ambiente fundamenta"mente cooperati2o+ geograficamente distribu'do+ onde empresas+ uni2ersidades e at; mesmo grupos de usu1rios comparti"!am seus recursos ociosos em troca de poder uti"i=ar do poder do grid quando necessitar$ Em um grid+ cada POrgani=ao Hirtua"Q fa= o gerenciamento de seus pr(prios recursos+ no tendo uma 2iso de imagem 9nica de sistema$Cada n(+ possu' seu pr(prio gerente recursos e suas po"'ticas de a"ocao$ Em um grid computaciona" as ap"ica<es tendem a ser mais "e2es+ pois requisitam re"ati2amente menos das redes$ A rede de dados torna)se um garga"o fundamenta" para a eLecuo de ap"ica<es pesadas que possuem um a"to f"uLo de dados+ comprometendo+ em a"guns casos+ a performance do supercomputador 2irtua"$ - FERRAMENTAS DE DESENVOLVIMENTO 9TOOLKITS: C$? :&OU* O :"obus ; um toolkit de c(digo aberto uti"i=ado para construir ap"ica<es e sistemas para Grids$ E"e ; desen2o"2ido pe"a Globus Alliance e por muitos programadores em todo o mundo$@5HE :&OU*WA&&4ANCE+-..CA$ A principa" meta do :"obus ; o desen2o"2imento de uma infra)estrutura b1sica para ap"ica<es geograficamente distribu'das sem sacrificar a autonomia do sistema "oca"+ possibi"itando o comparti"!amento de poder computaciona"+ bases de dados+ entre outros$ O :"obus atua como um middle%are que permite ap"icao ser eLecutada de uma forma autenticada e faci"itada na infra)estrutura disponibi"i=ada @M4NE55O+ -..CA$ O Globus toolkit @:5A foi desen2o"2ido para suportar o desen2o"2imento de ap"ica<es computacionais distribu'das orientadas a ser2ios e infra)estruturadas$ Os componentes do n9c"eo do :5+ dentro de uma estrutura padro+ basicamente so re"acionados segurana+ acesso a recursos+ ger#ncia de recursos+ mo2imentao de dados e assim por diante$ Estes componentes permitem um rico eco)sistema de ferramentas que constroem ou se inter) re"acionam com uma grande 2ariedade de ap"ica<es em muitas 1reas$ Ao "ongo das 2ers<es o :5 sofreu profundas modifica<es em sua estrutura+ no apenas no intuito de e2o"uir sua gama de ferramentas+ mas sim uma mudana comp"eta em seus m(du"os interfaces e protoco"os$ 5.1.1 C*24*)e)tes d* G$*#us T**$;it *egundo 8O*5E3+ ]E**E&MAN @-..CA e 8E33E43A et a""@-..>A possui uma estrutura como a eLpressada na figura abaiLo$ 8onte% @8E33E43A et a""+-..>A 8igura /$ Componentes do g"obus 5oo"Fit$ O :"obus 5oo"Fit fornece componentes para imp"ementar a ger#ncia de recursos+ ger#ncia de dados e os ser2ios de informao$ Os componentes podem ser usados tanto em con0unto quanto independentemente no desen2o"2imento de ferramentas e de ap"ica<es para um ambiente grid$ *egundo 8E33E43A et a""@-..>A e M4NE55O@-..CA abaiLo esto os principais componentes do Globus Toolkit$ Grid Resource Allocation Manager @:3AMA O :3AM ; um m(du"o que fornece a eLecuo e gerenciamento remoto das tarefas$ E"e age como uma interface entre os ser2ios "ocais e g"obais+ tradu=indo recursos gen;ricos em comandos espec'ficos para um sistema "oca"$ Iuando um traba"!o ; submetido por um c"iente+ o pedido ; en2iado ao !ost remoto e segurado pe"o softDare gatekee#er 6 $ Ento o gateFeeper cr'a um processo (ob manager E para comear e monitorar o traba"!o$ Iuando o traba"!o ; terminado+ o (ob manager en2ia o status do traba"!o de 2o"ta ao c"iente e fina"i=a)o$ / O softDare gatekee#er ; uma interface entre o :3AM e o usu1rio+ ; funo do gateFeeper pro2er segurana+ confiabi"idade+ criao e gerenciamento de ser2ios @M4NE55O+-..CA$ E 7ob manager ; um processo criado pe"o gateFeeper+ a sua funo ; contro"ar a a"ocao e gerenciamento dos recursos "ocais+ como um agendador de tarefas @8E33E43A et a""+-..>A$ O :3AM uti"i=a a "inguagem para a submisso de traba"!os@(obsA o Globus Resource S#ecification $anguage @3*&A$ 5odos os parZmetros e informa<es necess1rias para a eLecuo do traba"!o so en2iados com essa "inguagem+ como por eLemp"o a memoria necess1ria para eLecutar um traba"!o em uma m1quina remota @8E33E43A et a""+-..>A$ Metacom#uting &irector Service @M6*A O M6* ; um con0unto de ferramentas para a configurao e para obter informa<es de sistemas e redes$ Com e"e ; poss'2e" se obter di2ersas informa<es como carga de rede+ processos em eLecuo+ sistema operaciona" de determinada m1quina+ entre outros$ X baseado no protoco"o de ser2io de diret(rio &6AP$ E"e ; composto pe"o Grid Resource Information Service @:34*A e o Grid Index Information Service @:44*A$ O :34* ; um reposit(rio de informao sobre os recursos "ocais e o :44* ; um reposit(rio indeLado de informa<es @M4NE55O+ -..CA$ Grid Securit Infrastructure @:*4A O :*4 fornece e"ementos para autenticao e uma comunicao segura em um grid$ *ua infra)estrutura ; baseada no protoco"o Secure Socket $aer @**&A+ criptografia com c!a2e p9b"ica e no protoco"o de autenticao L$C.U+ o qua" fa= uso de certificados @8E33E43A et a""+-..>A$ E"e possui um ser2io de autenticao do tipo single sign on+ com suporte a contro"e "oca"+ de"egao e mapeamento de credenciais$ *uas principais fun<es so autenticao+ autori=ao e de"egao de credenciais para computa<es remotas @M4NE55O+ -..CA$ :rid85P O :rid85P fornece transfer#ncia de dados segura e de confiana entre n(s do grid$ E"e ; um protoco"o uti"i=ado em quase todas as transfer#ncias de dados do grid$ aseado no protoco"o 85P V mas com a adio de a"gumas funciona"idades para sua adaptao para grid+ uti"i=ando)se do mode"o de segurana pro2ido pe"o :"obus$ 5.1.2 G$*#us T**$;it 6 9GT6: V 8i"e 5ranfer Protoco"% protoco"o usado para transfer#ncia de arqui2os$ O :5> fa= um uso eLtensi2o dos mecanismos de -eb Services+ sob o conceito de grid services+ para definir suas interfaces e estruturar seus componentes$ Os -eb Services fornecem f"eLibi"idade e mecanismos baseados em )xtensible Marku# $anguage @GM&A U para descre2er+ descobrir e in2ocar ser2ios de rede+ a";m de seus protoco"os serem orientados a intera<es fracamente acop"adas+ o que muitas discuss<es di=em ser prefer'2e" em sistemas distribu'dos robustos$ AbaiLo a"guns conceitos ap"icados no :5>$ '#en Grid Services Arc!itecture @O:*AA O O:*A ; uma arquitetura de ser2ios b1sicos para a construo de um grid$ *eu principa" ob0eti2o ;+ atra2;s de um con0unto de padr<es e interfaces+ padroni=ar os ser2ios que so freqNentemente encontrados em uma ap"icao de grid$ O O:*A ; atua"i=ado e gerenciado pe"o Global Grid F8rum @::8A @8E33E43A et a""+-..>A$ O O:*A ; baseado na arquitetura dos -eb Services e uti"i=a uma interface definida em uma "inguagem GM& c!amada -eb Services &escri#iton $anguage @J*6&A$ As interfaces definidas pe"o O:*A faci"itam a 2irtua"i=ao de recursos e ser2ios+ possibi"itando com isso a uti"i=ao de 21rios tipos de recursos de uma forma mais transparente$ '#en Grid Services Infrastructure @O:*4A O:*4 ; a especificao concreta da infra)estrutura O:*A$ 6efine as interfaces b1sicas @construir+ gerenciar e eLpandir os ser2iosA e os comportamentos de um Grid Service0 -eb Services -eb Services ; uma tecno"ogia que possui 21rios componentes que possibi"itam opera<es de acesso a rede+ permitindo a criao de ap"ica<es distribu'das c"ienteKser2idor uti"i=ando os protoco"os GM& e H55P+ ambos abertos e amp"amente uti"i=ados$ *eu ob0eti2o ; faci"itar a comunicao entre programas$ Com e"e ; poss'2e" eLecutarmos ser2ios atra2;s de uma 4ntranet ou at; mesmo pe"a 4nternet+ deiLando transparente ao c"iente deta"!es re"ati2os a imp"ementao e a "oca"i=ao$ Ao c"iente basta apenas saber a U3& de acesso ao ser2io+ seus m;todos e tipos de dados$ Como protoco"o de comunicao os Jeb *er2ices se uti"i=am o Sim#le 'b(ect Access Protocol @*OAPA+ o qua" ; baseado em GM& e uti"i=a H55P como transporte$ U GM&% "inguagem uti"i=ada para arma=enar dados em um documento$ O -orld -ide -eb "onsortium @J>CA ; o grupo respons12e" pe"a definio dos padr<es dos -eb Services$ Para definir esse padro foi criada a "inguagem J*6&$ Neste padro esto contidos os m;todos+ parZmetros+ tipos de dados+ protoco"o para transporte e o ,niform resource identifier @U34A do ser2io$ Grid Services O :rid *er2ices ; um padro baseado nos Jeb *er2ices$ Como demostra a figura U e"e foi definido no O:*A e especificado no O:*4$ 8onte% @*O5OMA^O3+-..BA 8igura E$ Grid Services Os Grid Services possuem a"gumas caracter'sticasKcomponentes adicionais aos -eb Services+ inc"u'dos para uma me"!or adaptao e faci"idade no desen2o"2imento de ap"ica<es em um ambiente grid$ Conforme M4NE55O @-..CA abaiLo esto a"gumas dessas caracter'sticasKcomponentes$ aA Nomeao% para a identificao 9nica de um ser2io+ assim como os -eb Services uti"i=am as U34s+ os Grid Services uti"i=a o Grid Service Handle @:*HA$ Mas o :*H possui apenas o endereo+ no contendo informa<es deta"!adas$ Por isso+ o :*H associa)se ao Grid Service Reference @:*3A que contem os deta"!es e requisitos da comunicao foi o criado$ O :3* ; um documento J*6& que contem esses deta"!es$ bA 6ados do *er2io% um Grid Service+ quando instanciado+ possui 21rios dados associados a e"e+ os quais podem ser acessados pe"os usu1rios do ser2io$ Estes dados so c!amados de Service &ata )lements @*6EA$ cA Notifica<es% um mecanismo de notificao permite a um ser2io en2iar mensagens a outros+ mediante uma inscrio por parte do destino$ 5.1.3 G$*#us T**$;it 8 9GT8: A 2erso B$. do Globus toolkit+ c!amada de :5B foi "anada no segundo semestre de -..C$ Essa 2erso ; baseada diretamente sob o conceito de Jeb *er2ices e ; uma imp"ementao do -eb Services Resource Frame%ork @J*38A+ que ; um sucessor do padro O:*4$ O J*38 tenta corrigir a"gumas des2antagens do padro O:*4+ mas os ser2ios definidos no O:*A continuam tendo a mesma interface e especificao @&AU*CHNE3+-..CA$ Apesar de esta ser a 2erso mais no2a do Globus toolkit e"a no ser1 uti"i=ada neste pro0eto+ pois o :5>+ por ser mais antigo+ possui uma gama maior de documentos e artigos a serem estudados neste momento$ C$- &E:4ON O &egion ; um ambiente de programao+ iniciado em ?UU> e mantido pe"a ,niversit of *irginia+ orientado a ob0etos+ onde tudo+ mem(ria+ capacidade de processamento+ espao de arma=enamento+ entre outros so considerados ob0etos$ Estes ob0etos comunicam)se atra2;s da in2ocao de m;todos remotos$ A id;ia principa" ; uma arquitetura de grid transparente para o usu1rio+ criando uma 9nica m1quina 2irtua" para suas ap"ica<es @M4NE55O+-..CA$ O softDare do &egion+ atra2;s de suas ferramentas+ oferece uma 2ista !omog#nea do grid ao programador$ O conceito do sistema de arqui2os do &egion ; uma 2antagem no desen2o"2imento$ No &egion o sistema de arqui2os uti"i=a um 9nico identificador para cada ob0eto$ 6essa forma+ fornecendo aos programadores da ap"icao mais faci"idade de acesso aos arqui2os distribu'dos+ somente usando seus nomes$ Ou se0a+ o usu1rio uti"i=a apenas o nome do arqui2o+ que pode estar arma=enado "oca"mente ou em uma m1quina remota @6AN5A*+-..>A$ Nesse ser2io 9nico e g"oba" de identificao os ob0etos podem ser nomeados em tr#s n'2eis$ No n'2e" mais a"to+ os ob0etos so identificados por cadeias de caracteres c!amadas de context names$ O context name em um n'2e" intermedi1rio ; mapeado por um ob0eto c!amado $egion 'b(ect Identifier @&O46A+ onde gan!a um identificador bin1rio que possui uma c!a2e p9b"ica 3*A associada ao ob0eto quando da sua criao$ No terceiro n'2e"+ como o &O46 no possui todas as informa<es necess1rias para que os ob0etos possam se comunicar em uma rede+ o ob0eto ; associado ao &egion Ob0ect Address @&OAA$ O &OA ; um endereo f'sico que contem informa<es para que os ob0etos possam se comunicar em uma rede+ como endereo 4P+ n9mero de porta+ entre outros @P45AN:A+-..>A$ Esse ser2io de identificao g"oba" fa= com que o &egion possa simu"ar um sistema de arqui2os tradiciona"$ Os arqui2os so g"oba"mente acess'2eis aos usu1rios+ no importando a sua "oca"i=a"o$ As defini<es de segurana+ como o contro"e de acesso+ esto definidas no &O46 de cada ob0eto$ O mode"o de segurana do &egion ; composto por dois n'2eis% n'2e" de mensagem e n'2e" de MaM"$ O n'2e" de mensagem ; respons12e" pe"a segurana na comunicao entre os ob0etos+ uti"i=ando m;todos de criptografia de c!a2e pub"ica do sistema 3*A$ O MaM" ; respons12e" pe"a segurana dos ob0etos+ tomando decis<es sobre as permiss<es e os tipos de acesso aos m;todos$ O &egion se destaca pe"o a suporte ap"ica<es para"e"as$ E"e possui uma imp"ementao das bib"iotecas MP4 e PHM$ Para se uti"i=ar um programa escrito com uma dessas "inguagens+ basta apenas recompi"1)"o uti"i=ando as bib"iotecas fornecidas pe"o &egion$ 4sso permite que a migrao da infra)estrutura antiga para a infra)estrutura do &egion se0a praticamente instantZnea @P45AN:A+ -..>A$ C$> OU3:346 Our:rid ; aberto e "i2re+ um grid cooperati2o em que os "aborat(rios doam seus recursos computacionais inati2os em troca de usar recursos inati2os de outros "aborat(rios quando necessitados @OU3:346 >$. U*E3 MANUA&+ -..BA$ X uma so"uo que permite que 2oc# combine recursos computacionais distribu'dos em um grid que tem suporte a ap"ica<es ag)of)5asFs @o5A ?. $ Como usu1rio+ 2oc# precisa ?. ag)of)5asFs @o5A so ap"ica<es para"e"as que cu0a as tarefas so independentes+ ou se0a+ as tarefas no necessitam comunicar)se para prosseguir com seu processamento$ Apesar de sua simp"icidade+ as ap"ica<es o5 possuem 21rias uti"i=a<es+ como minerao de dados+ buscas macias+ 2arreduras de parZmetro+ simu"a<es de Monte)Car"o+ computao bio"(gica+ processamento saber apenas a"guns conceitos para fa=er suas pr(prias ap"ica<es para"e"as no Our:rid$ E"e ; f1ci" de insta"ar+ configurar e de usar$ Our:rid ; formado por uma comunidade ponto)a)ponto onde um site doa seus recursos ociosos a comunidade$ Natura"mente+ quando !a2er necessidade de recursos+ o site se beneficiar1 de recursos ociosos de outra parte da na comunidade$ O Our:rid d1 garantias que os "ocais que mais doarem seus recursos tero prefer#ncias nos recursos da comunidade quando necessitarem$ A";m disso+ os pedidos "ocais tero prioridade e interrompero imediatamente o pedido da comunidade$ ConseqNentemente+ usar o Our:rid nunca degradar1 seu desempen!o "oca"$ O Our:rid ; formado por tr#s componentes principais% :uMs+ fornecedores de :uMs e MMgrid$ Os :uMs so as m1quinas reais onde as tarefas so eLecutadas durante a eLecuo de um traba"!o no Our:rid$ Na pr1tica+ todo o computador que esti2er conectado a Internet pode ser usado como um :uM+ mesmo que se encontrar em um dom'nio diferente ou protegido por um fire%all @OU3:346 >$. U*E3 MANUA&+ -..BA$ Os :uMs que pertencem ao mesmo dom'nio so organi=ados e fornecidos por um 8ornecedor de :uMs @GuM ProviderA$ Para o usu1rio+ o fornecedor de :uMs ; um ser2io de rede que fornece dinamicamente as :uMs para eLecutar suas tarefas$ 6a perspecti2a administrati2a+ o fornecedor :uM a0usta as m1quinas para que est1s possam ser uti"i=adas como :uMs$ Na figura U eListe um fornecedor para cada dom'nio administrati2o$ Esta arquitetura permite que administradores diferentes uti"i=em po"'ticas diferentes ao uso de seus :uMs$ de imagens+ entre outros$ 8onte% @OU3:346 >$. U*E3 MANUA&+ -..BA$ 8igura V$ Estrutura de um :rid Our:rid O terceiro componente importante da so"uo Our:rid ; c!amado de MM:rid$ O MM:rid ; o front.end do usu1rio do Our:rid$ E"e fornece toda a sustentao necess1ria para descre2er+ eLecutar e monitorar traba"!os nos :uMs$ 6urante a eLecuo de um traba"!o+ o MM:rid usa :uMs sob)demanda 2indos de fornecedores a que e"e est1 conectado$ X pape" do MM:rid programar tarefas para funcionarem nos :uMs e mandar e receber os dados para os :uMs+ antes e depois das eLecu<es das tarefas$ 0 BIBLIOTECAS PARA TROCAS DE MENSAGENS A programao para"e"a consiste em di2idir grandes e comp"icados a"goritmos em processos menores que so distribu'dos entre 21rios processadores e eLecutados simu"taneamente$ Para que !a0a uma correta sincroni=ao das tarefas em eLecuo+ ; necess1rio que e"es se comuniquem$ O uso de uma bib"ioteca especifica no ; obrigat(ria+ mas permite que o programador no ten!a que se preocupar com deta"!es muito espec'ficos de como ser1 feita essa comunicao e como as mensagens sero en2iadas entre os processos$ *egundo 8rosi @-...A+ eListem dois grandes padr<es de bib"iotecas para processamento para"e"o+ o MP4 @Message Passing 4nterfaceA e o PHM @Para""e" Hirtua" Mac!ineA$ Esta u"tima foi o padro na uti"i=ao por muito tempo+ mas o MP4 2em tomando espao+ mesmo com paradigmas de comunicao muito diferentes do PHM$ A computao em grid tamb;m permite a uti"i=ao de t;cnicas de programao para"e"a atra2;s da passagens de mensagens$ A"gumas bib"iotecas para programao para"e"a tem as suas 2ers<es para serem uti"i=adas em grids+ como o MP4$ ,1 a"gums ambientes de programao possuem 2ers<es pr(prias das bib"iotecas 01 eListentes+ como ; o caso do ambiente &egion+ onde bastamos apenas recompi"ar nossas ap"ica<es MP4 ou PHM uti"i=ando as bib"iotecas de"e+ fa=endo essa migrao quase sem nen!uma modificao$ 6e2ido a a"ta "at#ncia na comunicao entre processos+ causada pe"a grande di2ersidade de redes uti"i=adas em um grid+ as ap"ica<es de2em ser constru'das com uma granu"aridade pro0etada de ta" forma que se comuniquem o m'nimo poss'2e"$ As ap"ica<es mais adequadas aos :rids so as que possuem tarefas baseadas no conceito de bag of tasks+ pois as tarefas so independentes umas das outras+ podendo ser eLecutadas em qua"quer ordem$ /$? PARA$$)$ *IRT,A$ MA"HI9) @PHMA A m1quina 2irtua" para"e"a @PHMA ; uma bib"ioteca de programao para"e"a desen2o"2ida pe"o esforo con0unto do OaF 3idge Nationa" &aboratorM+ Uni2ersitM of 5enesse+ EmorM Uni2ersitM e Carneige Me""on Uni2ersitM no Heterogeneous NetDorF Pro0ect em ?UVU$ A bib"ioteca PHM possibi"ita os programadores a desen2o"2er ap"ica<es para"e"as uti"i=ando o conceito de passagem de mensagens entre uma rede de sistemas !eterog#neos @computadores com arquiteturas e sistemas operacionais di2ersosA ou sistemas MPP @Processamento Massi2amente Para"e"oA @P45AN:A+-..-A$ Na bib"ioteca PHM os recursos de um c"uster gan!am um endereamento g"oba"$ A mem(ria e os processadores so representados como se pertencessem a uma 9nica m1quina com capacidade equi2a"ente a soma dos recursos de cada m1quina indi2idua"$ Para o programador+ a mem(ria e os demais recursos do c"uster so acessados como se fossem "ocais em cada m1quina$ O PHM se encarrega da passagem de mensagens para fa=er transparecer a rea" arquitetura$ O PHM se baseia em duas primiti2as b1sicas% *EN6 @en2iar mensagemA e 3ECE4HE @receber mensagemA$ /$- M)SSAG) PASSI9G I9T)RFA") @MP4A A interface de troca de mensagens @MP4A ; um padro desen2o"2ido pe"o f(rum de interface de troca de mensagens @MP48A+ tamb;m c!amado de MP4 8(rum$ E"e especifica uma interface port12e" para programas de troca de mensagens+ 2isando praticidade+ efici#ncia e f"eLibi"idade ao mesmo tempo$ O MP48 com a a0uda de mais B. organi=a<es+ comeou a traba"!ar no padro em ?UU-$ Em ?UUB foi pub"icada a sua primeira 2erso$ A segunda 2erso @MP4)-A foi "anada em ?UUE pe"o MP48 adicionando ao padro a criao de processos dinZmicos e a"gumas outras opera<es simp"es$ @AoMama+NaFano+?UUUA$ *egundo AoMama+NaFano @?UUUA os ob0ei2os do pro0eto MP4 so% pro0etar uma interface para programao de ap"ica<es @no necessariamente para compi"adores ou bib"iotecas de sistemaA\ permitir uma comunicao eficiente e2itando a copia mem(ria))mem(ria\ permitir a sua uti"i=ao em um ambiente !eterog#neo\ rea"i=ar uma interface de comunicao de confiana+ o usu1rio no necessita "idar com as fa"!as de comunicao$ 5ais fa"!as so tratadas por um subsistema de comunicao sub0acente\ definir uma interface que no se0a muito diferente das 01 eListentes+ como PHM+ NG+ ELpresso+ PB e outros+ e fornecer eLtens<es que permitam uma maior f"eLibi"idade\ definir uma interface para muitas p"ataformas de diferentes fabricantes+ sem mudanas significati2as nos programas de comunicao ou de sistema\ a interface de2e ser independente da "inguagem uti"i=ada\ de2e ser pro0etada para permitir t!read.safet :: $ EListem diferentes imp"ementa<es do MP4+ para 21rias p"ataformas de !ardDare e softDare$ 4sso permite a construo de c"usters com as mais 2ariadas arquiteturas e usar o MP4 para reso"2er o prob"ema de uma forma distribu'da$ O MP4 imp"ementa um (timo mecanismo de portabi"idade e independ#ncia de sistema operaciona"$ Por eLemp"o+ um c(digo MP4 desen2o"2ido para uma arquitetura *PA3C com o *$O *o"aris pode ser portada+ com quase nen!uma modificao em seu c(digo fonte+ para um PC com o *$O &inuL$ Para que se0a poss'2e" a troca de mensagens entre m1quinas de arquiteturas diferentes+ as quais possuem seus pr(prios tipos internos de dados+ o MP4 possui seus pr(prios tipos b1sicos de dados+ independentes da arquitetura rea" da m1quina$ 8ica a cargo do MP4 con2erter esses tipos de dados para os tipos internos correspondentes a arquitetura uti"i=ada$ A tabe"a abaiLo cont;m os tipos b1sicos de dados do MP4$ 5ipos de dados MP4 MP4_CHA3 MP4_*HO35 MP4_4N5 MP4_&ON: MP4_UN*4:NE6 CHA3 MP4_UN*4:NE6 *HO35 MP4_UN*4:NE6 MP4_UN*4:NE6 &ON: MP4_8&OA5 MP4_6OU&E MP4_&ON: 6OU&E MP4_^5E MP4_PAC]E6 8onte% @&U:A3RO+-..>A 5abe"a ?$ 5ipos b1sicos de dados do MP4 Como na programao para"e"a em gera"+ a computao para"e"a ; decomposta em processos concorrentes$ Criar e iniciar processos no esto definidos no MP4 padro+ estes ficaram a cargo das diferentes imp"ementa<es$ No MP4)? apenas a criao de processos est1ticos so suportados$ 4sto significa que todos os processos de2em ser definidos antes da ?? ELecuo de 21rias t!reads simu"taneamente$ eLecuo e iniciados 0untos$ ,1 no MP4)-+ foi introdu=ida a criao de processos dinZmicos com a rotina MPI;"omm;s#a%n<4 como uma caracter'stica a2anada$ Embora o MP4 se0a um sistema comp"eLo+ um amp"o con0unto de prob"emas podem ser reso"2idos uti"i=ando apenas / fun<es+ que ser2em basicamente para% iniciar+ terminar+ eLecutar e identificar processos+ en2iando e recebendo mensagens$ MP4_4N45 4nicia uma eLecuo MP4 MP4_84NA&4RE 8ina"i=a a eLecuo MP4_COMM_*4RE 6etermina o n9mero de processos MP4_COMM_3AN] 6etermina a identificao de processos MP4_*EN6 En2iar as mensagens MP4_3ECH 3eceber mensagens 8onte% @&U:A3RO+-..>A 5abe"a -$ 8un<es b1sicas do MP4 5odos os procedimentos da tabe"a -+ eLceto os dois primeiros+ possuem um manipu"ador de comunicao como argumento$ 4nicia"mente todos os processos esto registrados em um uni2erso c!amado MPI;"'MM;-'R$&+ onde cada processo recebe um identificador 9nico+ um n9mero de . Nprocessos ` ?$ Para um programa simp"es+ o comunicador padro+ MPI;"'MM;-'R$&+ ; suficiente$ Contudo+ outros comunicadores podem ser estabe"ecidos para um grupo de processos$ Esse manipu"ador identifica o grupo de processos e o conteLto das opera<es que sero eLecutadas$ Os comunicadores proporcionam o mecanismo para identificar um subcon0unto de processos+ durante o desen2o"2imento de programas modu"ares+ assegurando que as mensagens+ p"ane0adas para diferentes prop(sitos+ no se0am confundidas$ @&U:A3RO+-..>A As fun<es MP4_4N45 e MP4_84NA&4RE so usadas+ respecti2amente+ para iniciar e fina"i=ar uma eLecuo MP4$ A MP4_4N45 de2e ser c!amada antes de qua"quer funo MP4 e de2e ser acionada por cada processador$ 6epois de ser acionada a MP4_84NA&4RE+ no se pode acessar outras fun<es da bib"ioteca$ A funo MP4_COMM_*4RE determina o n9mero de processos que esto sendo eLecutados e a MP4_COMM_3AN] os identifica+ usando um n9mero inteiro$ As fun<es MP4_*EN6 e MP4_3ECH so usadas para en2iar e receber mensagens$ O MP4 pode eLecutar processos em modo Sim#le Program Multi#le &ata @*PM6A ou Multi#le Program Multi#le &ata @MPM6A$ Uti"i=a)se da arquitetura *PM6 quando um 9nico programa ; eLecutado em todos os processos+ podendo+ baseado na identificao do processo+ rea"i=ar diferentes tarefas$ No modo MPM6 os processos diferentes eLecutam programas diferentes$ AbaiLo um eLemp"o de como o MP4 pode ser uti"i=ado em modo *PM6$ #include <stdlib.h> #include mpi.h main ( int argc, char *argv[ ]) /* un!"# main, #brigat$ria e %nica */ & int m'id( )*+,+nit(-argc, -argv)( /* iniciali.and# # )*+ */ /**r#cura a id d# pr#cess# */ )*+,/#mm,ran0()*+,/1)),21345, -m'id)( +6 (m'id 77 8)& /* 9e id 7 8 : # pr#cess# mestre */ c#dig#mestre()( ; else & c#dig#escrav#()( ; )*+,inali.e()( /* inali.a # )*+ */ ; Iuadro ?$ ELemp"o de um programa uti"i=ando MP4 A"goritmos para"e"os+ freqNentemente+ precisam de opera<es coordenadas en2o"2endo m9"tip"os processos$ Por eLemp"o+ todos os processos podem precisar transpor uma matri= distribu'da ou somar um con0unto de n9meros distribu'dos em cada um dos processos$ C"aramente+ as opera<es podem ser imp"ementadas por um programador+ uti"i=ando)se fun<es de recebimento e en2io de fun<es$ Por comodidade e para permitir imp"ementa<es otimi=adas+ o MP4 tamb;m fornece uma serie de fun<es especia"i=adas de comunicao que eLecutam opera<es comuns desse tipo$ @PACHECO+?UUVA A"gumas dessas fun<es so% MPI;BARRI)R< 4% uti"i=ada para sincroni=ar a eLecuo dos processos de um grupo$ Os processos de2em ficar esperando+ inati2os+ at; que todos e"es ten!am passado por esta barreira$ Essa ; uma forma de separar etapas de uma eLecuo e2itando que no !a0a confuso entre as mensagens geradas$ Como eLemp"o+ essa funo poderia ser usada antes de uma segunda operao de en2io de uma mensagem$ MPI;B"AST< 4= transmite os dados de um processo de origem para todos os outros processos$Uti"i=a uma disperso dos dados do tipo um para muitos$ MPI;GATH)R< 4= reco"!e os dados de todos os processos em um 9nico processo+ inc"uindo os dados deste$ MPI;S"ATT)R< 4= transmite 21rios dados de um processo de origem para todos os outros processos+ atua fa=endo o oposto de MP4_:A5HE3@A$ Uti"i=a uma disperso de dados do tipo muitos para muitos$ MPI;R)&,")< 4= Combina 2a"ores fornecidos de todos os processos+ uti"i=ando opera<es especificas e retorna a apenas um processo de origem$ Essas opera<es espec'ficas inc"uem o m1Limo+ o m'nimo @MP4_MAG+ MP4_M4NA+ soma+ produto @MP4_*UM+ MP4_P3O6A e as opera<es "(gicas$ O padro MP4 possui ainda muitas outras fun<es+ que no foram descritas pois ob0eti2amos os princ'pios b1sicos de uma imp"ementao$ A"gumas caracter'sticas no cobertas so% a possibi"idade de comunicao ass'ncrona+ quando um c1"cu"o acessa e"ementos de uma estrutura de dados comparti"!ados em um modo no estruturado\ a composio modu"ar usada quando so imp"ementados programas grandes de sistemas comp"eLos onde m(du"os so imp"ementados independentemente\ o uso de ferramentas que a0udam a me"!orar o desempen!o dos a"goritmos+ in2estigando o ambiente dentro do qua" esto sendo eLecutados\ o uso de diferentes tipos de dados+ usados por eLemp"o para fa=er a con2erso entre diferentes representa<es de dados em ambientes !eterog#neos$ @PACHECO+?UUVA 6.2.1 MPIC/ MP4CH ; uma imp"ementao bastante popu"ar do padro MP4$ X uma bib"ioteca de a"ta performance+ bastante port1ti"+ desen2o"2ida em con0unto pe"o &aborat(rio Naciona" de Argonne e a Uni2ersidade Estadua" do Mississipi+ os quais ainda traba"!am na pesquisa e no desen2o"2imento do MP4CH buscando me"!orar seu desempen!o e sua funciona"idade$ O ob0eti2o do MP4CH ; fornecer uma imp"ementao de MP4 para p"ataformas importantes+ inc"uindo c"usters e processadores maciamente para"e"os$ A sua distribuio "i2re e sua grande portabi"idade contribu'ram para a adoo do padro MP4 pe"a comunidade de computao para"e"a$ @]A3ON4*+ et a""+ -..-A A no2a 2erso do MP4CH+ o MP4CH- ; uma imp"ementao tota"mente no2a do MP4+ foi pro0etada para possuir suporte a ap"ica<es de a"ta performance desen2o"2idas com funciona"idades dos padr<es MP4)? e MP4)-$ A";m das caracter'sticas contidas no MP4CH+ o MP4CH- inc"ui o suporte para a criao de processos dinZmicos+ opera<es co"eti2as entre comunicadores e a opera<es para"e"as de 4KO$ O MP4CH- substitui tota"mente o MP4CH+ sa"2o casos onde !1 estruturas de dados !eterog#neos @por eLemp"o+ 4nteiros com taman!os diferentes ou diferentes ordenamento de bMtesA$ O MP4CH- ainda no suporta esses sistemas+ mas esta correo est1 p"ane0ada para o fina" de -../$ @MP4CH-+-../A 6.2.2 MPIC/DG1 O MP4CH):- ; uma imp"ementao do padro MP4 que usa o Globus Toolkit para oferecer efici#ncia e transpar#ncia na eLecuo de ap"ica<es em grids !eterog#neos$ E"e ; baseado na imp"ementao MP4CH+ o que pode ser considerada uma 2antagem por ser o MP4CH 01 amp"amente desen2o"2ido e testado$ Para me"!orar seu desempen!o+ o MP4CH):- uti"i=a as suas bib"iotecas de comunicao internas enquanto for poss'2e" e apenas fa= uso da comunicao atra2;s do :"obus se os processos esti2erem em diferentes dom'nios$@ONA+-..BA Antes de iniciar uma ap"icao com MP4CH):-+ o usu1rio de2e usar o :*4 e obter uma credencia" para se autenticar$ O usu1rio pode ainda uti"i=ar o M6* para se"ecionar os computadores que sero uti"i=ados+ de acordo com a configurao e conecti2idade com a rede$ Para descre2er como os traba"!os sero eLecutados o MP4CH):- uti"i=a o 3*&$ < ESTUDOS DE CASO Como proposto+ migramos um ap"icati2o desen2o"2ido para ser eLecutado em um ambiente c"uster de modo que funcionasse corretamente em um ambiente grid$ Neste traba"!o+ estudamos basicamente tr#s formas de rea"i=ar ta" migrao$ A primeira consistiu na eLecuo de um programa desen2o"2ido para um ambiente c"uster em um ambiente grid sem a a"terao em seu c(digo$ A segunda foi a eLecuo da 2erso estruturada @mono) processadaA do ap"icati2o+ sem nen!um para"e"ismo+ remotamente pe"o grid+ fa=endo com que e"e se0a eLecutado+ por eLemp"o+ em uma m1quina com maior poder de processamento$ A terceira forma consiste em re)escre2er o programa uti"i=ando bib"iotecas especificas de um determinado ambiente grid+ o qua"+ por sua comp"eLidade+ no ser1 tota"mente imp"ementado$ Para o estudo da migrao C"uster)a:rid uti"i=amos como eLemp"o o programa desen2o"2ido pe"o professor &uciano Car"os 8rosi+ o qua" 2isa a mu"tip"icao de matri=es quadradas em ambientes distribu'dos e programao para"e"a uti"i=ando a bib"ioteca de passagem de mensagem MP4CH$ Este programa consiste+ basicamente+ em um processo mestre ou pai que distribui matri=es aos pares para os processos fi"!os$ Estes+ por sua 2e=+ fa=em a mu"tip"icao destas matri=es recebidas e en2iam ao processo mestre a matri= resu"tante$ Este processo se repete at; que reste apenas uma matri= resu"tante$ Uti"i=aremos tamb;m uma 2erso seme"!ante do programa+ mas desta 2e= desen2o"2ido de forma estruturada+ sem uti"i=ar para"e"ismo$ Os c(digos fonte destes ap"icati2os na sua integra"idade esto nos AneLo ? e - deste traba"!o$ A esco"!a da uti"i=ao destes programas de2e)se pe"o fato de terem sido desen2o"2idos para um ambiente c"uster+ onde foram testados e estudados no pro0eto de monografia submetido a Uni2ersidade do Oeste de *anta Catarina ` UNOE*C sob o tema PComparao entre bib"iotecas para processamento para"e"o com base em um c"uster eoDu"fQ pe"o ento acad#mico &uciano Car"os 8rosi$ 8rosi ainda uti"i=ou um ap"icati2o com a mesma fina"idade+ por;m desen2o"2ido com a bib"ioteca de passagem de mensagens PHM+ o qua" no ser1 estudado neste momento+ pois no encontramos na documentao suporte a essa tecno"ogia com o grid esco"!ido para a migrao$ Na esco"!a de qua" ambiente grid a ser uti"i=ado a primeira opo foi o Ourgrid+ por ser de f1ci" insta"ao+ ser desen2o"2ido por uma equipe brasi"eira e ter um futuro bastante promissor$ Ap(s a"gumas pesquisas e de con2ersar com um dos membros da equipe que o desen2o"2e conc"u'mos que a sua uti"i=ao no iria ser poss'2e"+ pois o mesmo traba"!a sobre o conceito de A:s @ag of tasFA e ainda no possui suporte ao padro MP4 ou bib"iotecas de passagem de mensagens+ o que de2er1 ser incorporado em 2ers<es futuras$ A segunda opo foi a uti"i=ao do :"obus+ o qua" possui suporte ao padro MP4+ a";m de possuir todos os recursos e ser2ios necess1rios para a eLecuo da ap"icao no ambiente grid$ A 2erso do :"obus 5oo"Fit insta"ada foi a >$-$?+ a qua" pode ser encontrada no site da Globus Alliance em !ttp%KKDDD$g"obus$org0 Esta 2erso no ; a 2erso mais atua" da ferramenta+ que encontra)se na 2erso B$L+ mas a 2erso >$-$? ; a 2erso mais est12e" e bem documentada eListente$ A";m disto+ as diferenas entre a s;rie >$L e a B$L so a"gumas no2as features que no teriam grande impacto no desen2o"2imento deste traba"!o+ por isso+ ac!amos que uti"i=ar a referida 2erso seria mais interessante$ E$? 4N*5A&ASTO 6O :&OU* 5OO&]45 Neste t(pico ; apresentado um pequeno resumo das principais tarefas necess1rias para se insta"ar o :"obus 5oo"Fit$ O guia comp"eto de insta"ao encontra)se no site da ferramenta$ Antes de iniciar a insta"ao do :"obus 5oo"Fit a"guns programas de suporte tamb;m ti2eram de ser pre2iamente insta"ados$ *o e"es+ ,a2a *6] ?$B$-+ :NU 5ar+ AN5+ ,unit e o compi"ador :CC+ os quais no sero estudados neste momento pois fogem ao escopo do traba"!o$ A insta"ao requer a criao de pe"o menos dois usu1rios a";m do usu1rio ProotQ+ o usu1rio Pglobus> para ser uti"i=ado pe"o grid e a"gum outro qua"quer+ o qua" ser1 uti"i=ado para a submisso de 0obs ao grid$ Ap(s a descompresso do arqui2o+ que pode ser obtido "i2remente em !ttp%KKDDD$g"obus$org+ uti"i=ando o usu1rio PglobusQ setamos as 2ari12eis de ambiente AN5_HOME e ,AHA_HOME e tamb;m um diret(rio para a insta"ao do :"obus na 2ari12e" :&OU*_HOME$ Neste caso essas 2ari12eis ficaram da seguinte forma% ANT_HOME=/opt/ant JAVA_HOME=/opt/java GLOBUS_LOCATION=/opt/globus Para a insta"ao do :"obus uti"i=amos os seguintes scripts% /!nstall"gt# %GLOBUS_LOCATION e /!nstall"gt#"&&j's %GLOBUS_LOCATION 7.1.1 Cia+,* de 'eti>i'a+Hes e '*)>igua+Hes de segua)+a Como estamos traba"!ando em um ambiente distribu'do+ ; necess1rio que todos os e"ementos do grid se0am identificados+ por esse moti2o todos de2em ser recon!ecidos por uma entidade certificadora$ Pode ser uti"i=ado uma entidade certificadora 01 recon!ecida ou uti"i=ar a entidade que eListe no pacote de insta"ao do :"obus$ A entidade certificadora do Globus Toolkit ; con!ecida como sim#le"A$ Esta entidade certificadora de2e ser insta"ada em apenas uma das m1quinas ou nodos do grid$ Para insta"ar o simp"eCA usamos% %GLOBUS_LOCATION/s(tup/globus/s(tup"s!&pl(")a Ento ser1 so"icitado um emai"+ ao qua" sero en2iadas as so"icita<es+ o n9mero de dias de 2ida do certificado @antes que e"e eLpireA e uma sen!a$ Para so"icitar um certificado para as m1quinas usa)se @como usu1rio ProotQA g*!+")(*t"*(,u(st "-ost lab.T/0uno)-ap()o(+ub* que criar1 os arqui2os /(t)/g*!+"s()u*!t1/-ost2(1p(& /(t)/g*!+"s()u*!t1/-ost)(*t_*(,u(stp(& /(t)/g*!+"s()u*!t1/-ost)(*tp(& e para assinar os certificados+ @com o usuario PglobusQA g*!+")a"s!gn "!n -ost)(*t_*(,u(stp(& "out -osts!gn(+p(& Co"ocando a sen!a quando so"icitada$ 3enomeia)se o arqui2o !ostsigned$pem para !ostcert$pem+ substituindo o arqui2o anterior$ Para poder inicia"i=ar ou en2iar 0obs para o :"obus ; necess1rio que cada usu1rio possua uma certificao+ que tamb;m ser1 assinada pe"a CA$ Para criar as certifica<es para os usu1rios ; usa)se o comando @como usu1rio norma"A g*!+")(*t"*(,u(st que criar1 os arqui2os /-o&(/3usua*!o4/globus/us(*2(1p(& /-o&(/3usua*!o4/globus/us(*)(*t_*(,u(stp(& /-o&(/3usua*!o4/globus/us(*)(*tp(& e para assinar os certificados+ @com o usuario PglobusQA g*!+")a"s!gn "!n us(*)(*t_*(,u(stp(& "out s!gn(+p(& Co"ocando a sen!a quando so"icitada$ 3enomeia)se o arqui2o signed$pem para usercert$pem+ substituindo o arqui2o anterior$ O pr(Limo passo ; adicionar as permiss<es para os usu1rios+ para isso cria)se o arqui2o 5/(t)/g*!+"s()u*!t1/g*!+"&ap'!l(6 como ProotQ onde adiciona)se os assuntos das certifica<es e o nome dos usu1rio+ como no eLemp"o abaiLo$ 7/O=uno)-ap()o/OU=uno)-ap()o(+ub*/CN=Usua*!o TCC7 t)) 7/O=uno)-ap()o/OU=uno)-ap()o(+ub*/CN=T(st(7 t)) 6esta forma ; feito um mapeamento entre o usu1rio do grid 87/O=uno)-ap()o/OU=uno)-ap()o(+ub*/CN=T(st(79 e o usu1rio "oca" da m1quina em questo @tccA 7.1.2 I)i'ia$iCa+,* e Su#2iss,* de K*#s Primeiramente de2emos inicia"i=ar o proLM do grid com o comando g*!+"p*o:1"!n!t ento ser1 so"icitada a sen!a correspondente a certificao do usu1rio que est1 sendo uti"i=ado para essa submisso$ Este comando ; respons12e" pe"a identificao do usu1rio no grid$ Para obter informa<es sobre o status do proLM iniciado podemos uti"i=ar o comando g*!+"p*o:1"!n'o o qua" retornara informa<es sobre status do proLM e da certificao uti"i=ada$ Para destruir um proLM iniciado uti"i=amos g*!+"p*o:1"+(st*o1 EListem duas op<es para o en2io de arqui2os 3*& para serem eLecutados no grid% /opt/&p!)-"g//b!n/&p!*un ;globus*sl 3a*,u!vo*sl4 ou globus*un ;' 3a*,u!vo*sl4 EListem ainda muitas outras formas de submisso de 0obs+ mas para este eLperimento apenas os comando acima 01 so suficientes$ E$- E*5U6O 6E CA*O ? 3ea"i=amos a migrao do programa para mu"tip"icao de matri=es uti"i=ando a bib"ioteca MP4CH+ desen2o"2ido para um ambiente c"uster para o ambiente grid sem a"terao em seu c(digo$ Como a bib"ioteca MP4CH ; uma imp"ementao do padro MP4+ para ambientes c"usters+ buscamos um ambiente grid onde fosse poss'2e" a uti"i=ao de bib"iotecas que tamb;m imp"ementassem o padro MP4$ O :"obus possui uma imp"ementao do MP4 espec'fica$ Essa imp"ementao ; o MP4CH):-$ Para podermos compi"ar e submeter programas uti"i=ando MP4CH):- ; necess1rio que e"e se0a insta"ado no :"obus$ O pacote a ser esco"!ido foi 2erso ?$-$E+ a qua" pode ser encontrada "i2remente para doDn"oad em ftp%KKftp$mcs$an"$go2KpubKmpiK$ 6epois de descompactar o arqui2o uti"i=amos os seguintes comandos para insta"ar% /)on'!gu*( "<!t-"+(v!)(=globus/="'lavo*=g))#/+bg ;p*('!:=/opt/ &p!)-"g/ e &a2(> &a2( !nstall Os programas desen2o"2idos com MP4CH):- podem ser escritos e compi"ados em 21rias "inguagens+ como 8ortran+ C+ Cbb$ Para compi"ar programas escritos em C+ como o nosso caso+ uti"i=amos o comando% /opt/&p!)-"g//b!n/&p!)) "o 3(:()utav(l4 3a*,u!vo)4 Nesse caso a compi"amos com o comando% /opt/&p!)-"g//b!n/&p!)) "o &ult&at*!? n&t:_&p!) Para esse estudo foram uti"i=ados dois computadores+ disponibi"i=ados pe"a Uni2ersidade Comunit1ria 3egiona" de C!apec( ` UNOCHAPECO+ com as seguintes configura<es% processador 4N5E& Pentium 4H >+- M!= H5\ mem(ria 3AM de C?- Mb\ interface de rede Et!ernet ?..Mb 8u"" 6up"eL\ disco r'gido de V. :b\ sistema operaciona" CentO* B$? O pr(Limo passo foi a criao do arqui2o 3*&+ o qua" ser1 respons12e" por passar as informa<es e parZmetros de eLecuo ao grid$ Para a criao do rs" o arqui2o Pmac!inesQ precisa ser criado ou copiado para o diret(rio do eLecut12e"$ Esse arqui2o cont;m os !osts das m1quinas pertencentes ao grid e o n9mero m1Limo de processos que podem eLecutar$ Configurado para estes computadores o arqui2o Pmac!ines> est? como abaixo0 7lab.T/07 /@ 7lab.T/A7 /@ Criamos o 3*&% /opt/&p!)-"g//b!n/&p!*un "+u&p*sl &ult&at*!? B0 B00 4 &ult&at*!?*sl Para a criao do arqui2o 3*& pode ser uti"i=ada a opo -dumprsl do comando mpirun, mas teremos que editar o arqui2o 3*& para adicionar a"guns parZmetros$ Os argumentos C. e C.. informam ao programa que de2ero ser mu"tip"icadas C. matri=es de taman!o C..LC..$ Como esse programa uti"i=a um processo para cada - matri=es+ e mais um que ser1 o processo mestre+ precisamos criar+ no m'nimo+ MK- b ? processos para a eLecuo do eLemp"o$ Ap(s o arqui2o 3*& ser editado e"e de2e se parecer com o seguinte% C 8 D8*(sou*)(Manag(*Conta)t=7lab.T/079 8)ount=AE9 8lab(l=7subjob 079 8jobt1p(=&p!9 8(nv!*on&(nt=8GLOBUS_FU.OC_SUBJOB_INFEG 09 8LF_LIB.A.H_IATH /opt/globus/l!b/99 8a*gu&(nts= 7B07 7B0079 8(:()utabl(=7/-o&(/t))/t(st(_&p!/&ult&at*!?79 8st+out=7/t&p/sa!+aout79 8st+(**=7/t&p/sa!+a(**79 9 8 D8*(sou*)(Manag(*Conta)t=7lab.T/A79 8)ount=A/9 8lab(l=7subjob A79 8jobt1p(=&p!9 8a*gu&(nts= 7B07 7B0079 8(nv!*on&(nt=8GLOBUS_FU.OC_SUBJOB_INFEG A9 8LF_LIB.A.H_IATH /opt/globus/l!b/99 8(:()utabl(=7gs!'tp=//lab*t/0=/JAA/-o&(/t))/t(st(_&p!/&ult&at*!?7 9 8st+out=7gs!'tp=//lab*t/0=/JAA/t&p/sa!+aout79 8st+(**=7gs!'tp=//lab*t/0=/JAA/t&p/sa!+a(**79 9 Iuadro -$ 3*& para a submisso do programa ao grid$ As "in!as 8(:()utabl(=7gs!'tp=//lab*t/0=/JAA/-o&(/t))/t(st(_&p!/&ult&at*!?79 8st+out=7gs!'tp=//lab*t/0=/JAA/t&p/sa!+aout79 8st+(**=7gs!'tp=//lab*t/0=/JAA/t&p/sa!+a(**79 indicam aos processos eLecutando na m1quina "ab35-? que o eLecut12e" e os arqui2os de sa'da encontram)se na m1quina "abrt-.$ Usando)se o protoco"o gsiftp estes processos iro buscarKgra2ar os dados nesta m1quina+ no necessitando en2iar os arqui2os atra2;s do grid+ o que poderia ser feito caso dese0ado$ Para submeter o arqui2o 3*& ao grid uti"i=amos% globus*un "' &ult&at*!?*sl ou /opt/&p!)-"g//b!n/&p!*un "globus*sl &ult!&at*!?*sl Ap(s o t;rmino da eLecuo+ contido no arqui2o /t&p/sa!+aoutK temos o resu"tado do programa en2iado+ o qua" retorna o tempo de eLecuo$ 6urante os testes os seguintes resu"tados foram 2isua"i=ados$ 4nicia"mente foi eLecutado o processamento nas duas m1quinas uti"i=ando o Ferne" norma" do *O$ O resu"tado do processamento demorou ?C. segundos$ Ap(s+ foi no2amente eLecutado o ap"icati2o+ mas usando)se o Ferne" *MP do *O+ o que diminuiu o tempo de processamento para aproLimadamente ?.. segundos$ Apesar deste traba"!o no se propor a fa=er compara<es de desempen!o+ este fato demonstra que aumentando) se os processadores das m1quinas pertencentes ao grid o para"e"ismo do processamento aumentaria a performance fina"$ E$> E*5U6O 6E CA*O - ELecutamos um programa remotamente pe"o grid+ possibi"itando que este se0a eLecutado+ por eLemp"o+ em um computador com maior capacidade computaciona"+ de forma transparente para o usu1rio$ Para este estudo compi"amos o programa monoprocessado com um compi"ador da "inguagem C disponi2e"$ g)) "o &onop*o)(ssa+o n&t:) Podemos eLecutar um programa remotamente pe"o grid de 21rias maneiras+ abaiLo a"gumas de"as$ globus"job"*un 3-ost4 3(:()utav(l4 ou globus"job"sub&!t 3-ost4 3(:()utav(l4 e para 2er a saida do 0ob en2iado por g"obus)0ob)submit usamos globus"job"g(t"output "out 3jobIF4 por n(s uti"i=adas da seguinte forma% globus"job"*un lab.T/0 gs!'tp=//lab.T/A=/JAA/-o&(/t))/t(st(_&p!/ &onop*o)(ssa+o B0 B00 e globus"job"sub&!t lab.T/0 gs!'tp=//lab.T/A=/JAA/-o&(/t))/ t(st(_&p!/&onop*o)(ssa+o B0 B00 globus"job"g(t"output "out -ttps=//lab*t/0uno)-ap()o(+ub*= ##/E//BAL#/AAEMJA/LM0/ Ainda podemos criar um arqui2o 3*& e submet#)"o uti"i=ando o comando Pg"obusrunQ como abaiLo$ globus*un "' &onop*o)(ssa+o*sl sendo que o arqui2o Pmonoprocessado$rs"Q contin!a as seguintes "in!as% C 8 D8*(sou*)(Manag(*Conta)t=7lab*t/079 8)ount=A9 8lab(l=7subjob 079 8(nv!*on&(nt=8GLOBUS_FU.OC_SUBJOB_INFEG 09 8LF_LIB.A.H_IATH /opt/globus/l!b/99 8a*gu&(nts=7A07 7A0079 8(:()utabl(=7gs!'tp=//lab.T/A=/JAA/-o&(/t))/t(st(_&p!/ &onop*o)(ssa+o79 8st+out=7gs!'tp=//lab.T/A=/JAA/-o&(/t))/t(st(_&p!/ &onop*o)(ssa+oout79 9 EListem ainda a"guns 0obmanagers que possuem a"gumas funciona"idades eLtras para ambientes !eterog#neos+ onde+ por eLemp"o+ podemos e esco"!er onde o programa ir1 ser eLecutado atra2;s de restri<es co"ocadas no 3*&$ Umas destas funciona"idades so os parZmetros P!ost_tMpesQ e PmemorMQ que especificam um ou mais grupos de nodos baseados em suas propriedades$ EL% 8-ost_t1p(s=6!a@E")o&put(6 5!a#/")o&put(69 8&(&o*14=A/J9 No primeiro parZmetro especificamos a arquitetura uti"i=ada @>- ou /B bitsA+ enquanto no segundo restringimos a eLecuo a nodos que possuam ?-V Mb ou mais de mem(ria 3AM dispon'2e"$ E$B E*5U6O 6E CA*O > Nesse estudo de caso+ que tem por fina"idade apenas dar uma 2iso gera"+ mostramos uma das formas de fa=er a migrao do ap"icati2o de mu"tip"icao de matri=es uti"i=ando as bib"iotecas nati2as do :"obus+ sem o auLi"io de outras bib"iotecas como o MP4 ou PHM$ Essa operao eLige que o programa se0a tota"mente re)escrito+ pois no encontramos na documentao do :"obus fun<es que ti2essem as mesmas fina"idades ou funciona"idades das empregadas na construo do programa uti"i=ando o padro MP4 ou outro qua"quer de passagem de mensagens$ Mostramos aqui um pseudoc(digo de como ficaria esse programa e quais as fun<es que poderiam ser uti"i=adas na sua imp"ementao$ Essas fun<es fa=em parte das bib"iotecas do :"obus 5oo"Fit >$-$?$ O programa seria "itera"mente di2idido em dois+ um que seria o programa pai+ respons12e" pe"a distribuio e concentrao das matri=es+ esco"!a dos !osts ou nodos a serem uti"i=ados e pe"a submisso dos processos fi"!os ao grid$ O outro+ o programa fi"!o+ seria respons12e" pe"a mu"tip"icao das matri=es+ e o seu en2io ao processo pai$ Esse programa fi"!o seria eLecutado em cada !ost uti"i=ado e geraria t!reads+ conforme o necess1rio+ para rea"i=ar a mu"tip"icao de forma para"e"a$ Para a troca de dados entre o programa pai e os programas fi"!os seria uti"i=ado o sistema de arqui2o+ onde os dados seriam arma=enados e en2iados ao destino$ Esta operao de transfer#ncia de dados atra2;s de arqui2os deiLaria a eLecuo mais "enta+ por possuir opera<es de "eitura e escrita no disco r'gido$ Mas como sero poucas no in2iabi"i=ariam a sua uti"i=ao$ AbaiLo temos o pseudoc(digo de como seria o programa Pai ou *er2idor$ I*o)(+!&(nto &a!n8Da*g) Da*gv9 N t(&po!n!)!al=-o*a> L(*A*,u!voCo&Hosts8-ostsOP9> //l(!tu*a +o a*,u!vo &a)-!n(s *(to*nan+o no v(to* -osts Cal)ula*QuantasMat*!?(sIo*Host89> //,uantas &at*!?(s s(*Ro (:()uta+as (& )a+a -ost G(*a*A*,u!voF(Con'89> /Ssalva* (& a*,u!vo o NT&(*o +( &at*!?(s po* -ost ( o Host ,u( (stU o p*o)(sso pa! ( o no&( +o a*,u!vo on+( (l( )olo)a*a o *(sulta+oS/ (n,uanto8nu&(*oMat*!?(s 4 A9 N pa*a )ont = A atV )ont 4= Nu&(*oHosts 'aWa N Env!aA*,u!voIa*aHost8a*,u!voK-ostO)ontP9> /S(nv!a* o a*,u!vo )o& as )on'!gu*aWX(sS/ Sub&(t(*I*og*a&a8I*og*a&aY!l-oK -ostO)ontP9> /Ssub&(t( o p*og*a&a Y!l-o pa*a os no+osS/ Z'!&pa*a pa*a )ont = A atV )ont 4= Nu&(*oHosts 'aWa N (n,uanto8status[=\FONE\9 N status=I(ga*Status8-ostO)ontP9> //(sp(*a* os p*o)(ssos a)aba*(& s( 8status==\YAIL\9(ntaoN '!nal!?a89>Z Z'!& (n,uanto Z'!&pa*a nu&(*oMat*!?=Cal)ulaNu&(*oMat*!?89> // *()al)ula* ,uantas &at*!?(s sob*a*a& G(*aCon'Ia*a.((nv!o89>/Sp(ga o no&( +os a*,u!vos )o& as &at*!?(s *(to*noS/ Z'!&(n,uanto t(&po'!nal=-o*a> I&p*!&(.(sulta+o8t(&po!n!)!alKt(&po'!nal9> Z'!&p*og*a&a Iuadro >$ Pseudoc(digo do programa Pai ou *er2idor$ No quadro seguinte 2emos como seria o pseudoc(digo do programa 8i"!o$ I*o)(+!&(nto &a!n89 N L(*A*,u!voCon'89>//va! l(* o a*,u!vo )on' *()(b!+o ( s(ta* as va*!av(!s (n,uanto 8N&at*!?(s 4 A9 N pa*a )ont=A atV N&at*!?(s// 'aWa N T*avaT-*(a+89> Esp(*aCon+!)aoT-*(a+8)on+!)ao9> In!)!al!?aMat*!?8&at*!?A9> /Ss( 'o* a p*!&(!*a v(? !n!)!al!?aK s(nao p(ga a &at*!? *()(b!+aS/ In!)!al!?aMat*!?8&at*!?/9> L!b(*aT*avaT-*(a+89> C*!aT-*(a+89> In!)!al!?aT-*(a+8t-*(a+O)ontPK&ult!pl!)a8&at*!?AK&at*!?/K D*(sulta+oO)ontP99//!n!)!al!?a a t-*(a+ Z'!&pa*a N&at*!?(s=N&at*!?(s//> Z'!&(n,uanto Env!aMat*!?.(sultant(89>//(nv!a* &at*!? *(sultant( ao p*o)(sso pa! Z I*o)(+!&(nto &ult!pl!)a8&at*!?AK&at*!/KS*(sulta+o9 N T*avaT-*(a+89> &at*!?AAu: = &at*!?A> //v(to* au:!l!a* pa*a po+(* l!b(*a* pa*a out*a t-*(a+ )o&(Wa* a l(* a sua &at*!? &at*!?/Au: = &at*!?/> L!b(*aCon+!)ao8)on+!)ao9> *(sulta+o=)al)ula8&at*!?AAu:K&at*!?/Au:9> L!b(*aT*avaT-*(a+89> Z Iuadro B$ Pseudoc(digo do programa 8i"!o Uma das formas de desen2o"2imento das fun<es uti"i=adas nesse pseudo)c(digo+ seria a uti"i=ao da AP4 g"obus)"ibc dispon'2e" no :"obus 5oo"Fit$ E"a ; a 2erso da bib"ioteca "ibc comum adaptada para o ambiente :"obus$ Essa AP4 fornece 21rias ferramentas para assegurar t!read)safetM e portabi"idade para opera<es de 4KO de arqui2os+ a"ocao de mem(ria e outras fun<es imp"ementadas na "ibc comum$ Poder'amos+ por eLemp"o+ uti"i=ar a funo globus_l!b)_op(n89 para abrir arqui2os e globus_l!b)_'p*!nt'89 para escre2er ne"es$ As fun<es globus_l!b)_&allo)89 ( globus_l!b)_*(allo)89 para o a"ocamento de mem(ria$ Para a uti"i=ao de t!reads o :"obus possui a AP4 :"obus_t!read+ que possui as fun<es necess1rias para a criao+ sincroni=ao e fina"i=ao de t!reads$ Essas fun<es inc"uiriam globus_t-*(a+_)*(at(89K globus_t-*(a+_+(st*o189K globus_&ut(:_lo)289 K globus_&ut(:_unlo)289K globus_)on+_<a!t89K globus_)on+_s!gnal89 entre outras$ A troca de dados entre o programa pai @ser2idorA e os programas fi"!os+ que estariam espa"!ados pe"os !osts+ poderia ser feita de 21rias formas+ pois no :"obus podemos uti"i=ar 21rios protoco"os para o en2io de arqui2os como 85P+ 5CP+ H55P e H55P*$ As AP4cs uti"i=adas dependeriam do protoco"o a ser usado$ A AP4 g"obus_g"ass ; de f1ci" uti"i=ao e ; baseada nos protoco"os H55P e H55P*+ 01 a AP4 g"obus_ftp+ baseada no :rid85P+ ; muito mais poderosa em recursos+ mas sua uti"i=ao ; um pouco mais comp"icada$ Podemos ainda uti"i=ar a AP4 g"obus_io que fa= uso do protoco"o 5CP com socFets$ 5 CONSIDERAOES FINAIS Ao decorrer deste traba"!o estudamos 21rias formas de computao distribu'da e para"e"a$ Um dos paradigmas de programao mais popu"ares para estes sistemas ; o baseado em troca de mensagens entre os processos$ Abordamos tamb;m os conceitos que en2o"2em os ambientes c"usters e grids computacionais+ mostrando suas principais caracter'sticas$ Atra2;s deste estudo+ definimos as tecno"ogias que foram uti"i=adas$ O :"obus foi o ambiente grid esco"!ido por possuir todas as funciona"idades necess1rias para a rea"i=ao dos tr#s estudos de caso$ O padro de troca de mensagens MP4 foi esco"!ido por ter uma grande documentao e por possuir grande faci"idade para a migrao de ap"icati2os entre as suas imp"ementa<es+ como foi o caso do MP4CH que ; uma imp"ementao do MP4 para um ambiente c"uster e o MP4CH):- que ; uma imp"ementao do MP4 para ambientes grids+ como os dois seguem o mesmo padro+ s 2e=es apenas uma recompi"ao dos c(digos com a no2a bib"ioteca 01 basta$ Uma grande dificu"dade encontrada foi a insta"ao e a configurao do :"obus 5oo"Fit+ a";m de ser pouco documentada+ foram encontrados 21rios erros e incompatibi"idades na insta"ao$ Conc"u'mos que a migrao de um ap"icati2o desen2o"2ido para um ambiente c"uster para um ambiente grid+ apesar de poss'2e" e ocorrer sem grandes prob"emas+ nem sempre ; 2anta0osa$ 4sto depende muito da ap"icao de ser1 migrada$ Ambientes c"usters se destacam pe"a a"ta)performance+ e por isso+ so mais indicados ap"ica<es onde !1 grande processamento+ muita comunicao entre os processos+ ou um enorme 2o"ume de dados a serem processados$ ,1 em um ambiente grid+ de2ido a restri<es na comunicao entre as esta<es+ que podem estar distribu'das pe"o mundo+ ap"ica<es baseadas em O5@ag of 5asFsA so as mais indicadas por possu'rem pouqu'ssima ou nen!uma comunicao entre seus processos$ Em contrapartida+ um ambiente grid ; mais democr1tico+ todos que esto doando seu poder computaciona" tem direito de uti"i=arem o grid quando necessitarem$ Nos estudos de caso foi poss'2e" 2erificar que a migrao de ap"icati2os de ambientes c"usters para ambientes grids ; faci"mente conseguida quando seguimos um determinado padro+ nesse caso o MP4$ Iuando no uti"i=amos+ !1 um aumento consider12e" de dificu"dade na imp"ementao+ pois o ap"icati2o teria que ser tota"mente reescrito uti"i=ando as bib"iotecas especificas de cada ambiente$ 5amb;m 2erificamos a possibi"idade da eLecuo de um programa remotamente pe"o grid+ o que poderia ser uma a"ternati2a na busca de maior poder de processamento$ Como traba"!os futuros podemos sugerir% rea"i=ao de um prot(tipo que uti"i=e apenas as bib"iotecas nati2as do :"obus 5oo"Fit ou fa=endo um estudo direcionado a uti"i=ao de Jebser2ices no ambiente :"obus$ rea"i=ar um estudo sobre as formas de migrao entre os ambientes grids+ ou se0a+ ap"icati2os desen2o"2idos para o :"obus+ serem eLecutados em outro ambiente+ como o Ourgrid$ @ REFERANCIAS ONA+ &uis Car"os E$ de$ /L4eGidM U2a P$ata>*2a Disti#uida e C*)>ia"e$ 4aa a C*24uta+,* e2 Gade$ 5ese para obteno do grau de 6outor ` Coordenao de P(s) :raduao em Engen!aria E";trica e 4nform1tica 4ndustria"+ Centro de Educao 5ecno"ogica do Paran1+ Curitiba+ -..B$ UENO+ Andr;$ I)t*du+,* a* P*'essa2e)t* Paa$e$* e a* Us* de C$ustes de N*;stati*)s e2 Siste2as GNUOLINUX! 8"orian(po"is% Uni2ersidade 8edera" de *anta Catarina+ -..-$ CHE6E+ Ce=ar 5aurion$ Gid C*24uti)gM u2 )*"* 4aadig2a '*24uta'i*)a$! 3io de 0aneiro% rasport+-..B$ 6AN5A*+ M+ A&&EMAN6+ ,$ e PA**O*+ &$ A) E"a$uati*) *> g$*#us a)d Legi*) S*>tFae E)"i*)2e)ts! 6ispon'2e" em% d!ttp%KK!pcs-..>$ccs$us!erbrooFe$caKpapersK6antas_.?$pdf$ a$ Acesso em%?. Out$ -..C$ 8E33E43A+ &uis+ et a""$ RedB**; D Gid C*24uti)g i) Resea'= a)d Edu'ati*)$ 4M Corporation+-..Ca$ 6ispon'2e" em% d!ttp%KKDDD$ibm$com$brKredbooFsa$ Acesso em% ?C Out$ -..C$ 8E33E43A+ &uis+ et a""$ RedB**; D Gid C*24uti)gP P*du'ts a)d Se"i'es$ 4M Corporation+-..Cb$ 6ispon'2e" em% d!ttp%KKDDD$ibm$com$brKredboo"sa Acesso em% -> *et$ -..C$ 8E33E43A+ &uis+ et a""$ RedB**; D I)t*du'ti*) t* Gid C*24uti)g Fit= G$*#us$ 4M Corporation+-..>$ 6isponi2e" em% d!ttp%KKDDD$ibm$com$brKredboo"sa$ Acesso em% ?C Out$ -..C$ 8O36+ Egan+ et a""$ RedB**; D Bui$di)g a Li)u% /PC C$uste Fit= %CAT$ 4M Corporation+-..-$ 6isponi2e" em% d!ttp%KKDDD$ibm$com$brKredboo"sa$ Acesso em% ?C Out de -..C$ 8O*5E3+ 4an+ ]E**E&MAN+ Car"$ G$*#usM A Meta'*24uti)g I)>astu'tue T**$;it! *d$ 6ispon'2e" em% dftp%KKftp$g"obus$orgKpubKg"obusKpapersKg"obus$pdfa$ Acesso em% .C de No2$ -..C$ 8O*5E3+ 4an$ C*24utati*)a$ Gids! 6ispon'2e" em% d!ttp%KKDDD$g"obus$orgKresearc!KpapersKc!apter-$pdfa$ Acesso em -U *et$ -..C$ 83O*4+ &uciano Car"os$ C*24aa+,* e)te #i#$i*te'as 4aa 4*'essa2e)t* 4aa$e$* '*2 #ase e2 u2 '$uste Be*Fu$>$ Monografia @ac!are" em Ci#ncia da ComputaoA ` Centro de 5ecno"ogico+ Uni2ersidade do Oeste de *anta Catarina+ C!apec(+ -...$ :ONSA&HE*+ Pau"o 3oberto$PA64&HA+ 5!ere=a P$ P$ C*)'eit*s e I24$e2e)ta+,* de u2 Siste2a C*)'*e)te Oie)tad* a O#Ket*! -..?$ 6ispon'2e" em d !ttp%KKDDD$u"bra) to$brKensinoKB>.-.KartigosKanais-..-KEncoinfo-..-K*istema_Concorrente$pdfa Acesso em ./ 0un$ -../$ ]A3ON4*+ Nic!o"as 5+ et a""$ MPIC/DG1M A GidDE)a#$ed I24$e2e)tati*) *> t=e Message Passi)g I)te>a'e$ &aboratorio Naciona" de Argonne +-..-$ 6isponi2e" em% d!ttp%KKDDD$ibm$com$brKredboo"sa$ Acesso em% -. Abr$ -../$ &AU*CHNE3+ &aura$ A2#ie)tes de eDS'ie)se e a E"*$u+,* d*s PadHes de AQuitetua de C*24uta+,* e2 Gade! -..C$ 6ispon'2e" em% d!ttp%KKDDD)di$inf$puc) rio$brKeend"erKsem:*6KmonografiasKtanara)"ausc!ner$pdfa Acesso em% ?. No2$ -..C$ &U:A3RO+ :ui"!erme 5$ O$ MPI B A i)te>a'e de 4assage)s de Me)sage)s! -..>$ 6ispon'2e" em d !ttp%KKsocrates$if$usp$brKeguiocK&ibrarMKMP4$pdf a Acesso em ?. Abri"$ -../$ ME3]E^+ P!i"$ Be*Fu$> /ist*L! 6ispon'2e" em% d!ttp%KKDDD$beoDu"f$orgKo2er2ieDK!istorM$!tm"a Acesso em% ?C set$ -..C M4NE55O+ E"ton &$ P*tais de gids '*24uta'i*)ais$ Monografia @Especia"ista em Ci#ncia da ComputaoA ` Centro 5ecno"(gico+ Uni2ersidade 8edera" de *anta Catarina+ 8"orianopo"is+ -..C$ MP4CH-$ 6ispon'2e" em%d !ttp%KKDDD)uniL$mcs$an"$go2KmpiKmpic!Ka Acesso em% ?. Abr$ -../ OURGRID 6!? USER MANUAL$ Uni2ersidade 8edera" de Campina :rande+-..B$ 6ispon'2e" em% d!ttp%KKdragao$"sd$ufcg$edu$brKtDiFi)pub"icKpubKOur:ridKOur6ocumentationKmanua"_>$.$ pd fa$ Acesso em ?V No2$ -..C$ PACHECO+ Peter *$ A UseRs Guide t* MPI! ?UUV$ 6ispon'2e" em d !ttp%KKneLus$cs$usfca$eduKmpiK a Acesso em -. Mar$ -../$ P45AN:A+ Marcos$ C*24uta+,* e2 C$usteM * estad* da ate da '*24uta+,*$ 3io de ,aneiro% rasport+-..>$ P45AN:A+ Marcos$ C*)stui)d* Su4e'*24utad*es '*2 Li)u%$ 3io de 0aneiro% rasport+-..-$ *O5OMA^O3+ or0a$ OGSAOOGSIP NSRF e G$*#us! -..B$ 6ispon'2e" em d!ttp%KKpeop"e$cs$uc!icago$eduKebor0aK"ecturesKtoDards_ser2ice_oriented_grid$pdf$ a Acesso em ?C No2$ -..C$ *IU^3E*+ ,eff$ MPI Me'=a)i'! 6ispon'2e" em% !ttp%KKcD$squMres$comK$ Acesso em No2embro de -..C *5A&&4N:*+ Ji""ian$ O4eati)g SLste2sM I)te)a$s a)d Desig) Pi)'i4$es$ NeD ,erseM% Prentice Ha""+ ?UUV$ 5ANENAUM+ AndreD *$ Disti#uted O4eati)g SLste)s! NeD ,erseM% Prentice Ha""+?UUC 5ANENAUM+ AndreD *$ Siste2as *4ea'i*)ais 2*de)*s$ -ed$ *o Pau"o% Prentice Ha""+ -..>$ 5HE :&OU*WA&&4ANCE$ 6ispon'2e" em%d!ttp%KKDDD$g"obus$orga Acesso em% ?- No2$ -..C (? ANEXOS ?.$? ANEGO 4 ` CO64:O 8ON5E 6O P3O:3AMA 6E MU&54P&4CASTO 6E MA534RE* U54&4RAN6O MP4 /S Mult!pl!)aWRo +( n &at*!?(s ,ua+*a+as +( o*+(& & G & (& s!st(&as &ult!p*o)(ssa+os usan+o a b!bl!ot()a +( p*o)(ssa&(nto pa*al(lo MIICH As n &at*!?(s sRo +!v!+as (& p p*o)(ssos 8+uas a +uas9K os ,ua!s )al)ula& s(u p*o+uto ( o *(to*na& ao p*o)(sso S(*v!+o* Est( ago*a possu! n// &at*!?(s ( *(p(t( (st(s passos atV *(sta* ap(nas u&a &at*!? *(sultant( F(s(nvolv!+o po* Lu)!ano Ca*los Y*os! S/ /S S T-!s p*og*a& !s '*(( so't<a*(> 1ou )an *(+!st*!but( !t an+/o* &o+!'1 S !t un+(* t-( t(*&s o' t-( GNU G(n(*al Iubl!) L!)(ns( as publ!s-(+ b1 S t-( Y*(( So't<a*( Youn+at!on> (!t-(* v(*s!on / o' t-( L!)(ns(K o* S 8at 1ou* opt!on9 an1 lat(* v(*s!on S S T-!s p*og*a& !s +!st*!but(+ !n t-( -op( t-at !t <!ll b( us('ulK S but ]ITHOUT ANH ]A..ANTH> <!t-out (v(n t-( !&pl!(+ <a**ant1 o' S ME.CHANTABILITH o* YITNESS YO. A IA.TICULA. IU.IOSE S(( t-( S GNU L!b*a*1 G(n(*al Iubl!) L!)(ns( 'o* &o*( +(ta!ls S/ ^!n)lu+( 3st+!o-4 ^!n)lu+( 3t!&(-4 ^!n)lu+( 7&p!-7 ^+('!n( MAGNMTG B0 // NT&(*o &U:!&o +( p*o)(ssos ^+('!n( MAG.O] B00 // O*+(& &U:!&a +( u&a &at*!? ^+('!n( YMSGTAG / // Tag &(nsag(n '!l-os p/ Ia! ^+('!n( IMSGTAG AA // Tag &(nsag(& Ia! p/ '!l-os // YunWX(s pa*a !n!)!al!?a* &at*!?(s vo!+ !n!t&t:8+oubl( S&at*!:K !nt &K !nt n&t:9> // YunWX(s s(*v!+o* ( )l!(nt( *(sp()t!va&(nt( !nt g(*a8+oubl( S&at*!:K !nt &K !nt n&t:K !nt &1!+9> !nt *()(b(8!nt &1!+9> !nt &a!n8!nt a*g) K )-a* Sa*gvOP9 N !nt n&t:> // Nu&(*o +( &at*!?(s a g(*a* !nt &> // O*+(& +a &at*!? +oubl( S&at*!:> // Iont(!*o pa*a o v(to* +( &at*!?(s !nt !K jK 2K )AK )/K )#K 'lagK t&pK *(s> t!&(_t sta*tK (n+> // Va*!Uv(!s p/ )Ul)ulo +( t(&po +( p*o)(ssa&(nto )-a* p*o)(sso*_na&(OMII_MAG_I.OCESSO._NAMEP> !nt nu&_p*o)(ssK &1!+K na&(l(n> MII_Status status> MII_In!t8Da*g)K Da*gv9> MII_Co&&_s!?(8MII_COMM_]O.LFK Dnu&_p*o)(ss9> MII_Co&&_*an28MII_COMM_]O.LFK D&1!+9> MII_G(t_p*o)(sso*_na&(8p*o)(sso*_na&(K Dna&(l(n9>
// .()up(*a pa*_&(t*os passa+os ao p*og*a&a ( v(*!'!)a // s( os &(s&os sRo l(ga!s Ta&bV& v(*!'!)a s( nT&(*o +( // p*o)(ssos !n'o*&a+os na l!n-a +( )o&an+o )on+!? )o& a *(al!+a+( +o p*og*a&a !' 8a*g) == #9 N n&t: = ato!8a*gvOAP9> & = ato!8a*gvO/P9> Z (ls( N p*!nt'87`nS!nta:(= as nu&"&at*!?(s o*+(&`n7K a*gvO0P9> MII_Abo*t8MII_COMM_]O.LFK A9> *(tu*n8"A9> Z !' 88& 3 A bb & 4 MAG.O]9 bb 8n&t: 3 / bb n&t: 4 MAGNMTG99 N p*!nt'87`nIa*_&(t*os (:)(+!+os`n79> MII_Abo*t8MII_COMM_]O.LFK A9> *(tu*n8"A9> Z t&p = 8n&t://9CA> !' 8nu&_p*o)(ss 3 t&p9 N p*!nt'87`nNT&(*o +( p*o)(ssos nRo )o(*(nt(= a+`n 7K nu&_p*o)(ss9> MII_Abo*t8MII_COMM_]O.LFK A9> *(tu*n8"A9> Z
// Alo)a &(&c*!a pa*a &at*!: &at*!: = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&Sn&t:9> !' 8[&at*!:9 N p*!nt'87`nS(& &(&c*!a[`n79> '*((8&at*!:9> MII_Abo*t8MII_COMM_]O.LFK A9> *(tu*n8"A9> Z
// In!)!al!?a &at*!?(s !n!t&t:8&at*!:K &K n&t:9>
// G(*a '!l-os g(*a8&at*!:K &K n&t:K &1!+9>
// Y!nal!?a t(&po +( p*o)(ssa&(nto (n+ = t!&(8NULL9> p*!nt'87`n`nas L(vou a0' s(gun+os pa*a )on)lu!*`n7K a*gvO0PK +!''t!&(8(n+K sta*t99> // L!b(*aWRo +( &(&c*!a alo)a+a p(lo p*o)(sso s(*v!+o* '*((8&at*!:9> Z // Sou u& '!l-o (ls( N +o *(s = *()(b(8&1!+9> <-!l( 8*(s9> Z MII_Y!nal!?(89> *(tu*n809> Z // In!)!al!?a o v(to* +( &at*!?(s vo!+ !n!t&t:8+oubl( S&at*!:K !nt &K !nt n&t:9 N !nt !> 'o*8!=0> !38&S&Sn&t:9> !CC9 &at*!:O!P = AB> Z // F!st*!bu! ( *()(b( &at*!?(s na *(+( +( &U,u!nas !nt g(*a8+oubl( S&at*!:K !nt &K !nt n&t:K !nt &1!+9 N +oubl( v(tOMAG.O]SMAG.O]P> +oubl( Sv(tsK Sv(t*> // V(to*(s au:!l!a*(s !nt !K jK 2K )ountK <-o> !nt lastK n'!l-osK )AK )/K )#> MII_Status status> v(ts = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&9> v(t* = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&9> // S( nT&(*o +( &at*!?(s V d&pa*K &ult!pl!)a Tlt!&a &at*!? +o v(to* // p(la p*!&(!*a &at*!? +o v(to* +( &at*!?(s !' 8n&t: a /9 N last = 8n&t:S&S&9"8&S&9> 'o* 8!=0> !3&S&> !CC9 N v(t*O!P = &at*!:O!P> v(tsO!P = &at*!:O!ClastP> Z )A = 0> )/ = 0> )# = 0> 'o* 8!=0> !3&> !CC9 N 'o* 8j=0> j3&> jCC9 N &at*!:O)#P = 0> 'o* 82=0> 23&> 2CC9 N &at*!:O)#P C= v(t*O2C)AP S v(tsOjC)/P> )/ C= &>
Z )/ = 0> )#CC> Z )A C= &> Z Z n'!l-os = n&t://> +o N )ount = 0> <-o = A> 'o* 8!=0> !3n'!l-os> !CC9 N 'o* 8j=0> j3/> jCC9 N 'o* 82=0> 23&S&> 2CC9 N v(tO2P = &at*!:O2C)ountP> Z MII_S(n+8D&K AK MII_INTK &1!+C<-oK IMSGTAGK MII_COMM_]O.LF9> MII_S(n+8Dn'!l-osK AK MII_INTK &1!+C<-oK IMSGTAGK MII_COMM_]O.LF9> MII_S(n+8v(tK &S&K MII_FOUBLEK &1!+C<-oK IMSGTAGK MII_COMM_]O.LF9> )ount C= &S&> Z <-oCC> Z // Agua*+o *(sposta +os '!l-os )ount = 0> 'o* 8!=0> !3n'!l-os> !CC9 N MII_.()v8v(tK &S&K MII_FOUBLEK MII_ANH_SOU.CEK YMSGTAGK MII_COMM_]O.LFK Dstatus9> 'o* 8j=0> j3&S&> jCC9 N &at*!:OjC)ountP = v(tOjP> Z )ount C= &S&> Z // S( nT&(*o +( '!l-os g(*a+os n(sta g(*aWRo 'o! d&pa*K (ntRo -U u& nT&(*o // d&pa* +( &at*!?(s Est( !' t(sta (sta )on+!WRo ( s( v(*+a+( 'a? Tlt!&a &at*!? // +o v(to* +( &at*!?(s v(?(s Ae &at*!? ( a*&a?(na *(sulta+o na Ae &at*!? !' 8n'!l-os a / DD n'!l-os 4 A9 N last = )ount " &S&> 'o* 8!=0> !3&S&> !CC9 N v(t*O!P = &at*!:O!P> v(tsO!P = &at*!:O!ClastP> Z )A = 0> )/ = 0> )# = 0> 'o* 8!=0> !3&> !CC9 N 'o* 8j=0> j3&> jCC9 N &at*!:O)#P = 0> 'o* 82=0> 23&> 2CC9 N &at*!:O)#P C= v(t*O2C)AP S v(tsOjC)/P> )/ C= &>
Z )/ = 0> )#CC> Z )A C= &> Z Z // CUl)ula nT&(*o +( '!l-os +a p*c:!&a g(*aWRo n'!l-os = n'!l-os//> Z <-!l(8n'!l-os 4 09> *(tu*n809> Z // E'(tua )Ul)ulos sob*( &at*!?(s *()(b!+as +o p*o)(sso s(*v!+o* !nt *()(b(8!nt &1!+9 N !nt !K jK 2K )AK )/K )#K &K n'!l-os> +oubl( v(tsOMAG.O]SMAG.O]P> +oubl( v(t*OMAG.O]SMAG.O]P> +oubl( v(tOMAG.O]SMAG.O]P> MII_Status status> 'o*8!=0> !3/> !CC9 N MII_.()v8D&K AK MII_INTK 0K IMSGTAGK MII_COMM_]O.LFK Dstatus9> MII_.()v8Dn'!l-osK AK MII_INTK 0K IMSGTAGK MII_COMM_]O.LFK Dstatus9> !' 8! == 09 MII_.()v8v(tsK &S&K MII_FOUBLEK 0K IMSGTAGK MII_COMM_]O.LFK Dstatus9> (ls( MII_.()v8v(t*K &S&K MII_FOUBLEK 0K IMSGTAGK MII_COMM_]O.LFK Dstatus9> Z // Mult!pl!)a as +uas &at*!?(s *()(b!+as +( &1!+ 0> )A = 0> )/ = 0> )# = 0> 'o* 8!=0> !3&> !CC9 N 'o* 8j=0> j3&> jCC9 N v(tO)#P = 0> 'o* 82=0> 23&> 2CC9 N v(tO)#P C= v(tsO2C)AP S v(t*OjC)/P> )/ C= &>
Z )/ = 0> )#CC> Z )A C= &> Z // Env!a a &at*!? *(sultant( +( volta ao p*o)(sso s(*v!+o* MII_S(n+8v(tK &S&K MII_FOUBLEK 0K YMSGTAGK MII_COMM_]O.LF9> // S( &(u &1!+ 'o* &a!o* ,u( nT&(*o +( '!l-os +a p*c:!&a g(*aWRoK (ntRo // posso su!)!+a*"&( !' 8n'!l-os// 3 &1!+9 *(tu*n809> (ls( *(tu*n8A9> Z Iuadro C$ C(digo fonte programa de mu"tip"icao de matri=es com MP4 ?.$- ANEGO 44 ) CO64:O 8ON5E 6O P3O:3AMA 6E MU&54P&4CASTO 6E MA534RE* *EM U54&4RA3 PA3A&E&4*MO /S Mult!pl!)aWRo +( n nat*!?(s ,ua+*a+as +( o*+(& & G & (& s!st(&as &onop*o)(ssa+os F(s(nvolv!+o po* Lu)!ano Ca*los Y*os! S/ ^!n)lu+( 3st+!o-4 ^!n)lu+( 3t!&(-4 ^+('!n( MAGNMTG B0 // NT&(*o &U:!&o +( p*o)(ssos ^+('!n( MAG.O] B00 // O*+(& &U:!&a +( u&a &at*!? !nt !n!t&at*!:8+oubl( S&at*!:K !nt n&t:K !nt &9> !nt )al)ula8+oubl( S&at*!:K !nt n&t:K !nt &9> !nt &a!n8!nt a*g)K )-a* Sa*gvOP9 N !nt n&t:> !nt &> !nt !K jK 2K *(s> +oubl( S&at*!:> t!&(_t sta*tK (n+> sta*t = t!&(8NULL9> !' 8a*g) == #9 N n&t: = ato!8a*gvOAP9> & = ato!8a*gvO/P9> Z (ls( N p*!nt'87`nS!nta:(= a*gvO0P ^&at*!?(s o*+(&`n79> *(tu*n8"A9> Z !' 88n&t: 3 A bb n&t: 4 MAGNMTG9 bb 8& 3 A bb & 4 MAG.O]99 N p*!nt'87`nValo*(s (:)(+!+os`n79> *(tu*n8"A9> Z &at*!: = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&Sn&t:9> !' 8[&at*!:9 N p*!nt'87`nS(& &(&c*!a[`n79> '*((8&at*!:9> *(tu*n8"A9> Z
*(s = !n!t&at*!:8&at*!:K n&t:K &9> *(s = )al)ula8&at*!:K n&t:K &9> (n+ = t!&(8NULL9> p*!nt'87`nas l(vou a0' s(gun+os= `n7K a*gvO0PK +!''t!&(8(n+K sta*t99> p*!nt'87`na/l'`n7K &at*!:O0P9> '*((8&at*!:9> *(tu*n809> Z !nt !n!t&at*!:8+oubl( S&at*!:K !nt n&t:K !nt &9 N !nt !K ta&> ta& = &S&Sn&t:> 'o*8!=0> !3ta&> !CC9 &at*!:O!P = AB> *(tu*n809> Z !nt )al)ula8+oubl( S&at*!:K !nt n&t:K !nt &9 N !nt !K jK 2K )AK )/K )#K lK 'lagK )ount> +oubl( S*(sultK St(&pAK St(&p/> *(sult = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&9> t(&pA = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&9> t(&p/ = 8+oubl(S9&allo)8s!?(o'8+oubl(9S&S&9> !' 8[8*(sult DD t(&pA DD t(&p/99 N p*!nt'87`nS(& &(&c*!a[`n79> '*((8*(sult9> '*((8t(&pA9> '*((8t(&p/9> *(tu*n8"A9> Z )ount = 0> 'o* 8l=0> l38n&t:"A9> lCC9 N !' 8[)ount9 N 'o* 8!=0> !3&S&> !CC9 N t(&pAO!P = &at*!:O!P> t(&p/O!P = &at*!:O!C&S&P> Z 'lag = A> Z (ls( 'o* 8!=0> !3&S&> !CC9 t(&p/O!P = &at*!:O)ountC!P>
)A = 0> )/ = 0> )# = 0> 'o* 8!=0> !3&> !CC9 N 'o* 8j=0> j3&> jCC9 N *(sultO)#P = 0> 'o* 82=0> 23&> 2CC9 N *(sultO)#P C= t(&pAO2C)AP S t(&p/OjC)/P> )/ C= &>
Z )/ = 0> )#CC> Z )A C= &> Z 'o* 8!=0> !3&S&> !CC9 N t(&pAO!P = *(sultO!P> Z !' 8'lag9 N )ount C= &S&S/> 'lag = 0> Z (ls( )ount C= &S&> Z 'o* 8!=0> !3&S&> !CC9 &at*!:O!P = *(sultO!P> '*((8*(sult9> '*((8t(&pA9> '*((8t(&p/9> *(tu*n809> Z Iuadro /$ C(digo fonte programa de mu"tip"icao de matri=es sem para"e"ismo