Analyse de la mémoire sur Linux — vmstat, free, smem

23 avril 2026 — par

La gestion de la mémoire est un aspect crucial de l’administration système sur Linux. Comprendre comment la mémoire est utilisée et diagnostiquer les problèmes de mémoire peut grandement améliorer les performances de votre système. Dans cet article, nous allons explorer les différents types de mémoire sur Linux et comment utiliser des outils comme vmstat, free, et smem pour analyser l’utilisation de la mémoire.

Types de Mémoire sur Linux

Mémoire Vive (RAM)

La mémoire vive, ou RAM, est la mémoire physique utilisée pour stocker les données et les instructions que le CPU peut accéder rapidement. C’est un composant essentiel pour les performances du système.

Mémoire Virtuelle

La mémoire virtuelle est une technique de gestion de la mémoire qui permet à un système d’exploitation d’utiliser le disque dur pour étendre la RAM. Cela permet d’exécuter des applications qui nécessitent plus de mémoire que la RAM physique disponible.

Mémoire Swap

La mémoire swap est une partie du disque dur utilisée comme mémoire virtuelle. Lorsque la RAM est pleine, les pages de mémoire inactives sont déplacées vers le swap pour libérer de la RAM.

 

Outils de Diagnostic de la Mémoire

Commande free

La commande free affiche la quantité de mémoire physique et de swap utilisée et libre sur le système, ainsi que les buffers et caches utilisés par le noyau. Voici une explication des colonnes de sortie :

  • total : La quantité totale de mémoire RAM installée sur le système.
  • used : La quantité de mémoire utilisée. Cela inclut la mémoire utilisée par les applications et les caches du noyau.
  • free : La quantité de mémoire inutilisée qui n’est pas allouée à des applications ou des caches.
  • shared : La mémoire utilisée (généralement) par tmpfs. Il s’agit de la mémoire partagée entre plusieurs processus.
  • buff/cache : La quantité de mémoire utilisée par les buffers et les caches du noyau. Les buffers sont utilisés pour les opérations d’entrée/sortie sur les disques, tandis que les caches sont utilisés pour accélérer l’accès aux fichiers.
  • available : Une estimation de la quantité de mémoire disponible pour le démarrage de nouvelles applications, sans swap. Cela inclut la mémoire non utilisée et la mémoire de cache qui peut être libérée si nécessaire.
root@www1 ~ $ free -h
total used free shared buff/cache available
Mem: 251G 38G 204G 1.7G 8.3G 213G
Swap: 31G 0B 31G



Commande ps

La commande ps est utilisée pour obtenir des informations sur les processus en cours d’exécution. Voici quelques colonnes pertinentes pour l’analyse de la mémoire :

  • PID : L’identifiant du processus.
  • USER : Le propriétaire du processus.
  • %MEM : Le pourcentage de la mémoire physique utilisée par le processus.
  • VSZ : La taille virtuelle du processus en KiB. Cela inclut toute la mémoire virtuelle utilisée par le processus, y compris la mémoire partagée et la mémoire swap.
  • RSS : La taille résidente du processus en KiB. Il s’agit de la partie de la mémoire du processus qui est réellement en mémoire physique (RAM).
ps aux --sort=-%mem | head

Exemple de sortie :

top
htop

La commande top fournit une vue dynamique en temps réel des processus en cours d’exécution. Voici quelques colonnes pertinentes pour l’analyse de la mémoire :

  • PID : L’identifiant du processus.
  • USER : Le propriétaire du processus.
  • %MEM : Le pourcentage de la mémoire physique utilisée par le processus.
  • VIRT : La taille virtuelle totale du processus en KiB. Cela inclut toute la mémoire virtuelle utilisée par le processus.
  • RES : La taille résidente du processus en KiB. Il s’agit de la partie de la mémoire du processus qui est réellement en mémoire physique (RAM).
  • SHR : La quantité de mémoire partagée utilisée par le processus en KiB. Cela inclut la mémoire partagée avec d’autres processus.
  • S : L’état du processus (par exemple, R pour en cours d’exécution, S pour en sommeil, Z pour zombie).

Exemple de sortie :

Utilisation de vmstat

La commande vmstat fournit des informations sur les processus, la mémoire, la pagination, les blocs d’entrée/sortie, les interruptions et l’activité du CPU.

# Afficher les statistiques mémoire et CPU
vmstat -s

Exemple de sortie :

7985044 K total memory
2143240 K used memory
3210232 K free memory
2631572 K buffer/cache memory

vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 2 9874980 8285564 4456 1010652 1 2 7 95 0 0 11 1 88 0 0
8 0 9868324 8192744 4456 1010980 9584 0 9600 0 6837 6126 23 0 77 0 0
8 0 9863716 8170900 4456 1011040 6944 0 7028 35496 8446 10873 19 1 80 0 0

Utilisation de smem

smem est un outil qui fournit des rapports détaillés sur l’utilisation de la mémoire, y compris la mémoire partagée et la mémoire unique à un processus.

Installation de smem :

# Installer les dépendances requises
sudo apt install smem

Utilisation de smem :

smem -r

PID   User     Command              Swap  USS   PSS    RSS
3456 user1    /usr/lib/firefox/firefox          0    123.4M  145.6M  345.6M
ps aux --sort=-rss | head -n 6

 

Avec smem

smem -s rss -r | head -n 6

 

Avec top

Dans top, appuyez sur M pour trier les processus par utilisation de la mémoire.

Conclusion

L’analyse de la mémoire sur Linux est essentielle pour maintenir les performances et la stabilité du système. En utilisant des outils comme free, vmstat, smem, top, htop, et ps, vous pouvez obtenir des informations détaillées sur l’utilisation de la mémoire et identifier les processus les plus consommateurs. Cela vous permet de prendre des mesures correctives pour optimiser l’utilisation de la mémoire et améliorer les performances globales du système.

N’oubliez pas de consulter les pages de manuel de ces outils pour plus d’informations et d’options de configuration avancées. Avec ces outils, vous pouvez surveiller et gérer efficacement la mémoire sur vos systèmes Linux.

Index complet

Tous les articles (41)

Date Article Tags
07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs