CH-J Server Managergestion de serveur sur SSH
Menu
Tous les guides et articles →

Comment lire la RAM, le cache et le swap sur un serveur Linux

Ce que signifient les colonnes de free, pourquoi une utilisation élevée de la mémoire est souvent normale et quels signes indiquent un véritable manque de mémoire.

Lire available plutôt que free

Linux utilise la mémoire autrement inutilisée comme cache disque. Il est donc normal qu’un serveur en bon état ait peu de mémoire libre. La colonne available est l’estimation du noyau de la mémoire que de nouvelles tâches peuvent obtenir sans recourir au swap. C’est cette valeur qu’il faut surveiller. Le calcul exact de used dépend de la version de l’outil : ne comparez donc pas cette valeur entre différents systèmes.

free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfo

Ce que le cache peut et ne peut pas libérer

Le cache de pages peut généralement être libéré lorsque les applications ont besoin de mémoire. La mémoire partagée et tmpfs (Shmem) apparaissent aussi dans le cache, mais ne peuvent pas simplement être abandonnés, car ils contiennent des données sans copie sur disque. Un cache volumineux avec peu de mémoire disponible signifie donc souvent un tmpfs ou un segment de mémoire partagée volumineux.

df -h -t tmpfs
sudo slabtop -o | head -15

Un swap utilisé ne signale pas forcément un problème

Un serveur peut conserver pendant des semaines des pages rarement utilisées dans le swap sans conséquence négative. Ce sont les déplacements continuels qui posent problème. Surveillez les colonnes si et so de vmstat : des valeurs qui restent supérieures à zéro signifient que le système transfère activement des pages entre la RAM et le swap, ce qui indique une véritable pénurie.

swapon --show
vmstat 1 5

Trouver ce qui utilise la mémoire

Triez les processus par mémoire résidente. RSS compte les pages partagées entre processus dans chacun d’eux ; les valeurs de plusieurs processus ne peuvent donc pas simplement s’additionner. Les outils prenant en charge PSS, comme smem, donnent une somme plus représentative si vous les avez installés.

ps -eo pid,user,rss,comm --sort=-rss | head -15

Reconnaître un véritable manque de mémoire

Les signes sont une faible mémoire disponible, des échanges constants entre la RAM et le swap et des processus arrêtés par le mécanisme out-of-memory killer. Consultez le journal du noyau. N’exécutez pas drop_caches pour améliorer l’apparence des chiffres : cela oblige seulement le serveur à relire les données sur disque et ne résout rien.

sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'

La mémoire dans CH-J Server Manager

System Monitor lit ces valeurs via SSH. Sous Linux, il définit used comme MemTotal − MemFree − Buffers − Cached − SReclaimable et available comme l’estimation du noyau. La mémoire partagée fait partie de Cached et ne peut pas être libérée ; les catégories de la barre ne se chevauchent pas. La formule différant de celle de certaines versions de free, les chiffres peuvent ne pas correspondre exactement. Il affiche aussi le swap avec son historique d’utilisation. ZFS ARC n’est pas traité séparément : sur les hôtes ZFS, il est donc compté comme mémoire utilisée.

Documentation détaillée

man: free →

man: proc_meminfo →

Déverrouillage biométrique et sécurité →