Linux OOM-killer desabilitando problemas

Linux OOM-killer desabilitando problemas

Eu tenho uma máquina Linux sem swap, que possui vm.overcommit_memory=2e vm.overcommit_ratio=100configurada. No entanto, essas configurações parecem não ter efeito. Alguns processos recém-iniciados que tentam consumir muita memória ainda estão sendo eliminados pelo OOM em vez de terem a alocação de memória negada. É porque os processos iniciados antes sysctl -w vm.overcommit_memory=2 vm.overcommit_ratio=100(por exemplo, antes de /etc/sysctl.confserem aplicados durante a inicialização) ainda podem acessar sua memória supercomprometida e, assim, acionar o OOM-killer?É possível (1) desabilitar a superalocação de memória usando parâmetros do kernel ou (2) em tempo de execução forçar o kernel a alocar toda a memória supercomprometida para todos os processos?

EDIT: Depois de navegar relevante Documentation/e alguns códigos-fonte do Linux (git c6fa8e6de3)(1)parece improvável.

Responder1

Você está tentando algo que simplesmente não é possível. Se você deixar o sistema funcionar quase até a exaustão, sempre haverá a possibilidade de um processo ser encerrado devido ao esgotamento da memória. Existem muitos cenários que não podem ser evitados, mas o mais fácil de entender é uma falha de página causada por um processo que adiciona uma página à sua pilha.

Você precisa de uma troca ou de uma almofada de RAM se quiser evitar a morte.

informação relacionada