O que você /proc/sys/vm/overcommit_memory
definiu? Na documentação do 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.
Portanto, se você estiver usando 1, não há diferença. Se você estiver usando 2 e nenhum arquivo de troca linux, nenhum processo poderá alocar 512M de memória (virtual). O resultado não está claro para 0.
Edit: From http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit, é assim que 0 funciona:
O overcommit heurístico tenta calcular quanta memória o sistema poderia fornecer se recuperasse toda a memória possível e nenhum outro processo usasse mais RAM do que atualmente; se você estiver pedindo mais do que isso, sua alocação será recusada. Especificamente, o número teórico de 'memória livre' é calculado adicionando espaço de troca livre, RAM livre (menos 1/32 se você não for root) e todo o espaço usado pelo cache de buffer unificado e pelos dados do kernel rotulados como recuperáveis (menos algumas páginas reservadas).
Portanto, ele também usa swap no cálculo. Em geral, eu segui a recomendação do 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