Pular para o conteúdo

Usando o --load-average no Gentoo para evitar OOM Kill

Dica publicada em Linux / Configuração
Xerxes xerxeslins
Hits: 587 Categoria: Linux Subcategoria: Configuração
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Usando o --load-average no Gentoo para evitar OOM Kill

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"
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Como instalar o Surfshark VPN no GNU/Linux

Instalação do distrobox no Gentoo

Memtest86 USB no Linux

XFCE tentando iniciar o Nautilus?

Galeria XUBUNTU (screenshots)

Instalando o Módulo de Segurança para Internet Banking warsaw no Void Linux

Como colocar o tema Oxygen no Slackware [vídeo]

Acentuando corretamente suas mensagens no cliente de email Evolution

Debian - Erro hostname "(none)" [Resolvido]

Reinstalando o GRUB com o DVD do Fedora 5

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.