O que o sistema fará com os 20% restantes?
O kernel usará a memória física restante para seus próprios propósitos (estruturas internas, tabelas, buffers, caches, qualquer que seja). A configuração de comprometimento excessivo de memória manipula as reservas de memória virtual do aplicativo do usuário, o kernel não usa memória virtual, mas física.
Por que esse parâmetro é necessário em primeiro lugar?
O overcommit_ratio
parâmetro é uma opção de implementação projetada para impedir que os aplicativos reservem mais memória virtual do que o que razoavelmente estará disponível para eles no futuro, ou seja, quando eles realmente acessarem a memória (ou pelo menos tentarem).
Definir overcommit_ratio
para 50% foi considerado um valor padrão razoável pelos desenvolvedores do kernel do Linux. Ele assume que o kernel nunca precisará usar mais de 50% da RAM física. Sua milhagem pode variar, o motivo pelo qual é ajustável.
Por que nem sempre devo configurá-lo para 100%?
Configurá-lo para 100% (ou qualquer valor "muito alto") não desabilita o comprometimento excessivo de maneira confiável, porque você não pode assumir que o kernel utilizará 0% (ou muito pouco) de RAM.
Ele não impedirá que os aplicativos travem, pois o kernel pode antecipar de qualquer maneira toda a memória física que ele exige.
Definir a proporção para 100% não reservará espaço para páginas com backup de arquivo ou alocações no kernel, como código do kernel, buffers de rede, etc.
As estruturas no kernel serão alocadas independentemente, causando supercomprometimento. Eles geralmente são limitados individualmente (por exemplo, há uma configuração para buffers de rede). Não acho que exista um limite geral de 50%, embora um limite geral seja algo que tenha sido trabalhado com o objetivo de hospedar contêineres.
As páginas com backup de arquivo são onde você normalmente executa o código do espaço do usuário, portanto, você também precisa de espaço para isso.
fonte