1 ========================================================================
2 En mode entier (-Z), aucune vérification n'est faite sur la charge
3 totale, ni sur la répartition initiale!
5 Il faut vérifier, et arrondir et émettre un warning dans le cas contraire :
6 - que la charge totale est entière, dans main.cpp ;
7 - au début de chaque process que la charge initiale est entière.
9 Il faut également s'assurer que la répartition aléatoire produit une
12 ========================================================================
13 ##### RESOLVED BUGS COME AFTER THIS ####################################
14 ========================================================================
15 Il faut réviser l'utilisation du mutex entre le thread d'équilibrage
16 et le thread de calcul. Il semble gardé beaucoup trop longtemps.
18 Bon, une partie du problème est rectifiée par le commit
19 48de954 Stop locking the mutex on data_receive.
21 Pour le reste, je pense maintenant que ça ne gêne pas, au moins dans
22 le simulateur. Pour faire bien, il faudrait plus séparer les deux
23 threads d'équilibrage et de calcul, et faire en sorte que chacun garde
24 un cache des données globales partagées. Il suffirait alors de
25 synchroniser ces caches à chaque itération.
27 Les données partagées sont essentiellement les données des voisins :
28 load, to_send et debt.
30 ========================================================================
31 Comment expliquer ces différences entre SG 3.5 et SG svn ?
33 $ ./loba platform.xml -Tline -abest -L500 -t1800 -c1e8,0 -C1e7,0 -M0 2>&1 --log=comm.thres:debug -s100 -b | grep LOAD
34 [Bourassa 1031.097913] [comm/DEBUG] send LOAD: 366.211 to Fafard_data
35 [Bourassa 1306.997159] [comm/DEBUG] send LOAD: 20.0806 to Fafard_data
36 [Bourassa 1541.486345] [comm/DEBUG] send LOAD: 4.74548 to Fafard_data
37 [Bourassa 1766.189415] [comm/DEBUG] send LOAD: 3.09753 to Fafard_data
38 [Fafard 2579.229566] [comm/DEBUG] received LOAD: 366.211 from Bourassa
39 [Fafard 2605.989948] [comm/DEBUG] received LOAD: 20.0806 from Bourassa
40 [Fafard 2612.318155] [comm/DEBUG] received LOAD: 4.74548 from Bourassa
41 [Fafard 2616.450666] [comm/DEBUG] received LOAD: 3.09753 from Bourassa
43 $ ./loba-dev platform_dev.xml -Tline -abest -L500 -t1800 -c1e8,0 -C1e7,0 -M0 2>&1 --log=comm.thres:debug -s100 -b | grep LOAD
44 [Bourassa 1031.097913] [comm/DEBUG] send LOAD: 366.211 to Fafard_data
45 [Bourassa 1306.997159] [comm/DEBUG] send LOAD: 20.0806 to Fafard_data
46 [Fafard 1519.035900] [comm/DEBUG] received LOAD: 366.211 from Bourassa
47 [Fafard 1519.035900] [comm/DEBUG] send LOAD: 282.074 to Ginette_data
48 [Bourassa 1541.486345] [comm/DEBUG] send LOAD: 4.74548 to Fafard_data
49 [Fafard 1629.312931] [comm/DEBUG] received LOAD: 20.0806 from Bourassa
50 [Fafard 1629.312931] [comm/DEBUG] received LOAD: 4.74548 from Bourassa
51 [Fafard 1629.312931] [comm/DEBUG] send LOAD: 6.19507 to Ginette_data
52 [Bourassa 1766.189415] [comm/DEBUG] send LOAD: 3.09753 to Fafard_data
53 [Fafard 1898.705676] [comm/DEBUG] received LOAD: 3.09753 from Bourassa
54 [Ginette 1932.076243] [comm/DEBUG] received LOAD: 282.074 from Fafard
55 [Ginette 1940.343540] [comm/DEBUG] received LOAD: 6.19507 from Fafard
57 Probablement par un bug dans SG 3.5.
59 ========================================================================
60 Il semblerait qu'il y ait un bug dans SG 3.5, et qu'on ne puisse pas
61 utiliser MSG_comm_waitany() pour l'émetteur *et* le récepteur sans
62 risquer d'interblocage.
64 Le problème devrait être contourné correctement depuis le commit
65 cd6b253 Use MSG_comm_waitall for communicator::flush(true).
67 ========================================================================
68 Avec SG 3.5, les communications doivent être détruites dès que
69 possible avec MSG_comm_destroy(). Si ce n'est pas fait, la simulation
70 peut être extrêmement ralentie.
72 Le problème devrait être contourné correctement depuis le commit
73 404a8d5 Do not call flush automatically in communcator::send...
75 ========================================================================
76 Valgrind détecte une fuite de mémoire liée à un appel à backtrace.
78 Le problème semble être indépendant de SimGrid et peut être reproduit
79 avec le code suivant (NB: l'équivalent, compilé avec gcc ne génère pas
82 | #include <execinfo.h>
88 | size = backtrace(buffer, sizeof buffer / sizeof buffer[0]);
89 | std::cerr << "backtrace() returned " << size << "\n";
93 ==532== in use at exit: 56 bytes in 1 blocks
97 ==532== still reachable: 56 bytes in 1 blocks
99 ========================================================================