Trucs et astuces
KB N°2759

La mémoire sous Linux

Versions: V.5.x V6.x
Publié le lundi 12 mars 2018
Modifié le mercredi 25 juillet 2018

Les serveurs utilisent beaucoup de mémoire vive, nous allons expliquer les raisons de ce phénomène.

CONTEXTE

La gestion de la mémoire sous Linux est souvent source de questions et d’inquiétudes.

En effet, on se retrouve fréquemment avec un serveur utilisant beaucoup de sa mémoire vive.

Le but de cet article sera donc d’expliquer les raisons de ce phénomène ainsi que donner quelques pistes afin de pouvoir vérifier si cette utilisation  a un impact sur les performances de votre serveur.

Il vous permettra de mieux appréhender le fonctionnement de la mémoire et les outils pour l’optimiser.

 

Les différents espaces de mémoires

Nous allons dans un premier temps faire un rapide tour d’horizon sur les différentes mémoires d’un système LINUX.

  1. Used : la mémoire utilisée par les processeurs et le noyau.
  2. Free : la mémoire qui est disponible.
  3. Shared : la mémoire qui est partagée par plusieurs processus en même temps. Elle est inclue dans la mémoire "used". La mémoire partagée contient également le code des processus qui sont lancés plusieurs fois. Le code n'est chargé qu'une seule fois en mémoire. Il est donc difficile d'analyser la place exacte prise par un processus dès qu'il utilise de la mémoire partagée. 
  4. Bufered/cache : elle accélère les accès disques et fichiers. L’espace qu’elle occupe est disponible pour d'autres processus en cas de besoin. Nous attirons votre attention sur le fait que plus la mémoire disponible est faible, moins le mécanisme de cache disque sera efficace. Tous les SGBD se basent sur ce mécanisme pour accélérer leurs traitements. Donc si toute la mémoire est utilisée, il n'y a plus de possibilité de faire du cache, et chaque accès disque est plus coûteux
  5. SWAP : Si des processus sont inoccupés, ils peuvent être transférés dans le SWAP et libérer de la mémoire vive. Ce n'est pas un problème tant que la machine n'est pas à cours de mémoire. Cela permet de libérer de la place pour des processus qui en auraient plus besoin, ou pour le cache disque. La SWAP prend également le relais quand la quasi-totalité de la RAM est utilisée.

 

Le fonctionnement de la mémoire

Linux évite le gaspillage de mémoire, c’est pour ça qu’il emploie un maximum de RAM afin d’en optimiser l’usage. Les processus basculent sur la SWAP quand la valeur configurée dans la swapiness est atteinte (en %).

Pour connaître cette valeur il faudra taper la commande ⇒  
cat /proc/sys/vm/swappiness :

Utilisateur1:~/$ cat /proc/sys/vm/swappiness
60

Dans cet exemple dès qu’il restera 60 % de RAM de disponible, les processus basculeront sur la SWAP.
Une SWAP trop utilisée générera des lenteurs sur la machine.


En bref :

Linux utilise le plus de RAM possible même si peu de logiciels tournent, afin d’optimiser les performances. Si la RAM est saturée (swapiness atteint), des processus basculent sur la SWAP. Si la SWAP est trop chargée, le système subira des lenteurs.

 

Les outils

Il existe différents outils pour vous permettre d’analyser et d’optimiser les performances de votre mémoire que nous allons vous faire découvrir dans cette partie:

  • HTOP : se lance en exécutant la commande : htop 
    Si le message suivant apparaît :
    root@olfeo-1:/# htop
    bash: htop: command not found
    Il vous faudra installer HTOP de la façon suivante ⇒
    apt-get update ⇒ pour mettre les dépôts a jour
    apt-get install -y htop ⇒ lancer l’installation

Une fois la commande HTOP de lancée :
 

Dans la partie haute de l'interface on peut voir l'utilisation du CPU en pourcentage: de 1 a x (x= nombre de proc)

L'utilisation de la mémoire en Mo par rapport à la totalité de mémoire disponible ainsi que la mémoire swap utilisée.

  •  La mémoire used apparaît en vert
  •  La mémoire free apparaît en noir ou gris
  •  La mémoire Buffers/cached apparaît en bleu et jaune

Le temps depuis lequel le système est démarré est également indiqué.

Ensuite, un "tableau" listant les processus est présenté où vous pouvez retrouver une multitude d'information (l'utilisateur qui l'a exécuté, le pourcentage de mémoire et de CPU qu'il utilise ainsi que la commande qui sert à l'exécuter).

Pour finir, dans la partie basse un menu explique les différentes actions qui sont disponibles.

 

  • FREE :

La commande FREE permet d'afficher l'état de la mémoire RAM du système, elle possède plusieurs options.

La commande free affiche un résultat tel que : root@olfeo-1:/#free

 TotalUsedFreeSharedBuff/CacheAvailable
Mem :163949688288476229520031222058112927456012
Swap :16691196016691196   

 

La RAM et la SWAP sont séparés en plusieurs colonnes qui représentent les différents états expliqués précédemment. La commande FREE possède quelques options pour adapter vos résultats :

free -M⇒ Pour afficher les resultats en Mo

free -k ⇒ Pour afficher les résultats en Ko

free -t ⇒ pour afficher le total swap +ram

 

ÉTAPES

Les commandes utiles

Après avoir analysé l’état de votre mémoire et constaté certaines incohérences, vous aurez sûrement besoin d’exécuter les commandes suivantes :

Modifier la SWAPINESS⇒   sysctl vm.swappiness=10

Activez et désactivez la partition SWAP pour que le paramétrage soit pris en compte.
Cette modification sera effective uniquement jusqu’au prochain reboot du système

Pour modifier la SWAPINESS de façon permanente
Ajoutez la ligne suivante au fichier /etc/sysctl.conf
vim /etc/sysctl.conf`
vm.swappiness=10`

Vider le cache mémoire
 `sysctl -w vm.drop_caches=3`

Activer et désactiver la partition de SWAP ⇒ 

  • Connaître les partitions de SWAP montées en Go: swapon  --show SIZE

root@olfeo-1:/#swapon –show SIZE

NAME      TYPE       SIZE USED PRIO

/dev/dm-1 partition 15,9G   0B   -1

  • Démontez les partitions de SWAP: swapoff -av (Faire cette manipulation vide le contenu de la swap dans la RAM, il faut donc que la free > SWAP utilisée )

root@olfeo-1:/#swapoff -av

swapoff /dev/dm-1

  • Remontez les partitions de SWAP: `swapon -av`

root@olfeo-1:/#swapon -av

swapon: /dev/mapper/aparolari--vg-swap_1: found signature [pagesize=4096, signature=swap]
swapon: /dev/mapper/aparolari--vg-swap_1 : taille de page : 4096, taille d'espace d'échange : 17091788800, taille de périphérique : 17091788800
swapon /dev/mapper/aparolari—vg-swap₁


Pour conclure, le fait que votre RAM soit utilisée dans sa quasi-totalité n’est pas forcément signe de mauvais fonctionnement ou de ralentissement.

En revanche la SWAP ne doit jamais être remplie sous peine de ralentir le système.
 

Avez-vous trouvé cet article utile ?
Revenir à la liste des articles
En visitant ce site, vous acceptez l'utilisation de cookies. Nous utilisons des cookies pour améliorer votre navigation sur notre site. En savoir plus.Ok