next up previous
Next: Transaction Protocol. Up: Communication Previous: Client/Server.

Boss/Worker.

In the previous section we discussed the ``external'' client-to-server communication. When it comes to the server's internal communication between worker and boss processes, the situation is different. For the following reasons, we decided to use MPI as the server's internal communication infrastructure:

  1. MPI works perfectly on clustered environments.
  2. MPI is the standard for message passing.
  3. All parallel platforms provide a (presumably efficient) implementation of MPI.
  4. MPI has proven to meet high scalability requirements.
  5. Many MPI functions (like reductions) provide functionality which we did not have to re-invent.

Unfortunately, the latter cannot be fully exploited because the server must be in the position to cancel a request prematurely: all collective operations are blocking in the sense, that once started, they must be completed on all participating processes. Hence, a separate ``control-channel'' is required which is based on non-blocking (unfortunately, non-collective) MPI functions. A communication structure uses MPI_Isend, MPI_Irecv and repeated calls to MPI_Test to allow premature cancellation of the current work on a request. Collective operations are then only executed after being told so through the control channel. Unfortunately, this decreases the performance a little. We are looking into better approaches.


next up previous
Next: Transaction Protocol. Up: Communication Previous: Client/Server.
2003-10-06