martes, 7 de abril de 2009

Volunteer Computing i BOINC

Aquest post va del Volunteer Computing, amb la seva implementació més famosa, BOINC.

El Volunteer Computing ve d'una idea bastant senzilla. Molta gent té ordinadors, i molta d'aquesta gent no els hi treu tot el suc que podria, per tant, estaria molt bé aprofitar tota aquesta potència restant oi ? doncs es tracta d'això.

BOINC és un software molt senzill que s'instal·la en un ordinador, hi ha versions per Windows, GNU/Linux, BSD's, etc. Un cop el software està instal·lat l'usuari s'autentifica i s'apunta a un o diversos projectes. Ja està.

El que passa llavors és que aquest software contacta amb els servidors de BOINC i demana feina. Els servidors li enviaran uns "paquets" amb un o diversos treballs de computació, un cop rebuts aquests l'ordinador començarà a processar-los. Una vegada s'hagi calculat el resultat, aquest s'enviarà de nou als servidors i demanarà més treballs. Tot això de forma totalment transparent a l'usuari i sense que aquest ho noti.

Boinc prové de SETI@Home , un programa que bàsicament va crear aquest esquema per analitzar ones de ràdio provinents de l'espai per intentar trobar vida extra terrestre. Més tard va aparèixer Folding@Home un programa de caire més... biològic per processar plegaments de mol·lècules per l'investigació de malalties i fàrmacs. El problema és que cada projecte utilitzava el seu propi client, i a mesura que anaven sortint més projectes s'havia d'anar instal·lant els seus clients. Finalment es va decidir unificar el format i tenir un sol programa a on et podies apuntar a diferents projectes, així és com va nèixer BOINC.

Passos ràpids per habilitar una conta

La manera més fàcil d'entendre com funciona (en general) és veure-ho funcionant. El software es pot descarregar des de la pàgina de BOINC, o en cas de Linux del gestor de paquets.

El següent cas és triar els projectes en els quals volem participar. N'hi ha molts, aquí podeu trobar-ne una llista, n'hi ha per tots els gustos; problemes matemàtics, de salut, de recerca de vida alienígena...

Per cada projecte al que volem participar ens hi n'hem de donar d'alta a la seva pàgina, llavors ens donaran un nom d'usuari i una clau d'identificació que haurem d'introduir al programa (BOINC). De totes maneres, per fer-nos la vida més senzilla hi ha "paquets" o managers. Aquests són projectes com el World Community Grid, que és una iniciativa d'IBM que agrupa els projectes de BOINC que ténen a veure amb investigació mèdica i mediambiental. Si ens donem d'alta al WCG ens donem d'alta amb un sol identificador a una sèrie de projectes de BOINC, per tant és una forma bastant agradable de simplificar.

Per tant si algú li fa gràcia i vol provar-ho el més senzill és:

  1. Baixar-se el BOINC i instal·lar-lo.

  2. Donar-se d'alta al WCG

  3. Entrar l'identificador del WCG + la clau al BOINC.

Un cop a dins pots entrar a formar part d'equips. Es tracta de fer una competició sana de veure quin equip aconsegueix processar més paquets. Jo formo part de l'equip 'Catalunya', per tant, si voleu contribuir hi sereu molt benvinguts ;)

Com funciona

Cal tenir clares les diferències entre Volunteer Computing i altres tipus de supercomputació o computació distrbuïda, com el Grid Computing. El poder del primer es basa en tenir moltes màquines, de diverses categories de forma totalment descontrolada. Aquestes màquines no són teves, no tens el control sobre elles, no saps ni et pots fiar de que l'endemà continuaran funcionant o que estaran connectades a Internet, cosa que com més endavant veurem comporta unes particularitats en el disseny del sistema.

Bàsicament un projecte de Boinc funciona independentment de qualsevol altre. Cada projecte té el seu servidor, i cada servidor està format per una sèrie de programes, els quals funcionen tinguent com a nucli una base de dades relacional. Aquests subprogrames s'encarreguen de:
  • Servidor de Fitxers. Cada servidor té una sèrie de fitxers que són les feines que ha de fer cada màquina. Lògicament aquests fitxers estan guardats en el servidor i són enviats quan toca a cada màquina que ha de processar-lo. Un cop el paquet s'ha processat és enviat de nou cap al servidor. El servidor, a més d'emmagatzemament té diverses funcions addicionals:

    • Comprovació d'integritat: Quan es rep un resultat és necessari comprobar que el fitxer no sigui corrupte, per causa malintencionada o bé per error de transferència.

    • Comprovació de correcció: En parlaré en pocs paràgrafs però cada tasca es processa més d'una vegada en més d'una màquina. Així doncs es rep el mateix resultat (o el que hauria de ser exactament el mateix resultat) en diverses ocasions. Per tant, si hem enviat una feina a processar a 5 màquines diferents hauriem de rebre 5 vegades el mateix resultat. En cas de que rebem resultats diferents cal descartar aquest resultat i tornar a calcular-lo.

  • Organitzador (normalment s'utilitza el nom anglés, scheduler) Aquesta és el procés que decideix quina feina s'envia a quina màquina. Per tant, aquest és el procés que decideix quantes vegades rebrem un resultat. Aquesta redundància es per diversos motius:

    • Seguretat: Podria ser que per qualsevol motiu un usuari volgués boicotejar un projecte (coses més estranyes s'han vist) i que per tant intentés enviar resultats incorrectes. Cal sempre comparar el resultat amb diverses màquines, mai ens en podem fiar d'una sola.

    • Evitar colls de botella. És un punt molt relacionat amb l'anterior, pot ser que tinguem dependències entre tasques, i que per tant tinguessim una tasca molt important i sense el resultat d'aquesta no poguéssim continuar. El que no es pot fer en un entorn com aquest (Volunteer Computing) és fiar-nos de que una màquina enviarà el resultat del paquet que hem enviat. No controlem aquella màquina, i per tant, no ens podem fiar. És per això que sempre enviem el paquet més vegades de les que és necessari, i com més important és la tasca, més vegades l'enviem.

Programar la teva pròpia apliació

Una de les gràcies de Boinc és que pots programar la teva pròpia aplicació perquè corri en diverses màquines alhora, ja siguin dins la pròpia empresa o fins i tot en una xarxa més casolana. En principi no és senzill, ja que estem parlant d'una aplicació que ha de ser paral·lelitzable i que pugui còrrer en diverses plataformes, ja siguin Microsoft Windows, Mac o bé GNU/Linux.

La pàgina de Boinc posa a l'avast de qualsevol persona que ho vulgui fer una sèrie d'ajudes i tutorials per configurar l'entorn de desenvolupament així com programes d'ajuda.

No tinc experiència personal amb això, però realment m'agradaria sentir noticies d'algú que ho hagi intentat.

Diversos Usos

Lògicament tota aquesta tecnologia es pot aplicar en altres camps, a la mateixa pàgina de BOINC ens dónen unes petites explicacions de com configurar una xarxa de màquines amb BOINC pels nostres propis projectes. En cas de tenir una empresa amb moltes màquines potser no cal invertir grans sumes en servidors d'aplicacions o bé d'utilitzar serveis externs com els Amazon WS, ja que ens podem muntar el nostre "super computador virtual" amb BOINC:
Per tant crec que puc concloure dient que el BOINC és informàtica distribuïda popular!, va vinga no sigueu garrepes, feu-vos una compta i a cremar cicles de CPU!!

No hay comentarios:

Publicar un comentario en la entrada

Comenta: