¿A qué te has /proc/sys/vm/overcommit_memory
puesto? De la documentación del kernel:
0 - Heuristic overcommit handling. Obvious overcommits of
address space are refused. Used for a typical system. It
ensures a seriously wild allocation fails while allowing
overcommit to reduce swap usage. root is allowed to
allocate slightly more memory in this mode. This is the
default.
1 - Always overcommit. Appropriate for some scientific
applications.
2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable percentage (default is 50) of physical RAM.
Depending on the percentage you use, in most situations
this means a process will not be killed while accessing
pages but will receive errors on memory allocation as
appropriate.
Por lo tanto, si está utilizando 1, no hay diferencia. Si está utilizando 2 y ningún archivo de intercambio de Linux, entonces ningún proceso podrá asignar 512M de memoria (virtual). El resultado no está claro para 0.
Editar: desde http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommitir así es como funciona 0:
Los intentos heurísticos de sobrecompromiso para calcular cuánta memoria podría darle el sistema si recuperara toda la memoria que pudiera y ningún otro proceso utilizara más RAM de la que es actualmente; Si solicita más que esto, su asignación es rechazada. En concreto, el número teórico de "memoria libre" se calcula sumando espacio de intercambio libre, RAM libre (menos 1/32 si no es root) y todo el espacio utilizado por la memoria caché unificada del búfer y los datos del kernel etiquetados como recuperables (menos algunas páginas reservadas).
Por lo tanto, también utiliza el intercambio en el cálculo. En general, seguiría la recomendación de RHEL de:
M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
S = M *2
Else
S = M + 2