O relato
Ao tentar compilar o COSMIC DE, meu
Gentoo congelou. Mas é aquilo... Quem nunca passou por um hard freeze compilando no Gentoo não usou Gentoo de verdade!
Brincadeiras de lado, isso ocorreu mesmo com Ryzen 7, 16 threads e 32GB de RAM. Mas a culpa foi minha por reservar 16GB em tmpfs para o Portage. Pedindo explicações à Gemini, acho que cheguei a uma conclusão.
Ao compilar algo pesado (como sys-devel/rust ou qt-webengine), o uso de RAM explode ou o disco não dá conta de escrever os arquivos temporários (especialmente em HDDs ou SSDs via USB). O resultado? O mouse congela, o áudio trava e você é obrigado a reiniciar o PC no botão.
Isso acontece porque o parâmetro
--jobs é "cego": ele lança 16 processos simultâneos sem se importar se o sistema está engasgando.
A solução
De acordo com a
wiki do Gentoo, o comando make possui uma "válvula de segurança" pouco usada: o
--load-average.
Enquanto o -
-jobs define quantos processos podem rodar, o
--load-average define quando eles podem ser iniciados. Ele instrui o Portage a não iniciar novas tarefas se a "Carga do Sistema" (Load Average) estiver acima de um valor seguro.
No Linux, o "Load Average" sobe não apenas por uso de CPU, mas também por I/O Wait (processos parados esperando o disco ler/gravar). Se o seu HD gargalar, a carga sobe. O
--load-average percebe isso e pausa a criação de novos compiladores até o disco "respirar".
Como usar
Edite seu arquivo
/etc/portage/make.conf.
A recomendação geral é manter o
--jobs próximo ao número de threads do seu processador (para velocidade) e o
--load-average próximo a esse mesmo número (para estabilidade).
Exemplo Prático (Para um CPU de 16 Threads / 8 Cores):
# --jobs 12: Usa até 12 threads simultâneas (75% da CPU).
# --load-average 14: Se a carga do sistema passar de 14.0, PAUSA novos processos.
MAKEOPTS="--jobs 12 --load-average 14"
Se você confia na sua refrigeração e quer usar 100% do processador, mas sem travar por causa do disco:
# Tenta usar tudo, mas freia se o sistema começar a engasgar
MAKEOPTS="--jobs 16 --load-average 16"
Ao usar --load-average, o tempo total de compilação praticamente não muda, mas a responsividade do sistema melhora drasticamente. O Portage passa a gerenciar os picos de uso de RAM e Disco automaticamente, evitando o temido
OOM Kill ou travamento total.
Então, após ajeitar e dar um "
emerge --resume" tudo foi de boa.
Essa dica é massa para quem compila em tmpfs (RAM) ou utiliza HDs mecânicos.
Nenhum comentário foi encontrado.