Liberer de la mémoire sous Linux

From Tuxunix
Jump to: navigation, search

Libérer la mémoire cache du serveur

Astuce pour forcer le noyau à abandonner la page de cache, inode dentry caches. Cette astuce peut contribuer à libérer la mémoire de Linux sans redémarrage.

Note: Il s'agit d'une opération non-destructive. Dirty objets ne sont pas freeable, par conséquent, vous devez exécuter la synchronisation préalable.

Pour utilisation de "/proc/sys/vm/drop_caches" :

  • Pour libérer pagecache:
#> sync; echo 1 > /proc/sys/vm/drop_caches
  • Pour libérer dentries et inodes:
#> sync; echo 2 > /proc/sys/vm/drop_caches
  • Pour libérer pagecache, dentries et inodes:
#> sync; echo 3 > /proc/sys/vm/drop_caches
  • Remise Par défaut :
#> sync; echo 0 > /proc/sys/vm/drop_caches


Avant :

MemAvant.jpg

Après :

MemApres.jpg


Forcer l'utilisation quasi-total de la RAM avant de swapper

La variable swappiness permet de faire varier l’utilisation de la mémoire vive par rapport à la swap.

Par défaut, cette variable est fixée à 60 sur une échelle qui va de 0 à 100.

Plus cette valeur est élevée plus le système va avoir tendance à swapper au détriment de l’utilisation de la mémoire vive.

Cela peut améliorer les performances du système, en modifiant la valeur :

#> echo 10 > /proc/sys/vm/swappiness
  • Prise en compte a chaque démarrage :
#> echo "vm.swappiness = 10" >> /etc/sysctl.conf


Forcer la libération de la swap

  • Attention vérifier que vous avez de la ram disponible avant!!
#> swapoff -a
#> swapon -a


Connaitre les processus qui swap

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` ; do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
 
done
echo "Overall swap used: $OVERALL"