* Compilation de SimGrid
* Compilation...
* Utilisation
+* Tracé de courbes
* Communications
* Pour ajouter un nouvel algorithme d'équilibrage
* Pour ajouter une nouvelle option au programme
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
==============
- définir une nouvelle classe dérivant de process
- attention, il faut construire le process explicitement
- redéfinir la méthode load_balance qui :
- - reçoit en paramètre la charge à prendre en compte ;
+ - 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
- pneigh[i]->set_to_send(quantité) ;
- - retourne la somme des quantités définies avec set_to_send,
- éventuellement à l'aide de la méthode process::sum_of_to_send()
- qui clacule cette somme.
+ 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 ;
Plat.xml
cluster1000.xml
+ machines1000.xml
platform.xml
* fichiers de description de déploiement (tests)
loba_simple.h équilibrage simple
loba_simple.cpp (à imiter pour ajouter d'autres algorithmes)
+ loba_*.{h,cpp} autres algos d'équilibrage
+
main.cpp le programme principal
+ message.h file de messages reçus
+ message.cpp
+
misc.h divers trucs inclassables
misc.cpp
+ msg_thread.h creation de threads SG/MSG
+ msg_thread.cpp
+
named_object_list.h gestion d'une table de constructeurs
avec des noms et des descriptions
simgrid_features.h macros pour détecter la version de SimGrid
- simple_async.cpp un simple programme de test
+ statistics.h pour calculer moyenne, variance, etc.
+
+ synchro.h mutex, condition, etc.
+
+ sync_queue.h lock-free synchronized queue
timer.h gestion de timer
+ tracing.h définitions liées au traçage
+
version.h gestion de la version du programme
version.cpp
+* scripts
+
+ colorized-loba script pour exécuter loba en colorant les
+ sorties
+
+ extract.pl outil d'extraction des données à partir des
+ traces, pour tracer des courbes
+
+ new_loba.sh pour créer le squelette d'un nouvel algo
+ d'équiblibrage loba_*
+
+ setlocalversion calcule un numéro de version à partir du hash
+ du dernier commit (git)
+
* autres fichiers
.gitignore liste des fichiers ignorés par git
- valgrind_suppressions_3.5 liste de quelques suppressions pour valgrind
+ valgrind_suppressions liste de quelques suppressions pour valgrind
avec SimGrid 3.5