La mémoire vive sous Linux
Objectifs
Savoir obtenir l'utilisation de la RAM sur la machine
Comprendre la subtilité entre mémoire libre et disponible
Attention : Utilisation mémoire vive
La mémoire vive est essentielle au bon fonctionnement de l'ordinateur : si elle vient à manquer les différents programmes risquent de fortement ralentir (en attendant que de la mémoire se libère pour leur utilisation), voire même de cesser de fonctionner.
Méthode :
La commande free
permet de mesurer l'utilisation globale de mémoire vive sur la machine. Ou utilise l'option -h
pour utiliser un affichage simple à lire pour un humain.
$ free -h
total used free shared buff/cache available
Mem: 7,7Gi 3,7Gi 2,3Gi 832Mi 1,7Gi 2,9Gi
Swap: 3,7Gi 0B 3,7Gi
L'information est donnée pour la mémoire RAM ainsi que pour le swap
. On y trouve les 3 informations principales :
la quantité de mémoire sur la machine, ici 7,7 Gio pour la RAM et 3,7 Gio pour le
swap
la quantité de mémoire utilisée actuellement, ici 3,7 Gio
la quantité de mémoire libre, ici donc 2,3 Gio
Cependant si l'on fait la soustraction entre la mémoire totale et la mémoire utilisée, on n'obtient pas ce qui est indiqué comme mémoire disponible. Pour cela il faut se pencher sur les 3 colonnes suivantes :
shared
indique la part de mémoire qui est partagée entre plusieurs programmes, cela n'a pas beaucoup d'importancebuff/cache
indique la quantité de mémoire utilisée par l'OS pour sesbuffers
et ducache
available
indique une estimation de la mémoire qui est disponible si un programme en demande
Complément : Mémoire libre vs mémoire disponible
En réalité le système d'exploitation utilise une partie de la mémoire vive pour optimiser son fonctionnement et proposer une meilleure performance, en utilisant deux mécanismes.
Le premier est les buffers
, qui permettent de stocker de l'information, pour une durée très courte, en attente de son traitement (par exemple un fichier qui vient d'arriver par le réseau et qui va être écrit sur le disque).
Le second est le cache
, qui permet de garder en mémoire des informations que l'on pense réutiliser prochainement. Par exemple un fichier qui est souvent lu : pour accélérer la lecture, le système d'exploitation peut garder en cache
, donc dans la RAM, une copie du fichier.
Les mécanismes de buffers
ou de cache
pourraient faire l'objet d'un cours entier, ce qu'il est important de retenir c'est que le système d'exploitation utilise une partie de la mémoire vive pour optimiser son fonctionnement. Et cette mémoire utilisée peut-être, en partie, libérée très rapidement car elle n'est pas essentielle au fonctionnement de l'ordinateur. C'est pour cela que l'on distingue la mémoire libre (celle qui est effectivement inutilisée) et la mémoire disponible (la mémoire libre + une partie des buffers
et cache
qui peuvent être libérés instantanément si besoin).
Attention : Multiples de l'octet
Lorsque l'on manipule des valeurs ayant pour unité des octets, on connaît généralement les multiples suivant :
kilooctet (ko) pour 1000 octets
mégaoctet (Mo) pour 1 million d'octets
gigaoctet(Go) pour un milliard d'octets
C'est ce que l'on appelle les préfixes du Système International d'unités, ce sont des puissances de 10.
Historiquement en informatique on manipule souvent des puissances de 2, en particulier lorsque l'on mesure des quantités de donnée. Pour cela on utilise les préfixes binaires :
kibioctet (Kio) pour 1024 octets
mébioctet (Mio) pour 220 octets (1 048 576)
gibioctet (Gio) pour 230 octets (1 073 741 824)
Il est donc important de ne pas mélanger les deux unités, car même si l'ordre de grandeur reste similaire, la différence devient significative pour les multiples élevées (giga, téra, péta, etc.)
À retenir
La mémoire vive est utilisée aussi bien par les programmes que par le système d'exploitation, pour stocker des données de fonctionnement mais aussi pour optimiser les performances du système. On peut obtenir rapidement un aperçu de l'utilisation qui est faites grâce à la commande free
.