mercredi 20 janvier 2016

La plateforme BOINC
(Berkeley Open Infrastructure for Network Computing) 

https://boinc.berkeley.edu/


1- BOINC : La plateforme de Volunteer Computing 

BOINC est une plateforme de calcul distribué utilisée par différents projets et applications et se base sur le "Volunteer Computing", c'est à dire qu'elle se base sur la puissance de calcul de plusieurs ordinateurs qui participent volontairement à un projet spécifique. BOINC assure  l'interconnexion via INTERNET de plusieurs ordinateurs et la répartition des tâches de l'application. 


BOINC est conçu pour supporter les applications qui ont de gros besoins de calcul et de stockage. Toute application qui peut être découpée en un ensemble de traitements qui peuvent être exécutés indépendamment, peut utiliser la plateforme BOINC pour distribuer ses calculs.

2- Les projets basés sur BOINC 

Plusieurs projets qui se basent sur du calcul distribué utilisent BOINC :
  SETI@home : Recherche d'une intelligence extraterrestre
  *  Folding@home : Recherche médicale (repliement des protéines)
  *  Rosetta@home : Recherche biologique sur les protéines
  *  Einstein@home : Recherche d'ondes gravitationnelles

(Voir le site de BOINC pour la liste complète)

=> Tous ces projets se basent sur des applications qui nécessitent une grande puissance de calcul.

3- L'architecture de BOINC [1]

BOINC utilise un architecture client/serveur pour la distribution des tâches et la collecte des résultats.



Chaque nouveau traitement (Job) sous BOINC subit les étapes suivantes : 
  1. Le serveur BOINC décompose le Job en différentes tâches (workunits).
  2. Un client actif demande au serveur de lui affecter des workunits.
  3. Le serveur BOINC envoi à la machine les données nécessaires (un ensemble de fichiers)
  4. Le client BOINC exécute les calculs des workunits qui lui ont été affectés.
  5. Les résultats sont renvoyés au serveur BOINC.

- Côté Client :

La partie cliente de la plateforme BOINC est un logiciel qui s'installe sur une machine et qui opère selon 3 modes :

  • Screensaver (Écran de veille) 
  • Service en background
  • Simple application

Le client BOINC supporte plusieurs systèmes d'exploitation : Windows, Linux, MacOS, Android, PS3 System Software. 
Le mode de fonctionnement peut être configuré en paramétrant l'utilisation des ressources : CPU/GPU, Data/WiFi, Type des cycle CPU ...  

- Côté Serveur:

La partie serveur est celle qui orchestre la distribution des tâches (workunit) de calcul sur les différentes machines connectées.




Le serveur BOINC est basé sur une distribution Linux et permet d'assurer les fonctionnalités suivantes :

  • Redondance Homogène: La comparaison des résultats est faite à travers des machines homogènes (même plateforme
  • Ordonnancement Local : Les workunits de grande taille de données sont traités par les machines qui ont déjà ces données (Éviter les gros transferts).
  • Distribution selon les paramètres : Des workunits qui nécessitent 512 Mb de RAM sont attribués aux machines qui possèdent cette capacité ou plus.
  • Double vérification :  Un workunit est traité par au moins deux machines différentes.
  • Système de crédits : Les machines qui participent à un projet sont créditer selon le temps CPU qui a été consacré pour ce projet.

Le serveur est composé d'un ensemble de démons qui assurent le fonctionnement global de la plateforme BOINC, chaque démon assure une fonctionnalité précise.


  • Scheduler : Assure la coordination et la distribution des workunits de traitement entre les clients.
  • Feeder : représente la file d'attentes des workunits qui sont prêt à être attribués par le scheduler.  
  • Transitioner : c'est le démon qui décide sur les états des workunits (prêt ou non) et des résultats obtenus.
  • File Deleter : supprime les fichiers de données des workunits qui ne sont plus utilisés.
  • Generator : c'est le démon qui génère les workunits qui vont être affectés au clients. 
  • Validator : c'est le démon qui fait la comparaison et la validation des résultats et l'attribution des crédits (section suivante).
  • Assimilator : ce démon place les résultats qui ont été validés dans la base de données du projet correspondant. 

 - La sécurité :

BOINC assure l'aspect de sécurité sur plusieurs niveau et avec différentes techniques :
  1.  Calcul redondant : Permet de vérifier les faux résultats ou leurs falsification.
  2. Signature des données : Les données échangées entre la machine cliente et le serveur sont signées.
  3. Détection des dépassements de capacités : BOINC peut détecter quand une application a dépassé un certain seuil fixe d'utilisation de mémoire ou de temps CPU.
  4. Fixation des deadline : Les résultats d'un workunit doivent être retournés avant un deadline déterminé.
  5. L'attribution des crédits : Les crédits ne sont attribués qu’après la vérification des résultats retournés. 


4- Participation à un projet BOINC

Afin de pouvoir participer à un projet BOINC, il suffit de faire les étapes suivantes :

  1. Choix d'un projet
  2. Création d'un compte BOINC
  3. Installation du logiciel client BOINC
  4. S'authentifier avec le compte créé
  5. Lancer le traitement   



Une fois les calculs sont lancées, le client BOINC s'occupe du téléchargement des données relatif au projet et de l'envoi des résultats au serveur.


5- Création d'un projet BOINC [2]

Afin de pouvoir créer un projet BOINC, les étapes à suivre sont les suivantes :

1-  Choix du serveur

BOINC supporte différentes plateforme de serveurs, mais il est conseillé d'utiliser un système Linux (n'importe quelle distribution).

2- Choix des composants du serveur

Il est préférable pour des raisons de compatibilité avec BOINC, d'utiliser une configuration LAMP (Linux, Apache server, MySQL, php)

Il est également nécessaire de bien attacher les démons BOINC en compilant le code qu'il fournie et l'intégrer au fonctionnement du serveur.

3- Compilation du logiciel

Cette étape consiste à télécharger et compiler le code  BOINC qui va s'interfacer avec les démons du serveur et qui va par la suite assurer la distribution des tâches.

4- Création de l'application

Dans cette étape, il s'agit de créer l'application qu'on veut réaliser, c'est à dire les tâches de calcul périodique qu'on veut réaliser pour notre application (Langage C ou C++).

Une fois le traitement est fait, il ne reste qu'attacher les exécutables au fichier de configuration de BOINC.  

5- Création du projet

La création du projet, consiste à enregistrer une URL auprès de la plateforme BOINC afin qu'elle soit ajoutée dans la bases des URL et qu'elle puisse être visible au niveau des clients.

_________________________________________________________________________________

Références 

[1] http://boinc.berkeley.edu/

[2]  Gary McGilvary. How to Create a BOINC Project. 16 April 2012.