Load balancing algorithms are widely used in parallel and distributed
applications to achieve high performances in terms of response time, throughput and resources usage. They play an important role and arise in various fields ranging from parallel and distributed
computing systems to wireless sensor networks (WSN).
-The objective of load balancing is to orchestrate the distribution of the global workload so that
+The objective of load balancing is to orchestrate the distribution of the global load so that
the load difference between the computational resources of the network is
minimized as low as possible. Unfortunately, this problem is known to be {\bf NP-hard} in its
general forms and heuristics are required to achieve sub-optimal solutions but in
In this paper, we focus on asynchronous load balancing of non negative real numbers of {\it divisible loads}
in homogeneous distributed systems. Loads can be divided in arbitrary {\it fine-grain} parallel parts size
-that can be processed independently of each other. This model of divisible loads arise in
+that can be processed independently of each other. This model of divisible loads arises in
a wide range of real-world applications. Common examples among many, include signal processing,
feature extraction and edge detection in image processing, records search in a huge databases,
average consensus in WSN, pattern search in Big data and so on. % c'est pout toi raphael ;-)
%version working with integer load. This work was later generalized by
%the same authors in \cite{cedo+cortes+ripoll+al.2007.convergence}.
%\FIXME{Rajouter des choses ici. Lesquelles ?}
-Although Bertsekas and Tsitsiklis' describe the necessary conditions to
+Although Bertsekas and Tsitsiklis describe the necessary conditions to
ensure the algorithm's convergence, there is no indication or any strategy to really implement
the load distribution. %In other word, a node can send some amount of its load to one or many of its neighbors while all the convergence conditions are followed.
Consequently, we propose a new strategy called \besteffort{}
most of the times, it is simpler to dissociate load information messages
from data migration messages. Former ones allow a node to inform its
neighbors about its current load. These messages are in fact very small and can be sent
-often and very quickly. For example, if a computing iteration takes a significant times
+often very quickly. For example, if a computing iteration takes a significant time
(ranging from seconds to minutes), it is possible to send a new load information
-message to each involved neighbor at each iteration. Then the load is sent, but the reception may take time when the amount of load is huge and when communication links are slow. Depending on the application, it may have
+message to each involved neighbor at each iteration. Then, the load is sent, but the reception may take time when the amount of load is huge and when communication links are slow. Depending on the application, it may have
sense or not that nodes try to balance a part of their load at each computing
iteration. But the time to transfer a load message from a node to another one is
often much more longer that the time to transfer a load information message. So,
\item Unlike earlier works, we use a new concept of virtual loads transfers which allows nodes to predict the future loads they will receive in the subsequent iterations.
This leads to a noticeable speedup of the global convergence time of the load balancing process.
-\item We use SimGrid simulator which is known to be able to characterize and model realistic models of computation and communication in different types of platforms. We show that taking into account both loads transfers' costs and network contention is essential and has a real impact on the quality of the load balancing performances.
+\item We use SimGrid simulator which is known to be able to characterize and modelize realistic models of computation and communication in different types of platforms. We show that taking into account both loads transfers' costs and network contention is essential and has a real impact on the quality of the load balancing performances.
%\item We improve the straightforward network's diameter bound of the global equilibrium threshold in the network. % not sure, it depends on the remaining time before the paper submission ...
\end{itemize}
Section~\ref{sec.besteffort} presents the best effort strategy which provides
efficient local loads equilibrium. %This strategy will be compared with the one presented in Section~\ref{sec.other}.
In Section~\ref{sec.virtual-load}, the clairvoyant virtual load scheme is proposed to speedup the convergence time of the load balancing process.
-We provide in Section~\ref{sec.simulations}, a comprehensive set of numerical results that exhibit the usefulness of our proposals when we deal with realistic models of computation and communication. Finally, we give some concluding remarks in Section~\ref{conclusions-remarks}.
+We provide in Section~\ref{sec.simulations}, a comprehensive set of numerical results that exhibit the usefulness of our proposal when we deal with realistic models of computation and communication. Finally, we give some concluding remarks in Section~\ref{conclusions-remarks}.
\section{Related works}
\medskip
Nevertheless, we think that this condition may lead to deadlocks in some
-cases. For example, if we consider a linear chain graph network of only three processors and that processor $1$
+cases. For example, consider a linear chain graph network of only three processors and that processor $1$
is linked to processor $2$ which is also linked to processor $3$, but processors $1$ and $3$ are not neighbors.
%(i.e. a simple chain which 3 processors).
\end{align*}
%{\bf RAPH, pourquoi il y a $x_3^2$?. Sinon il faudra reformuler la suite, c'est mal dit}
-Owing to the algorithm's specification, processor $2$ can either sends
+Owing to the algorithm's specification, processor $2$ can either send
load to processor $1$ or processor
$3$. If it sends load to processor $1$, it will not satisfy condition
\eqref{eq.ping-pong} because after that sending it will be less loaded than
strong. %Currently, we did not try to make another convergence proof without this condition or with a weaker condition.
\smallskip
-Nevertheless, we conjecture that a weaker condition may exist since we
+Despite this, we conjecture that a weaker condition may exist since we
have never seen any scenario that is not leading to convergence, even with
load-balancing strategies that are not exactly fulfilling the authors' own conditions. %se two conditions.
\smallskip
-Although this approach is interesting, several practical
+Even though this approach is interesting, several practical
questions arise when dealing with realistic models of
computation and communication. As reported above, the
algorithm's description is too succinct and no details are
\subsection{Basic strategy}
The description of our algorithm will be given from the point of view a processor~$i$.
-The principle of the \besteffort{} strategy is that each processor,
+The principle of the \besteffort{} strategy is that each processor
that detects it has more load than some of its neighbors, sends some load to the
most of its less loaded neighbors, doing its best to reach the equilibrium
between the involved neighbors and itself.
\item the mean of the loads of the selected neighbors and processor i.
\end{itemize}
Let $S_i(t)$ be the set of the selected neighbors, and
- $\bar{x}(t)$ be the mean of the loads between the selected neighbors and processor $i$ is given as follows:
+ $\bar{x}(t)$ be the mean of the loads between the selected neighbors and processor $i$ which is given as follows:
\begin{equation*}
\bar{x}(t) = \frac{1}{\abs{S_i(t)} + 1}
\left( x_i(t) + \sum_{j\in S_i(t)} x^i_j(t) \right)
With the aforementioned basic strategy, each node does its best to reach the
equilibrium with its neighbors. However, one question should be outlined here:
How can we handle the case where two (or more) node initiators that may send
-concurrently some amount of loads to the the same less loaded neighbor? Indeed,
+concurrently some amount of load to the the same less loaded neighbor? Indeed,
%since each node may take the same kind of decision at the same time,
there is a risk that a node will receive load from
several of its neighbors, and then is temporary going off the equilibrium state.
framework~\cite{casanova+giersch+legrand+al.2014.simgrid}. For the
experiments, we used a pre-release of SimGrid 3.7 (Git commit
67d62fca5bdee96f590c942b50021cdde5ce0c07, available from
- \url{https://gforge.inria.fr/scm/?group_id=12})}, and which is
+ \url{https://github.com/simgrid/simgrid})}, and which is
available at
\url{http://info.iut-bm.univ-fcomte.fr/staff/giersch/software/loba.tar.gz}.
Algorithm~\ref{algo.recv}. When a message is received, it is pushed in a buffer
of received messages, to be later consumed by one of the other threads. There
are two such buffers, one for the control messages, and one for the data
-messages. The buffers are implemented with a lock-free FIFO
-\cite{sutter.2008.writing} to avoid contention between the threads.
+messages.
+The buffers are implemented with first-in, first-out queues (FIFO).
\begin{algorithm}
\caption{Receiving thread}
The distributed processes of the application were then logically organized along
three possible typologies: a line, a torus or an hypercube. Tests were divided into two groups on the basis of the initial distribution of the global load: i)
-Tests were performed with the total load initially on only one node%(at one end for the line topology)
+tests were performed with the total load initially on only one node%(at one end for the line topology)
, ii) and other tests for which the load was initially randomly distributed across all the
participating nodes of the platform. The total amount of load was fixed to a number of load
units equal to 1000 times the number of node. The average load is then of 1000
%
The results in Figure~\ref{fig.results1} are when the load to balance is
initially on only one node, while the results in Figure~\ref{fig.resultsN} are
-when the load to balance is initially randomly distributed over all nodes.
-
+when the load to balance is initially randomly distributed over all nodes.
On both figures, the CCR is $10/1$ on the left
column, and $1/10$ on the right column. %With a computation/communication cost
%ratio of $1/1$ the results are just between these two extrema, and definitely
%don not give additional information, so we chose not to show them here.
-
On each of Figures~\ref{fig.results1} and~\ref{fig.resultsN}, the results
are given for the process topology being, from top to bottom, a line, a torus or
an hypercube.
\subsubsection{The \besteffort{} and \makhoul{} strategies without virtual load}
The {\it simple} ({\it plain}) version of each strategy is defined as the load balancing
-algorithm without virtual load's transfers. For each algorithm, we compare the simple
+algorithm without virtual load's transfers. For each strategy, we compare the simple
version (without virtual load) and the improved one (with virtual load).
Each algorithm is evaluated in terms of achieved idle time and convergence time.
\smallskip
When the load to balance is initially randomly distributed over all nodes, we can see from Figure \ref{fig.resultsN} that the effect of virtual load is not significant for the line topology structure. However, for both torus and hypercube structures with CCR = 1/10 (on the left of the figure), the performance of virtual load transfers is significantly better. This is explained by the fact
-that for small CCR values, high communication costs plays quite a significant role. However, the impact of
+that for small CCR values, high communication costs plays quite a significant role. Moreover, the impact of
communication becomes less important as the CCR values increases, since larger CCR values result in smaller communication times. We also tested the impact of CCR values on the performance of each algorithm in terms of idle times. From Figures~\ref{fig.results1} and ~\ref{fig.resultsN} we can find that our virtual load scheme achieves
a really good average idle times, which is quite close to both its own simple version and its direct competitor {\it Bertsekas and Tsitsiklis} algorithm. As expected, for coarse grain applications (CCR =10/1), idle times are close to 0 since processors are inactive the most of times compared to fine grain applications.
\smallskip
Unlike {\it Betsekas and Tsistlikis} algorithm, our approach is not really sensitive when
-we deal with realistic models of computation and communication. This is due to two main features: i) the use of "virtual load" transfers winch allows nodes to predict the load they receive in the subsequent iterations steps, ii) and the greedy neighbors selection adopted by our algorithm at each time step in the load balancing process. The involved neighbors are selected in such a way that load difference between the computational resources is minimized as low as possible.
+we deal with realistic models of computation and communication. This is due to two main features: i) the use of "virtual load" transfers which allows nodes to predict the load they receive in the subsequent iterations steps, ii) and the greedy neighbors selection adopted by our algorithm at each time step in the load balancing process. The involved neighbors are selected in such a way that load difference between the computational resources is minimized as low as possible.
\smallskip
Comparing the results of the extended version (with virtual load) to the results of the simple one, we observe in Figs.~\ref{fig.results1} and ~\ref{fig.resultsN} that the improved version gives the best performances. It always improves both convergence and idle times significantly in all figures. This is because, with virtual load transfers, the algorithm seeks greedily to ensure a certain degree of load balancing for processors by taking into account the information about the predictive loads not received yet. Consequently, this leads to optimize the final convergence time of the load balancing process. Similarly, the extended version achieves much better results than the simple one when considering larger platforms, as shown in Figs.~\ref{fig.results1} and ~\ref{fig.resultsN}.