+ level : trace, debug, verbose, info, warning, error, critical
+
+Pour plus de détail sur les options de logging :
+ http://simgrid.gforge.inria.fr/doc/group__XBT__log.html#log_use
+
+Sorties
+=======
+
+* pendant la simulation :
+[Bourassa 5.000000] [proc/INFO] (6:1) current load: 5
+ +------- +------- +-------- + + -----+---------
+ | | | | | |
+ | | | | | \_ charge courante
+ | | | | |
+ | | | | \_ nombre d'itérations de calculs
+ | | | |
+ | | | \_ nombre d'itérations d'équilibrage
+ | | |
+ | | \_ catégorie de messages
+ | |
+ | \_ date courante (en secondes, dans la simulation)
+ |
+ \ nom du nœud
+
+* à la fin de la simulation :
+[Bourassa 108.886866] [proc/INFO] Final load after 107:4 iterations: 1.04113
+ +------- +--------- +-------- +-- + +------
+ | | | | | |
+ | | | | | \_ charge
+ | | | | | courante
+ | | | | |
+ | | | | \_ nombre d'itérations
+ | | | | de calculs
+ | | | |
+ | | | \_ nombre d'itérations
+ | | | d'équilibrage
+ | | |
+ | | \_ catégorie de messages
+ | |
+ | \_ date courante (en secondes, dans la simulation)
+ |
+ \ nom du nœud
+
+
+Tracé de courbes
+================
+
+Le script extract.pl permet d'extraire les données à partir des traces
+de simulation et de le présenter sous un format acceptable par gnuplot
+ou par graph (plotutils).
+
+Exemples:
+ ./loba platform.xml 2>&1 | ./extract.pl | graph -CTX
+
+ ./loba platform.xml 2>&1 | ./extract.pl | graph -CTX -y 0 250
+
+ ./loba platform.xml 2>&1 | ./extract.pl \
+ | gnuplot -p -e 'plot "-" using 1:2:(column(-2)) with lines lc variable'
+
+Communications
+==============
+
+Pour communiquer, chaque processus écoute sur 2 mailboxes (sortes de
+ports) :
+ - une pour les message de contrôle ;
+ - une pour les transferts de charge.
+
+Ceci afin d'éviter de bloquer les échanges d'information pendant un
+transfert de charge.
+
+À la fin, chaque processus envoie un message "CLOSE" à tous ses
+voisins (sur chaque mailbox), et attends d'avoir reçu deux messages par
+voisin (un sur chaque mailbox).
+
+Ceci permet de synchroniser les processus à la terminaison (ça, à la
+rigueur, on s'en fout un peu), et surtout de s'assurer qu'il n'y a
+plus de communication qui « traîne » dans les canaux.
+
+Cela permet aussi de ne pas réarmer les communications non bloquantes
+qu'on ne sait pas annuler proprement (un manque dans SimGrid).
+
+Il ne faut bien sûr plus envoyer de message après avoir envoyé un
+"CLOSE".
+
+Attention : lors du déploiement de l'application, il faut s'assurer que
+la relation de voisinage est symétrique !
+*Ce n'est pas vérifié par le programme.*
+
+Pour ajouter un nouvel algorithme d'équilibrage
+===============================================
+
+1. Imiter ce qui est fait pour loba_simple :
+ - définir une nouvelle classe dérivant de process
+ - attention, il faut construire le process explicitement
+ - redéfinir la méthode load_balance qui :
+ - peut récupérer la charge courante avec get_load()
+ - peut utiliser et éventuellement réordonner le tableau process::pneigh ;
+ - peut récupérer l'information de charge d'un voisin avec
+ pneigh[i]->get_load() ;
+ - définit la charge à envoyer avec
+ send(pneigh[i], quantité) ;
+ NB: le script new_loba.sh peut servir à créer les fichiers.
+
+2. Ajouter l'algorithme dans la liste des options. Dans options.cpp :
+ - faire le #include adéquat ;
+ - ajouter une ligne NOL_INSERT(...) dans la liste existante
+ (dans loba_algorithms_type::loba_algorithms_type()).
+
+Pour ajouter une nouvelle option au programme
+=============================================