nullprogram.com/blog/2007/09/17/
Update: This information is long out of date. It’s kept here for
historical reasons.
I have recently really gotten into clustering with excitement to write
something that can really take advantage of one. The first thing I had
to do was figure out how to cluster my computers. The second was to
write something that could really use my personal cluster to its full
potential. This post is about the first step.
A live CD was the obvious choice (and still is) to begin clustering:
no installation and quick setup. I started with dyne:bolic, a
GNU/Linux distribution geared for editing and creating multimedia
while strictly using free software (already off to a great start!). I
had read that dyne:bolic had clustering capabilities with
openMosix, which was my reason for looking at it in the
first place. I found out later (after digging deep into documentation
a dyne:bolic mirror) that dyne:bolic doesn’t include openMosix
anymore. No good for me.
Next I found BCCD, a live CD distribution based on
LNX-BBC the same distribution used by the Free Software
Foundation for its business-sized CD member cards. This one is
fantastic! I think this is due to its goal as an educational tool,
making it easy to learn about clusters while using it. It comes with
several programming examples and full MPI development capabilities.
The only objection I have about BCCD is that the boot/setup process is
too interactive and manual. When booting off a CD, you must create and
confirm a password (good!), hit enter through several dialogs to
detect network cards (annoying), plus a dialog about DHCP (not bad).
Then you have to broadcast a heartbeat and enable the openMosix
detection daemon. I also have a problem with it occasionally trashing
the fat16 file system my USB thumb drives. Fortunately, this only
causes trivial, and small data loss as the drive contains only data
generated by the cluster.
I own two computers and have a access third one (a laptop) borrowed
from my school for use in a robot design lab. I have not yet
employed my roommate’s computer in my cluster (only a matter of
time!). Since my NETGEAR router has only 4 ports, 4 computers is the
max for my cluster. Booting up 4 computers with BCCD can be annoying
enough, but imagine booting 30 (in some computer lab) by yourself! I
bet they pictured a lab full of students all handling their own
boot/setup sequence when the BCCD team made these decisions.
As I said before, BCCD has great MPI facilities (which their example
programs take advantage of), including support for synced directories.
I have yet to employ the MPI, however, as I find fork()
and pipe()
to be much more convenient in terms of coding and execution (run and
forget). If you can tell me why MPI is better than a regular POSIX
pipe when it comes to clusters, send me an e-mail. I haven’t figured
why yet, if it is even true in the first place.
I have a working version of a program that can take advantage of a
cluster. I will write about this later as a sort-of “part 2”.