Eu estive pesquisando o excesso de memória no Linux usando /proc/sys/vm/overcommit_memory
e li alguns artigos que não dizem a mesma coisa.
Este documento , sob o título "Indo na direção errada", continua dizendo: "valores 1: supercomprometem e 0 (padrão): não", mas, nas próximas linhas, menciona, entre outros coisas, que isso não é realmente verdade e que 0 significa "adivinhar o quanto o comprometimento excessivo é razoável". Isso significa que o overcommit de memória não é desativado usando o valor 0, certo?
Ele também diz que 1 indica "nunca recuse nenhum malloc ()", com 2 significando "seja preciso sobre a confirmação excessiva - nunca confirme um espaço de endereço virtual maior que o espaço de troca mais uma fração overcommit_ratio da memória física".
A revista Red Hat , por outro lado, afirma: "se o valor for 0, o kernel verificará se há memória suficiente para conceder uma solicitação de memória a uma chamada malloc de um aplicativo. Se houver memória suficiente, então a solicitação é concedida. Caso contrário, ela é negada e um código de erro é retornado ao aplicativo. " Isso soa exatamente como desabilitar a confirmação excessiva.
"Se o valor for definido como 1, o kernel concede alocações acima da quantidade de RAM física e troca no sistema conforme definido pelo valor overcommit_ratio .... Se a configuração neste arquivo for 2, o kernel permitirá todas as alocações de memória , independentemente do estado atual de alocação de memória ". Em termos dos valores 1 e 2, é o contrário do que o documento anterior disse, certo?
Alguém sabe o que está realmente correto e se é possível 'desativar' a supercomprometimento?