Computación distribuida en Linux

BOINC (Infraestructura Abierta de Berkeley para la Computación en Red) es una plataforma para la computación distribuida que una vez instalado en tu ordenador actúa como cliente recibiendo tareas desde un servidor. La idea es repartirse el trabajo entre muchos ordenadores de forma que el rendimiento final sea el de una especie de superordenador. Hay varios proyectos en marcha que usan de BOINC, desde la búsqueda de inteligencia extraterrestre, predicción del clima, búsqueda de púlsares, etc.

Una vez instalado hay que darse de alta en los diferentes sitios de cada proyecto y crearnos una cuenta por cada uno de ellos. A partir de ahí podemos, desde nuestras distintas cuentas, editar nuestras preferencias en cuanto a uso de memoria, procesador, disco, etc por parte del programa. Por defecto el cliente actúa solo cuando nuestro ordenador no esta en uso, aunque esto también se puede modificar.

Para instalarlo podemos bajárnoslo desde su sitio Web. Pero en el caso de Debian tenemos varios paquetes:

boinc-client: es el núcleo del programa que una vez instalado actúa como un demonio. Y como tal podremos iniciarlo, pararlo o reiniciarlo con el siguiente comando:

/etc/init.d/servicio {stop start restart}

Y además este paquete contiene una interfaz en línea de comandos: boinc_cmd. Si queremos una interfaz grafica disponemos del ejecutable boincmgr que viene en el paquete boinc-manager basado en GTK y para los que usen KDE: kboincspy. Entre los proyectos en marcha se encuentran los siguientes:

Para unirse a los proyectos y crear nuestras cuentas, si usamos el BOINC manager simplemente hay que elegir en su menú "Unirse a un proyecto" e introducir la URL del mismo. En caso de que utilicemos la línea de comandos tendremos que hacerlo mediante un navegador desde los sitios de los distintos proyectos, una cuenta por cada proyecto. Una vez nos hayamos suscrito y con el demonio en marcha, podemos usar el siguiente comando para aportar nuestro granito de arena al proyecto que más nos atraiga:

boinc_cmd --project_attach url clave_de_la_cuenta

Parece ser que la primera vez que se utiliza boinc_cmd no puede conectar con el demonio debido a que crea una clave aleatoria que vuelca en el fichero /var/lib/boinc-client/gui_rpc_auth.cfg, o en /home/gui_rpc_auth.cfg (1) y que podemos cambiar a nuestro antojo. Tendremos que reiniciarlo y ya podremos usar la línea de comandos.

(1) Al arrancar por primera vez, podemos indicarle que use un directorio en concreto mediante:

