Le 29/11/2019, Edgar a écrit :
> Apparemment tu es embêté par la politique « overcommit memory » du noyau.
> En gros, quand un processus demande de la mémoire, le noyau dit
> souvent « OK », même s'il n'y en a plus.[1] Il ne répond « non » qu'aux
> demandes les plus délirantes. Il part du principe qu'une grosse partie
> de la mémoire demandée ne sera jamais vraiment utilisée. Il paraît qu'il
> y a pas mal de programmes qui ont cette tendance à juste demander au cas
> où...
>
> Tu peux changer la politique par défaut avec :
>
> sudo sysctl vm.overcommit_memory=2
>
> où la valeur « 2 » signifie « Don't overcommit. ».[2] Regarde aussi le
> paramètre vm.overcommit_ratio. Tu peux rendre les réglages définitifs en
> les sauvant dans /etc/sysctl.conf.[3]
Dans la doc, je lis :
"2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable amount (default is 50%) of physical RAM."
Et :
"The current overcommit limit and amount committed are viewable in
/proc/meminfo as CommitLimit and Committed_AS respectively."
Chez moi, j'ai :
$ cat /proc/meminfo | grep Commit
CommitLimit: 4088616 kB
Committed_AS: 9431416 kB
Comme j'ai désactivé le swap, le CommitLimit vaut bien 50% de ma RAM (qui
fait 8Go). Par contre, on voit bien qu'il a alloué plus que la mémoire
(9Go)...
Si je met le paramètre vm.overcommit_memory à 2, seule la moitié de la
mémoire dispo sera réelle utilisée, c'est bien ça ? Du coup, il faut en //
augmenter le paramètre CommitLimit (via vm.overcommit_ratio, si j'ai bien
suivi).
J'ai juste ?
Le ratio, je le met à 1, pour pouvoir tout allouer ?
--
Frédéric