A supercomissão de memória pode ser desativada por vm.overcommit_memory=2
0 é o modo padrão, onde o kernel determina heuristicamente a alocação calculando a memória livre comparada com a solicitação de alocação sendo feita. E defini-lo como 1 ativa o modo de magia, onde o kernel sempre anuncia que tem memória livre suficiente para qualquer alocação. A configuração para 2 significa que os processos só podem alocar até (RAM + troca) e começarão a receber falhas de alocação ou mensagens OOM quando ultrapassarem essa quantia.
É seguro fazê-lo, não. Eu não vi nenhum caso de uso adequado em que a desativação do overcommit de memória realmente ajudou, a menos que você tenha 100% de certeza da capacidade de carga de trabalho e hardware. Caso esteja interessado, instale o pacote kernel-docs
e vá para /Documentation/sysctl/vm.txt
para ler mais.
Se você definir vm.overcommit_memory=2
, não precisará se preocupar com overcommit_ratio.
echo 0/1/2 > /proc/sys/vm/overcommit_memory
Isso não sobreviverá a uma reinicialização. Para persistência, coloque isso em /etc/sysctl.conf
file:
vm.overcommit_memory=X
e execute sysctl -p
. Não há necessidade de reiniciar.