| if we received some real load, get it (data messages)
| if there is some real load to send, send it
| if we own some load, simulate some computing on it
+ | sleep a bit if we are looping too fast
+-
send CLOSE on data for all neighbors
wait for CLOSE on data from all neighbors
Loop
| call load-balancing algorithm
| send ctrl messages
+ | sleep (min_lb_iter_duration)
| receive ctrl messages
+-
send CLOSE on ctrl for all neighbors
The loop terminates when process::still_running() returns false.
(read the source for full details...)
-
-Open questions
-==============
- * definition of load on heterogeneous hosts?
- * how to detect convergence?
- : No need to detect convergence. Computation stops when there
- nothing more to do.
- * how to manage link failures?