Mosix is a piece of clustering software for x86 computers. It does automatic process migration
and does not require any change whatsoever to the programs you wish to run in your cluster (with some exceptions, see below). Basically, you can start a process on one of the cluster nodes and Mosix automatically moves it to one of the least loaded nodes. Obviously, Mosix can't balance the load of an application consisting of only one thread/process - as with normal SMP
the load must be distributed among a number of processes greater than or equal to the number of CPU
s in the cluster.
I downloaded Mosix to see what it could do for me. I don't do simulations, raytracing or the like, I just wanted to see if it could make my kernel compilations faster and distribute the load of GIMP
filters. Mosix installs as a kernel patch and a bunch of tools and I installed it on two computers: a Celeron 375 MHz with 160 MB RAM and a Pentium MMX with 64 MB RAM.
The first experiment conducted under Mosix was a success: I started a simple infinite loop
on the slower of the machines and after a few seconds it had migrated to the other machine.
My next experiment was to start a distributed.net
-client and an instance of the John the Ripper
password cracker on one of the computers. Both programs do virtually nothing else than number crunching
and after a few seconds one of the processes had moved to the other node.
After those simple experiments it was time to try some everyday software to see if it could benefit from a Mosix cluster. Here is a list of programs and actions and my experiences with them:
- Compiling the Linux kernel - I added "MAKE=make -j2" to the top of linux/Makefile and ran make bzImage. A lot of processes were spawned but none lived long enough to be transfered to another node.
- dnetc, distributed.net client - Creates a single process that may migrate. When configured to create multiple processes migration is not possible (uses shared memory). You don't want to do this anyway.
- John the Ripper - Starts as a single process, does migrate.
- mpg123, MP3 player - Could be forced to migrate but went back to the home node immediately.
- netscape - would not migrate, mmap()ed device.
- sshd - migrated spontaniously once.
- apache - nope, uses shared memory.
- MySQL - nay, shared memory.
- updatedb - The sort process it starts does migrate.
- gzip - migrates.
- GIMP filters - no, they use shared memory.
- other - I'll node them when I know.
The most common reasons why processes would not migrate were:
- The process uses shared memory or mmap()s a file as shared memory (clone_vm and monkey)
- The process mmap()s a device (mmap_dev)
Mosix isn't quite right for me - I'd better just buy a SMP computer. But I will keep on running a Mosix cluster just to see if I stumble upon any application that actually uses it.