Exclui usuário do killer da OOM no unix

3

Existe alguma maneira de excluir alguns usuários do assassino de falta de memória no Unix? Por outro lado, posso definir a prioridade para o usuário?

    
por Yoki 15.06.2015 / 22:30

1 resposta

2

Não há como instruir o OOM a ignorar processos específicos do usuário. Embora você possa instruí-lo a ignorar um processo específico e com base nele você pode construir um loop que irá verificar todos os processos para um usuário específico e atualizá-lo via cron ou qualquer outra maneira que você desejar. O próprio ciclo parecerá algo assim:

while read r_pid ; do 
    echo -16 | sudo tee /proc/$r_pid/oom_adj ; 
done < <(pgrep -U Yoki)

você pode envolvê-lo no script e agendar para ser executado uma vez por minuto ou qualquer intervalo que desejar.

ou você pode desativar completamente o OOM com

sysctl vm.overcommit_memory=2
echo "vm.overcommit_memory=2" >> /etc/sysctl.conf

embora não seja recomendado, pois pode levar a um comportamento inesperado, como pânico no kernel ou travamento do sistema.

    
por 15.06.2015 / 22:49