%------------------------------------
% The XtremWeb-CH environment
%------------------------------------

High performance computing environments like MPI (Message Passing
Interface) \cite{Gro94} are widely used and have proved their efficiency. This
class of systems are very tightly coupled and powerful but not very error
tolerant. Cluster computing environments like Condor
\cite{condor-practice} and volunteer computing systems like BOINC \cite{boinc} are loosely coupled and
have a scheduler that distributes tasks to computing nodes. Cluster
computing environments assume that nodes are most often accessible
which is not applies to volunteer computing systems.

XtremWeb-CH (XWCH) is a volunteer computing inspired large-scale
computing platform for distributed applications. In fact, it tends to
be a good compromise between cluster computing and volunteer
computing.  It is originaly based on another platform called XtremWeb
 \cite{xtremweb}. It is easy to install and maintain and it is supported by a Grid
middleware (ARC \cite{arc}) and a workflow engine (JOpera \cite{JOpera}).  It consists in
three components: one coordinator, a set of workers and at least one
warehouse. Client programs use these components.

The coordinator is the main component of the XWCH platform. It
controls user access and schedules jobs to workers. It provides a web
interface for managing jobs and users, and a set of web
services. These are user services and worker/warehouse services
implemented using WSDL (Web Service Description Language)
\cite{WebServ2002}, that simplifies client development for languages
that support it (and most popular programming languages do).

A worker is a Java daemon that runs on the user machine. Assumed to be
volatile, the workers periodically report themselves to the
coordinator, accept jobs, retrieve input, compute jobs, and store the
results of the computation on warehouses. If the coordinator does not
receive a signal from a worker, it will simply remove it from the
scheduling list, and if a job had been assigned to that worker, it
will be re-assigned to another one. A schema of the architecture is
shown in Figure \ref{xwch}.

\begin{figure}[htp]
\label{xwch}
 \begin{centering}
    \includegraphics [scale=0.2]{figures/xwcharchitecture.pdf}
    \caption{The XtremWeb-CH architecture}
 \end{centering}
\end{figure}

A warehouse is a file server that acts as a data storage system for
workers and client programs. Workers may not necessarily be able to
communicate directly with each others, due to firewalls and NAT
sub-networks. For these reasons, warehouses are used as intermediaries
to exchange, store and retrieve data.

Job submission is done by a client program which is written using a
flexible API, available for Java and C/C++ programs. The client
program runs on a “client node” and calls the user services to submit
jobs (Figure \ref{xwch}, (1)). The main flexibility provided by the use of this
architecture is to control and dynamically  generate  jobs especially
when their number cannot be known in advance. Communications between
the coordinator and the workers are always initiated by the workers
following a pull model (Figure \ref{xwch}, (2)):
\begin{itemize}
\item Workers receive jobs (Figure \ref{xwch}, (3)) only if they send a “work
  request” signal;
\item When a worker finishes its job, it stores its output file on
  a warehouse and sends a “work result” signal to the coordinator;
\item During its execution, a worker (respectively warehouse)
  periodically sends “work alive” to the worker service (respectively
  warehouse service) to report itself to the coordinator.
\end{itemize}

As a whole, XWCH is easy to install, maintain and use. Its components
are programmed mainly using Java, and their process memory sizes in a
typical 32-bit GNU/Linux computer are:
\begin{itemize}
 \item Coordinator 190 MB including the Glassfish Java container;
 \item Worker 40 MB;
 \item Warehouse 80 MB.
\end{itemize}
 
Experiments presented in \cite{ccgridpaper} show that the
performance of XWCH is comparable with Condor \cite{Condor1988},
another non-intrusive computing system that has similar functionalities
but is somewhat more difficult to install.

The main characteristics of the new version of XWCH, compared to
previous ones, are: dynamic job generation, flexible data sharing
(data replication) and persistent jobs. These features are presented
in \cite{VEZGrid} and will not be detailed in this paper.
