Compilação distribuída com ICECC no Debian/Ubuntu
Para quem já compilou um projeto grande, ou seja, que possui uma quantidade considerável de código fonte sabe que demora bastante tempo para compilar, um exemplo disso é o Qt, que demora aproximadamente ~2 horas em uma máquina com 2 núcleos.
Optando pela dica de um amigo, consegui diminuir esse tempo de compilação para aproximadamente ~50 minutos usando 6 núcleos no total, 2 núcleos do meu notebook e mais 4 da minha estação de trabalho.
É algo bem simples de fazer, let’s do it
Primeiramente você precisa instalar o ICECC nos computadores que você irá compartilhar recursos para compilação e nada mais óbvio do que usar o apt-get ou aptitude:
~$ aptitude install icecc
Depois de instalado nas máquinas que você deseja utilizar os recursos é necessário configura-lás em um grupo para que elas possam se comunicar, em uma analogia equivalente seria como configurar um grupo de rede onde cada máquina consegue enxergar as outras porque estão no mesmo grupo. Para configurar essa rede é preciso editar o arquivo /etc/icecc/icecc.conf e colocar a seguinte diretiva apontando para o nome da rede:
ICECC_NETNAME=”nome_da_sua_rede“
onde tem nome_da_sua_rede substitua pelo o nome de sua preferência para a rede de compilação e configure essa diretiva com o nome que você definiu para cada máquina que você irá utilizar para a compilação e depois reinicie o daemon delas com:
sudo invoke-rc.d icecc restart
Nessa rede é preciso que ao menos uma das máquinas seja a responsável por distribuir os dados de compilação, pegar o retorno e juntar tudo. A essa máquina damos o nome de “Scheduler”, para configurar uma máquina como scheduler é preciso que o arquivo /etc/default/icecc esteja da seguinte forma:
# Defaults for icecc initscript
# sourced by /etc/init.d/icecc
START_ICECC=”true”
START_ICECC_SCHEDULER=”true”
E depois reiniciar o daemon com:
ICECC_NETNAME=”nome_da_sua_rede”
Dai em diante é só compilar algum código grande que você verá a diferença, também existe uma ferramenta para você monitar a compilação é o icecc-monitor, para instalar (nada mais óbvio):
sudo aptitude install icecc-monitor
Depois adicione o path do icecc ao seu $PATH, inserindo o seguinte comando no seu ~/.bashrc :
export PATH=/usr/lib/icecc/bin/:$PATH
source ~/.bashrc
E boa compilação, keep hacking!


