Difference between revisions of "Icecream"

From Linuxintro
imported>ThorstenStaerk
m (Reverted edits by 46.137.55.35 (talk) to last revision by ThorstenStaerk)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
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''.
 
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 that’s sutlbe! Great to hear from you.
+
= Install it =
 +
To install icecream on SUSE, enter into a konsole:
 +
yast -i icecream icecream-monitor
 +
Icecream links /opt/icecream/bin/gcc to /usr/bin/icecc, and you have to use this for a distributed compile. So, change your PATH variable so icecream's gcc is found before gnu's gcc:
 +
export PATH=/opt/icecream/bin:$PATH
 +
and make this change persistent for login-shells:
 +
echo "export PATH=/opt/icecream/bin:\$PATH" >> /etc/profile
 +
and make this change persistent for non-login-shells:
 +
echo "export PATH=/opt/icecream/bin:\$PATH" >> /etc/bash.bashrc
  
 
= Run it =
 
= Run it =
Line 23: Line 31:
 
  icemon
 
  icemon
  
I'm out of league here. Too much brain power on dislpay!
+
= 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
 +
[...]
  
Thanks alot - your answer solved all my porblmes after several days struggling
+
= 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 =
 
= See also =

Latest revision as of 14:04, 26 September 2011

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.

Install it

To install icecream on SUSE, enter into a konsole:

yast -i icecream icecream-monitor

Icecream links /opt/icecream/bin/gcc to /usr/bin/icecc, and you have to use this for a distributed compile. So, change your PATH variable so icecream's gcc is found before gnu's gcc:

export PATH=/opt/icecream/bin:$PATH

and make this change persistent for login-shells:

echo "export PATH=/opt/icecream/bin:\$PATH" >> /etc/profile

and make this change persistent for non-login-shells:

echo "export PATH=/opt/icecream/bin:\$PATH" >> /etc/bash.bashrc

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:

Icecream2.png

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