boinc_client -dir /home/usuario/.boinc                   

   +---------------------------------------------------------------------------------------+
   |boinc_client                                                                           |       
   |                                                                                       |       
   |SINOPSIS:                                                                              |       
   |boinc_client [opciones]                                                                |       
   |                                                                                       |       
   |OPCIONES:                                                                              |       
   |-help --------------------- Muestra la ayuda.                                          |       
   |-show_projects ------------ Muestra los proyectos en curso.                            |       
   |-attach_project URL key --- Se suma a un proyecto                                      |       
   |-detach_project URL ------- Se separa de un proyecto                                   |       
   |-reset_project URL -------- Borra y restaura un proyecto.                              |       
   |-update_prefs URL --------- Actualiza las preferencias.                                |       
   |-dir ruta ----------------- Indicamos un directorio home para BOINC.                   |       
   |-redirectio --------------- Redirige los logs que por defecto de encuentran en         |       
   |                            /var/lib/boinc-client/stdoutdae.txt y stderrdae.txt        |       
   |-no_gui_rpc --------------- No podrá controlarse mediante boincmgr o boinc_cmd       |       
   |-allow_remote_gui_rpc ----- Permite conexiones remotas. Por defecto solo admite         |       
   |                            conexiones desde el mismo host.                            |       
   +---------------------------------------------------------------------------------------+
   +---------------------------------------------------------------------------------------+
   |boinc_cmd                                                                              |      
   |                                                                                       |       
   |SINOPSIS                                                                               |       
   |boinc_cmd [--host hostname[:puerto]] [--passwd contraseña] comandos                    |       
   |boinc_cmd [-hV]                                                                        |       
   |                                                                                       |       
   |  --host hostname[:port]----- Conecta a un servidor, por defecto localhost.             |       
   |  --passwd contraseña ------- Si existe gui_rpc_auth.cfg la leerá de ahí.              |  
   |                                                                                       |       
   |COMANDOS                                                                               |       
   |--get_results ---------- Muestra todas las tareas.                                     |       
   |--get_file_transfers --- Muestra todos los archivos transferidos.                       |       
   |--get_project_status --- Muestra el estado de todos los proyectos.                     |       
   |--get_disk_usage ------- Muestra el espacio ocupado en disco por los proyectos.        |       
   |--get_state ------------ Muestra todo lo anterior.                                     | 
   |--get_host_info -------- Muestra información sobre la máquina en la que se ejecuta.    |
   |                                                                                       | 
   |--project_attach url clave - Nos unimos a un proyecto                                  |
   |--project url opciones ----- Operamos sobre un proyecto.                               |
   |  | reset ------------------ Eliminamos las tareas de un proyecto y pide nuevas tareas.|
   |  | detach ----------------- Eliminamos un proyecto en curso.                          |
   |  | update ----------------- Envía las tareas terminadas.                              |
   |  | suspend ---------------- Suspendemos las tareas del proyecto.                      |
   |  | resume ----------------- Reiniciamos las tareas del proyecto.                      |
   |  | nomorework ------------- Terminamos las tareas en curso y no pedimos mas.          |
   |  | allowmorework ---------- Deshacemos nomorework.                                    |
   |  '-----------------------------------                                                 |
   |                                                                                       |
   |--result url result_name opciones ---- Operamos sobre una tarea.                       |
   |  | suspend ----- Paramos temporalmente una tarea.                                     |
   |  | resume ------ Reiniciamos una tarea suspendida.                                    |
   |  | abort ------- Paramos definitivamente una tarea.                                   |
   |  '----------------------------------                                                  |
   |                                                                                       |
   |--get_run_mode ------------------------------ Muestra el modo de ejecución.            |
   |--set_run_mode {always | auto | never} ------ Configuramos el modo de ejecución.       |
   |  | always Se ejecuta siempre (network + CPU).                                         |
   |  | auto   Se ejecuta según las preferencias.                                          |
   |  | never  Se suspenden todas las tareas.                                              |
   |  '-----------------------------------                                                 |
   |                                                                                       |
   |--get_network_mode --------------------------- Muestra el modo de red.                 |
   |--set_network_mode {always | auto | never} --- Configuramos el modo de red.            |
   |  | always Se ejecuta siempre.                                                         |
   |  | auto   Se ejecuta según las preferencias.                                          |
   |  | never  Se suspenden todas las tareas.                                              |
   |  '-----------------------------------                                                 |
   |                                                                                       |
   |--get_proxy_settings --------- Muestra la configuración del proxy                      |
   |--set_proxy_settings  http_server_name  http_server_port http_user_name                |
   |   http_user_passwd  socks_server_name   socks_server_port   socks_version             |
   |   socks5_user_name socks5_user_passwd                                                 |
   |          Configuramos el proxy. Todos los campos son  obligatorios                     |
   |                                                                                       |
   |--get_screensaver_mode                                                                 |
   |--set_screensaver_mode  {on  |  off}  blank_time  {--desktop   desktop}                |
   |       {--window_station window_station} {--display display}                           |
   |              Tell the core client to start or stop doing full screen graphics,         |
   |              and  going to black after blank_time seconds. The optional argu-         |
   |              ments specify which desktop / windows_station (Windows) or  dis-         |
   |              play (X11) to use.                                                       |
   |                                                                                       |
   |                                                                                       |
   |--read_global_prefs_override                                                           |
   |              Tell  the core client to read the global_prefs_override.xml file         |
   |              and incorporate any global preferences indicated there.                  |
   |                                                                                       |
   |                                                                                       |
   |--quit ------ Para la ejecución del núcleo.                                            |
   |                                                                                       |
   +---------------------------------------------------------------------------------------+

Enlaces: