About
Using distcc as the backend compiler for ISE Eiffel can speed up your compilation time quite significantly.
Distcc distributes the C compilation across multiple hosts on a network. One of its biggest advantages is that it is very easy to set up and use. For further information about distcc please refer to its homepage.
The diagram above shows the speed gain (in seconds) that I achieved on a 3 host-network using distcc (and ccache) during finish_freezing.
Installation
Note that this setup has been tested with ISE Eiffel 5.6 and gcc on Linux. It may or may not work on other configurations.
First install distcc and start the distccd server on all hosts that participate in your cluster. Then replace your copy of finish_freezing (from the directory ${ISE_EIFFEL}/studio/spec/${ISE_PLATFORM}/bin) with this one. Now create a directory in your home directory called bin/distcc and put a symlink in there that is called gcc and points to /usr/bin/distcc. Doing a ls -la ${HOME}/bin/distcc should now print something like this:
aleitner@se-pc31:~$ ls -la $HOME/bin/distcc
total 8
drwxr-xr-x 2 aleitner aleitner 4096 2005-08-23 21:26 .
drwxr-xr-x 5 aleitner aleitner 4096 2005-08-24 15:01 ..
lrwxrwxrwx 1 aleitner aleitner 15 2005-08-23 21:26 gcc -> /usr/bin/distcc
Now, whenever you want to enable distcc for ISE Eiffel execute the following statements in your shell:
export DISTCC_HOSTS="host1 host2 host3"
export DISTCC_COUNT=6
export PATH=$HOME/bin/distcc:$PATH
Be sure to replace host1 host2 host3 with the names of the hosts that participate in your compilation and adjust DISTCC_COUNT to the maximal number of slots that should be reserved. The distcc manual recommends twice the number of participating hosts. To verify that everything works use distccmon-text or distccmon-gnome.