Salut, Linux fourni de la mémoire en supposant qu’une partie des programmes ne vont pas l’utiliser, est donc qu’il n’aura pas à l’allouer réellement... C’est un comportement voulu. Voici un extrait de man malloc :
By default, Linux follows an optimistic memory allocation strategy. This means that when malloc() returns non-NULL there is no guarantee that the memory really is available. In case it turns out that the system is out of memory, one or more processes will be killed by the OOM killer. For more information, see the description of /proc/sys/vm/overcommit_memory and /proc/sys/vm/oom_adj in proc(5), and the Linux kernel source file Documentation/vm/overcommit-accounting.
Il y a heureusement une façon de forcer Linux à allouer réellement la mémoire. Extrait de man proc :
With strict overcommit enabled on the system (mode 2 /proc/sys/vm/overcommit_memory), allocations which would exceed the CommitLimit (detailed above) will not be permitted. This is useful if one needs to guarantee that processes will not fail due to lack of memory once that memory has been successfully allocated.
En gros un petit echo 2 >/proc/sys/vm/overcommit_memory réglera le problème de l’OOM. Les logiciels seront notifié qu’il y a plus de mémoire. De là à dire qu’ils géreront correctement, je ne sais pas.
# Éviter le OOM
Posté par Anthony Jaguenaud . En réponse au message MySQL - oom killer. Évalué à 2.
Salut, Linux fourni de la mémoire en supposant qu’une partie des programmes ne vont pas l’utiliser, est donc qu’il n’aura pas à l’allouer réellement... C’est un comportement voulu. Voici un extrait de
man malloc:Il y a heureusement une façon de forcer Linux à allouer réellement la mémoire. Extrait de
man proc:En gros un petit
echo 2 >/proc/sys/vm/overcommit_memoryréglera le problème de l’OOM. Les logiciels seront notifié qu’il y a plus de mémoire. De là à dire qu’ils géreront correctement, je ne sais pas.