Difference between revisions of "Icecream"
imported>WikiSysop |
imported>ThorstenStaerk m (Reverted edits by 46.137.55.35 (talk) to last revision by ThorstenStaerk) |
||
(26 intermediate revisions by 6 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 | + | 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 = | = Install it = | ||
To install icecream on SUSE, enter into a konsole: | To install icecream on SUSE, enter into a konsole: | ||
yast -i icecream icecream-monitor | 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 9: | Line 15: | ||
export PATH=/opt/icecream/bin:$PATH | export PATH=/opt/icecream/bin:$PATH | ||
iceccd -d | iceccd -d | ||
+ | And make sure your firewall is stopped: | ||
+ | rcSuSEfirewall2 stop | ||
On your driver, start the scheduler: | On your driver, start the scheduler: | ||
export PATH=/opt/icecream/bin:$PATH | export PATH=/opt/icecream/bin:$PATH | ||
scheduler -d | 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: | ||
+ | |||
+ | [[Image: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 = | = See also = | ||
* http://en.opensuse.org/Icecream | * http://en.opensuse.org/Icecream | ||
+ | * http://websvn.kde.org:80/trunk/icecream/ - icecream source | ||
+ | * http://websvn.kde.org/trunk/playground/devtools/icemon/ - icemon source |
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:
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