-#include "loba_simple.h"
-
#include <xbt/log.h>
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba);
+#include "loba_simple.h"
+
/* simple version:
* load balance with a least-loaded neighbor,
* without breaking the ping-pong condition
*/
-double loba_simple::load_balance(double my_load)
+void loba_simple::load_balance()
{
int imin = -1;
int imax = -1;
- double min = my_load;
+ double min = get_load();
double max = -1.0;
- for (unsigned i = 0 ; i < neigh.size() ; ++i) {
- double l = neigh[i].get_load();
- if (l >= my_load)
+ for (unsigned i = 0 ; i < pneigh.size() ; ++i) {
+ double l = pneigh[i]->get_load();
+ if (l >= get_load())
continue;
if (l < min) {
imin = i;
}
if (imin != -1) {
// found someone
- double balance = (my_load - max) / 2;
- DEBUG6("%d:%g %d:%g %g %g", imin, min, imax, max, my_load, balance);
- neigh[imin].set_to_send(balance);
- return balance;
- } else {
- return 0.0;
+ double balance = (get_load() - max) / 2;
+ DEBUG6("%d:%g %d:%g %g %g", imin, min, imax, max, get_load(), balance);
+ send(pneigh[imin], balance);
}
}