Em geral, provavelmente não terá um efeito ruim. No entanto, o Linux por padrão permite supercomprometir a memória . Isso significa que, se um processo pedir memória, o Linux dirá "seguro". Então, se ele realmente ficar sem memória (incluindo espaço de troca), o Linux iniciará a eliminação de processos para liberar memória.
Portanto, se o seu processo alocar 117 GB, mas não usar a maior parte dele, ele mostrará 117 GB de memória virtual. No entanto, se o seu processo, de repente, decidir que vai encher 117 GB, o Linux ficará sem memória e o matará, e talvez outros processos também (é aí que o efeito ruim entra).
O kernel do Linux pode ser configurado quanto ao comprometimento excessivo que ele permitirá. O processo de como fazer isso é descrito nesse link, mas vou descrevê-lo aqui também para manter tudo em um só lugar.
Nos kernels Linux ≥ 2.5.30, existem dois arquivos proc que regulam isso. Primeiro, há /proc/sys/vm/overcommit_memory
. Isso pode ter três valores:
-
0
: deixa o kernel decidir por si mesmo quanto de excesso de permissão ele permite -
1
: permite supercomprometimento ilimitado -
2
: permitir supercomprometimento de acordo com/proc/sys/vm/overcommitment_ratio
.
O outro arquivo proc, /proc/sys/overcommitment_ratio
, denota a porcentagem de supercomprometimento de memória que será permitida se o outro estiver definido como 2
. Se overcommit_memory
estiver definido como 2
, o Linux permitirá que todo o espaço de troca seja confirmado, além de overcommitment_ratio
% de RAM.