No 11.04, /proc/[pid]
contém oom_score_adj
, mas man proc
descreve o antigo oom_adj
. Pesquisei, sem êxito, qualquer informação sobre como usar isso.
O que eu preciso organizar é que os processos iniciados por 'pbs' ou 'gridengine' sejam mortos antes que qualquer outra coisa seja morta. Como eu posso fazer isso?
process
memory-usage
bmargulies
fonte
fonte
Respostas:
Baseado em minhas próprias perguntas e respostas sobre Unix e Linux em uma pergunta semelhante.
Como Stuart apontou muito bem em sua resposta , valores válidos são números inteiros no intervalo de -1000 a 1000 para
oom_score_adj
. Quanto menor o valor, menor a chance de ser morto.É muito inconveniente ter que alterar esse valor repetidamente depois de reiniciar o aplicativo. As informações são simplesmente perdidas após o término do processo. Upstart (o daemon init no Ubuntu), tem uma boa opção para isso configurar para daemons para garantir que seja definido sempre que for (re) iniciado:
Então, basicamente, você pode editar o
/etc/init/myservice.conf
arquivo de configuração dos serviços que você deseja alterar, para incluir uma linhaoom score -1000
. Suponho que os serviços 'pbs' ou 'gridengine' de que você está falando na sua pergunta sejam ativados pelo Upstart, caso contrário, você precisará de outra maneira de mudar isso permanentemente.fonte
Se você pode modificar o script de inicialização que gera o processo que deseja priorizar para oom-killer, adicione o seguinte ao script de inicialização:
O valor é herdado para processos filho.
fonte
Se você definir um valor alto (ish) para oom_adj ou oom_score_adj, eles serão eliminados primeiro. por exemplo
oom_adj vai de -16 a 15 e, como mencionado acima, oom_score_adj aceita -1000 a 1000
fonte
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
Examinar o código é sempre uma boa ideia. Normalmente eu uso a função de pesquisa do kernel.org, mas atualmente está inativa. O Github também faz um bom trabalho. Eu achei isto:
Em https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.h
fonte
Nós escolhemos agora.
tl; dr:
choom --adjust -100 myprogram
.A página do manual tem mais informações.
fonte