receber sinal antes que o processo seja morto pelo killer / cgroups do OOM


11

Em nosso cluster, estamos restringindo os recursos de nossos processos, por exemplo, memory ( memory.limit_in_bytes).

Eu acho que, no final, isso também é tratado através do killer OOM no kernel do Linux (parece com isso lendo o código-fonte ).

Existe alguma maneira de obter um sinal antes que meu processo seja finalizado? (Assim como a -notifyopção para SGEsqsub , que serão enviadas SIGUSR1antes do término do processo.)

Eu li sobre /dev/mem_notify aqui, mas não tenho - há algo mais hoje em dia? Eu também li isso que parece um pouco relevante.

Quero ser capaz de, pelo menos, despejar um pequeno rastreamento de pilha e talvez outras informações úteis sobre depuração - mas talvez eu possa me recuperar liberando alguma memória.

Uma solução alternativa que estou usando atualmente é esse pequeno script que verifica frequentemente se estou próximo (95%) do limite e, se estiver, envia o processo a SIGUSR1. No Bash, estou iniciando esse script em background ( cgroup-mem-limit-watcher.py &) para que ele procure por outros procs no mesmo cgroup e saia automaticamente quando o processo do Bash pai morre.


Não consegui encontrar nenhuma fonte de autoridade, nem encontrei uma maneira de chamar o OOM killer para um processo específico manualmente (para testar a idéia) , mas, pelo que descobri, parece que o OOM killer simplesmente envia SIGTERM, então você deve definir um manipulador para esse sinal.
Hi-Angel

5
@ Hi-Angel: A partir do código fonte do Linux , parece que ele envia o SIGKILL.
Albert

@ Albert Depois de ler o código fonte, também acho que o OOM Killer enviará diretamente um sinal SIGKILL.
andy

Respostas:



5

O OOM killer envia um SIGKILL, pois, caso contrário, seria contraproducente deixar o programa problemático ter a opção de continuar.

Isso significa que não há absolutamente nenhuma maneira de um processo saber quando está prestes a ser morto por ele.

Gerenciar esses problemas geralmente implica fazer correções nos programas ou em suas configurações. Às vezes, dependendo da configuração do sistema, o simples aumento do espaço de troca pode dar ao sistema operacional mais flexibilidade no gerenciamento de memória para evitar medidas drásticas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.