Acelere a compilação no Gentoo com distcc (guia para Systemd)
Dica publicada em Linux / Configuração
Acelere a compilação no Gentoo com distcc (guia para Systemd)
Se você usa o
O
Com o
2. Ambas devem ter a mesma versão do GCC instalada.
3. Este guia assume que ambas usam Systemd.
1. Instale o pacote:
2. Por padrão, o Gentoo configura o distcc para escutar apenas a si mesmo (
3. Modifique o arquivo para que fique exatamente assim (substitua a faixa de IP pela da sua rede, ex:
(Nota: O
4. Recarregue o Systemd e inicie o serviço:
1. Instale o pacote:
2. Defina quem vai ajudar: Informe o IP da máquina forte ao Portage. É vital rodar isso como
3. Abra o seu
4. Adicione
5. Ajuste o
Você verá, a cada 2 segundos, a lista de arquivos de código sendo enviados magicamente para o IP do seu PC Forte!
Para acompanhar em tempo real no PC Forte (ver os arquivos chegando e sendo processados), use o comando:
Gentoo em um computador mais modesto, sabe que compilar pacotes pesados pode levar horas ou até dias. Mas e se você tiver outro computador mais potente (ou um servidor) na mesma rede? É aí que entra o distcc (Distributed C/C++ Compiler).O
distcc permite que você use o poder de processamento de outras máquinas para compilar seus programas muito mais rápido.Como o distcc funciona?
Imagine que compilar um programa é como construir uma casa de tijolos:- Seu PC Fraco (O Mestre de Obras): Ele tem a planta da casa e organiza o trabalho, mas não tem muita força.
- Seu PC Forte (O Ajudante): Ele tem muita força e está ocioso esperando ordens.
Com o
distcc, o PC Fraco prepara o código-fonte e envia pela rede para o PC Forte. O PC Forte compila esse código usando todo o seu poder de processamento e devolve o arquivo binário pronto. O PC Fraco apenas junta as partes. O tempo de compilação diminui bastante.Requisitos Básicos
1. Ambas as máquinas precisam estar na mesma rede local (ou conectadas via VPN, como o Tailscale).2. Ambas devem ter a mesma versão do GCC instalada.
3. Este guia assume que ambas usam Systemd.
Passo 1: Configurando o PC Forte (O Ajudante)
Esta é a máquina que vai receber o trabalho pesado (por exemplo, um PC com 12 threads).1. Instale o pacote:
emerge --ask sys-devel/distcc
2. Por padrão, o Gentoo configura o distcc para escutar apenas a si mesmo (
127.0.0.1). Precisamos sobrescrever isso no arquivo do Systemd. Edite o arquivo:sudo nano /etc/systemd/system/distccd.service.d/00gentoo.conf
3. Modifique o arquivo para que fique exatamente assim (substitua a faixa de IP pela da sua rede, ex:
192.168.2.0/24):
[Service]
Environment="ALLOWED_SERVERS=127.0.0.1"
ExecStart=
ExecStart=/usr/bin/distccd --no-detach --daemon --port 3632 -N 15 --allow 192.168.2.0/24
Environment="ALLOWED_SERVERS=127.0.0.1"
ExecStart=
ExecStart=/usr/bin/distccd --no-detach --daemon --port 3632 -N 15 --allow 192.168.2.0/24
(Nota: O
ExecStart= vazio é obrigatório no Systemd para limpar o comando original antes de injetar o novo).
4. Recarregue o Systemd e inicie o serviço:
sudo systemctl daemon-reload
sudo systemctl enable --now distccd
Passo 2: Configurando o PC Fraco (O Mestre de Obras)
Esta é a máquina onde você vai rodar oemerge (por exemplo, um notebook com 4 threads).1. Instale o pacote:
emerge --ask sys-devel/distcc
2. Defina quem vai ajudar: Informe o IP da máquina forte ao Portage. É vital rodar isso como
sudo ou root para que o sistema inteiro (e não apenas seu usuário) enxergue a configuração:sudo distcc-config --set-hosts "IP_DA_MAQUINA_FORTE localhost"
3. Abra o seu
make.conf:sudo nano /etc/portage/make.conf
4. Adicione
distcc na variável FEATURES (junto com as que já existirem, separadas por espaço):FEATURES="getbinpkg distcc"
5. Ajuste o
MAKEOPTS. A fórmula ideal é:
-j[Soma de todas as threads da rede] -l[Threads apenas do PC Fraco]
Se o PC Forte tem 12 threads e o PC Fraco tem 4, a soma é 16. O parâmetro -l (load average) serve como um freio de emergência: ele avisa ao Portage para não iniciar novos trabalhos locais se o PC Fraco já estiver no limite das suas 4 threads, evitando travamentos caso a rede caia.MAKEOPTS="-j16 -l4"
Passo 3: Como saber se está funcionando?
No PC Fraco, coloque algo para compilar. Em seguida, abra outro terminal e rode:distccmon-text 2
Você verá, a cada 2 segundos, a lista de arquivos de código sendo enviados magicamente para o IP do seu PC Forte!
Para acompanhar em tempo real no PC Forte (ver os arquivos chegando e sendo processados), use o comando:
journalctl -u distccd -f