|
Organic Computing as a
concept to control parallel computations in P2P Grids
|
|
Basic Concepts for a P2P Grid
|
The term
Grid computing has originated as a metaphor for making computer
power as easy to access as an electric power grid. Hence, the idea
of Grid computing actually means that every peer should be able to
submit tasks (jobs) regardless of its own connectivity in the P2P
Grid. Especially, the location of job initiation should not have
any effect on the performance of job execution. In order to
decouple scheduling of jobs from the peers that initialize them our
system is organized as illustrated in the figure below.

A peer can
play 4 different roles in a computation:
- Initiator: Initiator is a peer on which a user
wants to submit a job to the system. Usually, this peer does not
take part in the actual computation of a specified job. Only
well-connected peers with adequate performance should
participate to improve the total computational performance of a
parallel computational job.
- Primary Scheduler: Primary Scheduler is a peer
with the best disposition value inside it cluster that is known
to the Initiator. This particular peer selects other peers
(Workers) regarding their disposition values to participate in a
job that was submitted by the Initiator. Peers that participate
in a job are managed in a hash map, that is called process
descriptor table (PDT) according to the terminology used in
operating systems. Additionally, the Primary Scheduler selects
another peer, the Secondary Scheduler.
- Secondary Scheduler: the Secondary Scheduler is
used to avoid a single point of failure that is considered to be
the Primary Scheduler. In the case that the Primary Scheduler
disconnects from the system, the Secondary Scheduler continues
the task of the Primary Scheduler and recruits another peer as
the new Secondary Scheduler.
- Worker: Worker is a peer that was selected by
the Primary Scheduler to participate in the execution of a job.
Each Workers of a job receives a single process with a unique
identifier, according to the MPI specification referred to as rank.
|
For reasons
of portability the P2P Grid is based on Java and supports message
passing by a rudimentary MPJ (Message Passing Interface for Java)
implementation that is called Java Message Passing Interface (JMPI).
Java applications, which do not rely on native code, can run on
multiple hardware platforms without any change to their code. MPJ
is a MPI-like API specified by the Java Grande Forum to enhance
the viability of parallel programming using Java. Typically, an MPJ
API uses Java Native Interface (JNI) wrappers to native MPI
software and therefore requires a native MPI library installation.
By contrast, in our system a pure Java implementation is provided.
The
communication between peers is established by two request/reply
protocols implemented inside a communication layer. A single peer
represents a finite state machine and can be started by the class Connector.
The state of a peer depends on the current role a peer plays (e.g.
inactive, active as a Worker, active as Primary Scheduler). In
order to run a computational job the system provides a simple
application, called MPI_Exec, adjusted to the MPI standard. The
application is used by typing MPI_Exec -filename -n,
where the parameter -filename defines the path and name of
an executable bytecode file and the parameter -n sets the
required number of processes. The entire system is organized in
layers and packets as depicted below.

|