O que você está perguntando é, basicamente, um retorno de chamada baseado em kernel em uma condição de pouca memória, certo? Se assim for, eu acredito strongmente que o kernel não fornece tal mecanismo, e por uma boa razão: estando com pouca memória, ele deve executar imediatamente a única coisa que pode liberar alguma memória - o assassino da OOM. Qualquer outro programa pode interromper a máquina.
De qualquer forma, você pode executar uma solução de monitoramento simples no espaço do usuário. Eu tive o mesmo requisito de debug / action de baixa memória no passado, e escrevi um bash simples que fez o seguinte:
-
monitore uma marca d'água : se o uso de memória estiver acima desse limite, colete algumas estatísticas (processos, memória livre / usada, etc) e envie um e-mail de aviso;
-
monitore uma marca d'água : se o uso de memória estiver acima desse limite, colete algumas estatísticas e mate os processos com mais memória (ou menos importante) e, em seguida, envie um e-mail de alerta. / p>
Esse script seria muito leve e pode pesquisar a máquina em intervalos pequenos (por exemplo: 15 segundos)