About MOSIX
M  O  S  I  X
Cluster Management System

Home     About     Distributions     VCL     FAQ     Publications    

About MOSIX

MOSIX is a cluster management system that provides a single-system image.

MOSIX supports both interactive concurrent processes and batch jobs. It incorporates automatic resource discovery and dynamic workload distribution by preemptive process migration. MOSIX is implemented as a software layer that allows applications to run in remote nodes as if they run locally. Users can start (sequential and parallel) applications on one node, while MOSIX automatically seek resources and transparently migrate and run them on other nodes. There is no need to modify applications, copy files, login or assign processes to remote nodes - it is all done automatically. Allocation of processes to nodes are supervised by a comprehensive set of on-line algorithms that monitor the state of the resources and attempt to improve the overall performance by dynamic resource allocation, e.g. load-balancing.

A unique feature of MOSIX is that it operates on the process-level, unlike systems that operate on the job-level. This means that MOSIX adapts and redistributes the workload when the number of processes of a job and/or their demands changes. This is especially useful for parallel jobs.

For many years, MOSIX was implements as a patch to the Unix/Linux kernel. The latest distribution no longer requires a kernel-patch. It can manage clusters and multi-cluster private clouds. Flexible management allows owners of different clusters to share their computational resources, while still preserving the autonomy to disconnect their clusters at any time, without disrupting already running programs.

MOSIX can run in non-virtualized or Virtual Machine (VM) environments. A non-virtualized environment provides better performance, whereas a VM can run on top of Linux or Windows.

MOSIX is suitable for running distributed and concurrent applications with low to moderate amount of I/O. It is particularly suitable for: efficient utilization of cluster-wide resources; running applications with unpredictable resource requirements or run times; running (and preserving) long processes and combining nodes of different speeds.

Further information is available in the: