Pilote SETI

 

Documentation

Ce programme est basé sur le travail de Michael D. OBER qui avait développé un programme en anglais (s'appelant naturellement SETI Driver) et dont j'ai adapté les sources pour :

1) parler en français ;

2) réorganiser un certain nombre d'éléments de l'interface (en particulier des réglages qu'on ne change pas souvent et qui encombraient la fenêtre principale à mon goût).

Pour plus d'informations générales consultez la page d'index.

 

Utilisation

Une fois que le programme a été installé et lancé une première fois, comme expliqué plus loin, l'utilisation en est vraiment simple.

Lancement.

Le programme est lancé comme tout programme Windows et double-cliquant sur l'icône de l'exécutable, le cache est construit par le programme pilote en créant des répertoires «1», «2», «3», etc... dans son répertoire de lancement, il est donc recommandé de créer un raccourci qui permettra de toujours lancer le programme pilote dans le bon répertoire. Ce raccourci pourra astucieusement être installé dans le menu démarrer afin que le programme pilote soit lancé à chaque démarrage de l'ordinateur.

De façon analogue à ce qui se passe à la fin de son exécution, lorsque le programme pilote démarre il cherche à mettre fin à tous les programmes de traitement (qui n'auraient pas été terminés proprement) avant de relancer de nouvelles instances du programme de traitement sous son contrôle. De plus le programme pilote ne peut être lancé qu'une seule fois et si on double-clique à nouveau sur son exécutable, il fera revenir au premier plan la fenêtre principale de l'instance déjà en cours d'exécution

Arrêt.

Cliquer sur la case de fermeture du programme pilote ne l'arrête pas, mais le range en icône dans la barre des tâches.



Un clic-droit sur cette icône propose le choix "Quitter" qui termine l'exécution du programme pilote de la même façon que le bouton "Quitter" de l'interface principale.

Quand le programme pilote termine son exécution, il met fin à tous les programmes de traitement qui seraient en train de s'exécuter et qu'il contrôle. Il ne met cependant pas fin aux instances du programme de traitement qu'il a lancé pour effectuer des transferts (ceux-ci devant terminer normalement leur exécution au bout de quelques instants, juste après la fin du transfert).

 

Installation

Il suffit de créer un répertoire et d'y copier le programme pilote ainsi que le programme de traitement SETI@Home, le programme pilote n'exploite que la version "ligne de commande" du programme de traitement, version que vous pouvez récupérer sur le site officiel setiathome.berkeley.edu, ou directement en cliquant ici.

Premier lancement

Lancer le programme pilote en double-cliquant sur l'icône, une fenêtre comme celle-ci apparaîtra.



Ça c'est mauvais signe, cela signifie que nous n'avez pas lu le premier paragraphe où il est dit qu'il faut copier le programme pilote dans le même répertoire que le programme de traitement. Vérifiez les emplacements respectifs des deux et relancez le programme pilote. Si tout se passe normalement, voilà la fenêtre qui apparaîtra au premier lancement.



L'icône rouge signale que le programme de traitement n'a rien à faire (et c'est normal puisqu'il n'y a aucun work-unit à traiter), vous trouverez ci-dessous la liste de toutes les icônes utilisées par le programme pilote.

Il est temps de choisir une taille de cache et de la saisir dans la zone appropriée, une simple validation avec la touche "Entrée" suffit à créer autant de répertoires cache que l'utilisateur l'a souhaité. Les autres nombres de la fenêtre sont alors recalculés. Il suffit ensuite de cliquer sur le bouton "Transférer" pour lancer la première connexion au serveur de Berkeley.

Une fenêtre DOS s'ouvre et dans cette fenêtre le programme de traitement est lancé, ce programme détecte qu'il n'y a aucun work-unit et avant de se connecter au serveur de Berkeley pour aller en chercher un, il vous demande de vous identifier.



A ce moment là vous pouvez soit créer un nouveau compte SETI@Home soit vous identifier comme un utilisateur déjà connu du système. Cette étape passée le programme de traitement va télécharger un work-unit qui sera stocké dans le premier répertoire du cache (ici j'ai utilisé mon propre compte).



Le fichier «user_info.sah» que le programme de traitement construit à l'issue du processus d'identification est récupéré par le programme pilote et copié dans tous les autres répertoires du cache de façon à ne pas devoir répéter l'opération d'identification à chaque transfert.

Et voilà !

Comme les deux cases "Cacher le transfert" et "Cacher le traitement" sont cochées par défaut le reste se passe sans interaction de l'utilisateur.

 

Configuration

La fenêtre principale du programme pilote contient un champ permettant d'ajuster la taille du cache de work-units, ce changement est validé par une pression sur la touche "Entrée" ou la perte du focus de la zone de saisie (touche "Tab" ou clic sur un bouton de l'interface par exemple). La case "Cacher le transfert" permet de ne pas montrer les fenêtres DOS dans lesquelles le programme de traitement est lancé (seul le premier transfert d'une série est affiché car il peut nécessiter une interaction avec l'utilisateur), ce choix sert lors des transferts automatiques. La case "Cacher le Traitement" permet de masquer totalement la fenêtre DOS dans laquelle le programme de traitement s'exécute. Les valeurs de ces deux cases sont sauvegardées par le bouton "Enregistrer" de la fenêtre de configuration que nous allons décrire maintenant.

La fenêtre de configuration s'affiche quand l'utilisateur clique le bouton "Configuration" de le fenêtre principale du programme pilote.



La partie "Traitement" gère le lancement du programme de traitement. Le champ "Nombre de processes" est initialisé au nombre de processeurs de la machine, mais peut être changé (diminué) pour libérer du temps CPU. Sur un système multiprocesseurs la case "Forcer l'affinité" permet de réserver un processeur par programme de traitement optimisant ainsi l'utilisation des mémoires caches des processeurs. La case "Afficher l'avancement" lance le programme de traitement avec l'option "-verbose" qui le rend plus bavard, voir le manuel sur le site de Berkeley.

La partie "Priorité de traitement" permet de choisir la priorité d'exécution attribuée aux programmes de traitement par rapport aux autres programmes en cours d'exécution sur l'ordinateur. Le choix "Basse" est activé par défaut et devrait être l'option préférée, ainsi l'exécution des programmes de traitement ne perturbent pas le fonctionnement de l'ordinateur. Le choix "Normale" donne au programme de traitement la même priorité d'exécution que les autres programmes. Le choix "Haute" lui donnera une priorité d'exécution supérieure. Les priorités proposées correspondent respectivement aux priorités IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS et HIGH_PRIORITY_CLASS de Windows.

La partie "Suivi de l'avancement" permet d'afficher une bande de progression dans la fenêtre principale du programme pilote, soit en utilisant le programme pilote seul (case "Utiliser le pilote SETI") soit en utilisant le programme SETISpy (case "Utiliser SETISpy.exe") le programme SETISpy est indépendant du programme pilote et peut être téléchargé ici.. En outre le programme pilote est capable de maintenir un fichier de statistiques (au format CSV) dans son répertoire d'exécution où il enregistre tous les work-units traités avant de les envoyer au serveur de Berkeley, cette option est activable via la case "Mettre à jour le fichier SETILog.csv"

La partie "Proxy ou Socks" permet de faire fonctionner le programme SETI@Home derrière un proxy. Pour plus d'information sur ces options, on se réfèrera au manuel sur le site de Berkeley. Attention, car ces dernières options seront enregistrées dans un simple fichier texte qui pourrait dès lors contenir des informations sensibles (mot de passe).

Le bouton "Changer prog. de traitement" permet de passer d'une version à l'autre du programme de traitement sans perdre le travail qui a déjà été accompli avec une version précédente, l'utilisation de ce bouton est détaillé plus loin.

La case "Transférer automatiquement" permet au programme pilote de démarrer un transfert avec le serveur de Berkeley dès qu'un work-unit a été complètement traité. Cette option pourra être cochée sur un ordinateur connecté en permanence à Internet lui permettant ainsi d'avoir un cache toujours plein de work-units à traiter. Si l'ordinateur est connecté à Internet via une ligne téléphonique alors l'utilisateur pourra choisir le moment où son ordinateur est connecté pour lancer manuellement le transfert en cliquant sur le bouton de la fenêtre principale (où en choisissant l'option dans le menu de l'icône).

La zone "e-mail" si elle est renseignée active une fonction cachée sous l'image en haut de la fenêtre principale, essayez un double-clic sur cette image...

Enfin, classiquement les boutons "OK" et "Annuler" ferment la fenêtre de configuration en mémorisant ou pas ce qui s'y trouve. Le bouton "Enregistrer" (qui devient actif quand un élément de la fenêtre a changé) permet en outre d'enregistrer cette configuration pour les futures exécutions du programme pilote.

 

Informations détaillées sur le fonctionnement

Les informations fournies ici ne seront pas nécessaires pour utiliser le programme pilote mais informeront un utilisateur curieux sur ce qui se passe.

Gestion du cache

Le cache est matérialisé par des répertoires «1», «2», «3», etc... créés dans le répertoire d'exécution du programme pilote. Le parcours du cache est fait en visitant tous les sous-répertoires du répertoire courant dont le nom est un nombre. Un répertoire dont le nom est un nombre et qui ne contient rien d'utile pour le programme pilote sera tout simplement détruit avec tout son contenu sans possibilité de restauration, cela semble dangereux, mais dans la pratique je n'ai jamais eu de problème.

Au début de l'exécution le cache est réorganisé en une suite contiguë en renommant les répertoires dont le nom est un nombre, le programme supprime les répertoires qui ne contiennent ni work-unit (fichier «work_unit.sah») ni résultat (fichier «result.sah»). Le programme compte alors les répertoires qui ne contiennent pas de fichier «stop_after_send.txt» et utilise ce compte comme taille de cache souhaité par l'utilisateur.

Quand l'utilisateur change la taille du cache, programme crée des répertoires vides pour les entrées manquantes ou supprime tous les répertoires qui ne contiennent ni work-unit (fichier «work_unit.sah») ni résultat (fichier «result.sah»). Si un répertoire contient une information utile, le programme ne l'efface pas mais y crée un fichier «stop_after_send.txt» (qui permet au programme de transfert d'envoyer le résultat mais de ne pas y charger de nouveau work-unit) : lors d'une future réorganisation de cache, comme ce répertoire ne contiendra plus d'information utile, le programme pilote pourra le supprimer.

Un répertoire de cache peut contenir à la fois un résultat et un work-unit, cette situation n'est normalement pas possible avec le programme SETI@Home, mais le programme pilote lancera le programme de traitement pour transmettre le résultat puis lancera de nouveau le programme de traitement pour traiter ce work-unit (et ainsi fabriquer de nouveau un fichier résultat).

En outre pour gérer le changement du programme de traitement, si un élément de cache content un programme de traitement, celui-ci sera utilisé préférablement à celui placé dans le répertoire de lancement du programme pilote.

Changement du programme de traitement

Le bouton "Changer prog. de traitement" de la fenêtre de configuration permet de changer de version du programme de traitement sans interruption et sans reprendre à zéro le traitement des work-units qui auraient déjà été partiellement traités.

Après avoir téléchargé un nouveau programme de traitement (pas dans le répertoire du programme pilote !) un clic sur ce bouton ouvrira une fenêtre de recherche de fichier classique dans laquelle on indiquera le chemin de ce nouveau programme. Le programme pilote arrêtera alors tous les traitements en cours, copiera l'exécutable du programme de traitement dans tous les éléments de cache pour lesquels ce programme a déjà servi en testant s'il existe un fichier «state.sah» non vide, puis copiera le nouvel exécutable dans son répertoire de lancement.

Le programme de traitement relancera alors les programme de traitement dans les répertoires de son cache en utilisant en premier lieu et s'il existe l'ancien programme de traitement puis le nouveau programme pour les éléments de caches qui n'auraient jamais encore été traités.

Fichier .INI

Le programme enregistre les préférences de l'utilisateur dans un fichier utilisant le nom du programme pilote et en remplaçant l'extension par .INI. Ce fichier contient des options, une par ligne, qui peuvent également être passées lors de l'appel du programme pilote, ces options ne seront pas décrites ici, l'utilisateur désireux d'en savoir plus devra se référer directement au code.

Barre de progression du traitement
 
Dès le lancement du programme et s'il y a au moins un work-unit à traiter, le programme pilote continue le travail là où il avait été interrompu et indique l'état d'avancement (dans cet exemple le traitement en était à 16% lors du dernier arrêt).
Peu de temps après, le programme pilote propose une estimation du temps de traitement restant (dans cet exemple 03:54). Cette estimation est toutefois médiocre car obtenue par une règle de trois (rapport du temps écoulé sur le pourcentage accompli) alors que la durée de traitement n'est pas une fonction linéaire du pourcentage d'avancement.
 
Icônes

L'icône utilisé par le programme reflète son état de fonctionnement, cette icône est également visible dans la barre des tâches quand le programme a été fermé. Voici toutes les icônes que le programme pilote peut employer :

Tout se passe bien, le cache ne contient que des work-units en cours de traitement ou en attente de traitement.
Le programme pilote est en train de contacter le site SETI@Home pour envoyer les résultats du traitement ou pour remplir de nouveaux emplacements de cache avec de nouveaux work-units.
Un emplacement du cache attend de recevoir un nouveau work-unit et/ou un emplacement du cache attend de pouvoir transmettre le résultat de son traitement. Si l'option de transmission automatique est activée, cette situation est rapidement suivie par l'icône bleue indiquant la transmission.
Un problème de transmission dure depuis assez longtemps car le programme de traitement a consommé tous les work-units qui étaient en cache alors que le site de SETI@Home n'est toujours pas joignable : le programme de traitement n'a plus rien à faire.

 

Choix du programme de traitement

Le programme pilote cherche seul un programme de traitement dans le répertoire où il se trouve, avant de lancer le traitement dans un des répertoires du cache, il vérifie s'il existe un programme de traitement dans ce répertoire et l'utilise alors préférablement à celui de son répertoire de lancement. Ce comportement est utilisé pour le changement du programme de traitement.

Si le programme pilote ne parvient pas à trouver seul un programme de traitement convenable (soit parce qu'il ne trouve pas de programme de traitement, soit parce que le critère de recherche "SETIatHome*.exe" a retourné plusieurs noms de fichiers), il demandera de l'aide à l'utilisateur via la fenêtre suivante.

Il vaut mieux n'avoir qu'un seul programme de traitement disponible à un moment donné dans la mesure où cette fenêtre se présentera de nouveau à chaque lancement du programme pilote. Il existe cependant un moyen de migrer de version de programme de traitement sans perdre la part de travail déjà accompli par une version précédente, ceci est expliqué plus haut.

 

Bugs et contact

Dans la mesure où je ne travaille plus sur ce programme, je ne peux pas garantir que je trouverai le temps de corriger les bugs trouvés. Cependant, vous pouvez toujours me contacter si vous souhaitez une correction ou un ajout de fonctionnalité, ou encore si vous avez modifié le code pour l'adapter à un besoin particulier. Mon adresse se trouve en bas de cette page.

 

 

Auteur : Bernard «Bub» BURETTE, piloteseti.soft@burette.net.
$RCSfile: documentation.html,v $ $Author: bernard $ $Created: 2002-02-15 $
$Revision: 1.11 $ $Date: 2006-04-14 23:00:17+02 $