General Kerrighed Architecture
The Kerrighed architecture is divided in 14 modules. The 2 lower ones are related to the Kerrighed communication sub-system. The middle one is a generic mechanism used to implement the Kerrighed distributed services.
Finally, the remaining modules implement the different Kerrighed services.
Description of the Kerrighed modules
This module implements a high level distributed service manager. It offers functionalities close to what one found in the RPC mechanism. Most explicit communications are implemented on top of this interface.
The hot plug module is responsible for tracking node addition, removal and failure and to manage the cluster reconfiguration.
The Kerrighed Distributed Data Manager (KDDM) mechanism is a distributed data manager. It offers high level mechanisms to access to remote data easily and efficiently. Most Kerrighed services are implemented on top of containers.
Kerriged capabilities make it possible to finely tune what processes are allowed do in a Kerrighed system. It is used to enable or disable some Kerrighed functionalities on a per process basis in a running system.
This module implements the global /proc directory. It provides the same files than a regular /proc directory but with data representing the whole cluster (global memory usage, list of all running processes, etc).
This module implements basic distributed synchronization mechanisms, such as locks, semaphores or condition variables. It is used to implement user level distributed synchronizations (IPC semaphores, Posix thread synchronizations, etc).
This module implements a distributed version of IPC mechanisms. It relies on the mm module for shared memory segments and on the sync module for semaphores.
This module implements the support for migration of open files and the sharing of file pointer for processes running on different nodes. It will later implement a distributed architecture for file management on clusters.
The mm module is responsible for the migration of process address space and cluster wide memory sharing.
The dynamic streams module implements a generic mechanism used to migrate efficiently open streams such as pipe, sockets, char devices, etc...
This module implements a generic layer used to export / import processes kernel meta-data. It is used to migrate, checkpoint and duplicate processes.
The proc module implements a distributed management of processes. It is responsible for global process naming, distant signaling, etc.
The Enhanced Process Management" module implements process migration, process checkpointing, distant fork and distributed thread management.
This module implements the different Kerrighed global process scheduling policies.