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/meminfoCe 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 -15Un 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 5Trouver 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 -15Reconnaî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.