Detailed documentation of how Meta-Balancer functions
authorHarshitha <gplkrsh2@illinois.edu>
Mon, 15 Oct 2012 18:44:33 +0000 (13:44 -0500)
committerHarshitha <gplkrsh2@illinois.edu>
Mon, 15 Oct 2012 18:44:33 +0000 (13:44 -0500)
src/ck-ldb/MetaBalancer.C
src/ck-ldb/MetaBalancer.h

index c1c47fca03d46b61c99e200dc8adff2d72e2d4de..1d5ffb40c4b7bbcf0d1e3f5b4d4b86d919f1496a 100644 (file)
@@ -21,7 +21,7 @@
 #define MIN_STATS 6
 #define STATS_COUNT 8 // The number of stats collected during reduction
 
-#define DEBAD(x) CkPrintf x
+#define DEBAD(x) /*CkPrintf x*/
 #define DEBADDETAIL(x) /*CkPrintf x*/
 #define EXTRA_FEATURE 0
 
index 0aa832f1e89733085d6e99c286c8f6bc7fd63b9d..eb5c8ffe3ea6b9cdf0b2e8183d50f78ee62aaa83 100644 (file)
@@ -1,7 +1,28 @@
 /**
- * \addtogroup CkLdb
+* Meta-Balancer is for automating the load balancing decisions based on the
+* application characteristics. The decision of when to call the load balancer is
+* handled by the MetaBalancer if +MetaLB flag is set when launching the
+* application. AtSync should be called very often (every couple of iterations).
+*
+* Meta-Balancer is not aware of the application iteration so it depends on
+* AtSync calls to count the iterations. At every AtSync call, if +MetaLB is
+* set, the chare sends its object load to the MetaBalancer on its local
+* processor and resumes its work. Once all the chares residing on the processor
+* has contributed their load information, this information is collected at the
+* central processor(root) using reduction. The root calculates the ideal period
+* based on linear extrapolation and informs a tentative lb period to all the
+* processors via broadcast. The Meta-Balancer residing on each processor then
+* informs the root about the maximum iteration of any chare on their processor.
+* The root then informs the final lb period, which is the max of calculated and
+* max. Meanwhile, chares can be in various states. Chare goes to LOAD_BALANCE
+* state when it enters load balancing phase. It goes to PAUSE state when the
+* chare has reached the tentative period and is waiting for the final period to
+* be announced.
+*
+* To handle the case of no objects on a particular processor, a timer call is
+* set which checks for the number of objects and if found to be == 0,
+* contributes to the reduction which collects minimum statistics.
 */
-/*@{*/
 
 #ifndef METABALANCER_H
 #define METABALANCER_H