Les processus dormant garde une partie de la mémoire RAM en réserve sans l'utiliser, il arrive parfois que certains processus en garde tellement qu'il n'y en a plus de disponible pour les autres applications, il est donc nécessaire de désallouer afin de rendre la mémoire de nouveau disponible.
On commence par jeter un oeil à la mémoire libre et utilisée à l'aide de la commande
free -m :
$ free -m
total used free shared buffers cached
Mem: 7974 5143 2831 0 650 2436
-/+ buffers/cache: 2056 5917
Swap: 509 46 463
L'option
-m indique qu'on affiche ces chiffres en
Mo.
On place un
3 dans le fichier
/proc/sys/vm/drop_caches afin de libérer la mémoire cache :
$ echo 3 > /proc/sys/vm/drop_caches
Enfin on revérifie la mémoire après le vidage du cache :
$ free -m
total used free shared buffers cached
Mem: 7974 383 7591 0 59 22
-/+ buffers/cache: 300 7674
Swap: 509 46 463
Et voilà, la mémoire est libérée, on peut voir que le cache est passé de 2436 Mo à 22 Mo.
La mémoire utilisé passe de 5143 Mo à 383 Mo.
En lisant le man 5 de proc, j'ai lu qu'il fallait lancer sync avant d'executer la commande que tu décris:
-----------
/proc/sys/vm/drop_caches (depuis Linux 2.6.16)
L'écriture dans ce fichier fera que le noyau nettoyera les caches, les entrées de répertoires et les inœuds de la mémoire, libérant celle-ci.
Pour libérer les caches, utilisez echo 1 > /proc/sys/vm/drop_caches ; Pour libérer les entrées de répertoires et les inœuds, utilisez echo 2 > /proc/sys/vm/drop_caches ; Pour libérer les caches les entrées de répertoires et les inœuds, utilisez echo 3 > /proc/sys/vm/drop_caches.
Parce que cette opération est non destructive et que les objets « sales » ne sont pas libérables, l'utilisateur devrait d'abord lancer sync(8).
merci pour cette info.
Elle m\'a permit de régler des dysfonctionnement sur mon serveur asterisk.