Icecream
Icecream is a software suite that allows you to build up a compile cluster. The goal is to speed up compiling by distributing the jobs over several computers. To do that, you need one compile-driver (the scheduler) and one or more daemons. As a start, have a daemon running on the computers earth and moon and run the scheduler on earth. Every daemon can trigger a cluster compilation, as well earth as moon.
Now thats sutlbe! Great to hear from you.
Run it
On every slave, start the daemon:
export PATH=/opt/icecream/bin:$PATH iceccd -d
And make sure your firewall is stopped:
rcSuSEfirewall2 stop
On your driver, start the scheduler:
export PATH=/opt/icecream/bin:$PATH scheduler -d
You can now start building e.g. with 8 compile jobs distributed over the nodes:
make -j8 CC=/usr/bin/icecc
The monitor
There is a graphical monitor available that shows which computer is compiling what:
To see it, use the command
icemon
What happens
The daemon opens a socket on port 10245 and waits for requests to compile. You can check this with the following commands:
Show what ports are used by iceccd
duffman:/opt/icecream/bin # lsof -i | grep iceccd iceccd 13193 root 8u IPv4 119567 0t0 TCP *:10245 (LISTEN) [...]
Show that port 10245 is really open
duffman:/opt/icecream/bin # nmap -p10245 localhost [...] PORT STATE SERVICE 10245/tcp open unknown [...]
Kill your icecream daemon
duffman:/opt/icecream/bin # killall iceccd
Show the port is no longer open
duffman:/opt/icecream/bin # nmap -p10245 localhost [...] PORT STATE SERVICE 10245/tcp closed unknown [...]
How to compile icemon
svn co https://svn.kde.org/home/kde/trunk/playground/devtools cd devtools cmake . cd icemon make && make install
See also
- http://en.opensuse.org/Icecream
- http://websvn.kde.org:80/trunk/icecream/ - icecream source
- http://websvn.kde.org/trunk/playground/devtools/icemon/ - icemon source