Linux se goinfre avec ma RAM ?

Traduction d'un site très utile pour mieux comprendre le fonctionnement de la RAM sous Linux ! Scoop ! C'est différent de Windows !

Photo de barrettes de RAM

Que se passe-t-il ?

Comme tous les systèmes d'exploitation modernes, Linux emprunte de la mémoire inutilisée pour la mise en cache du disque. Cela donne l'impression que vous avez accès à de la mémoire “gratuite”, mais vous ne l'avez pas. Tout va bien.

Pourquoi fait-il cela ?

La mise en cache du disque rend le système beaucoup plus rapide et plus réactif. Il n'y a pas d'inconvénients, à l'exception des nouveaux utilisateurs qui ne sont pas familiers avec le concept d'une cache de système de fichiers. Il ne retire généralement pas la mémoire des applications.

Et si je veux exécuter plus d'applications ?

Si vos applications veulent plus de mémoire, le noyau va juste reprendre un morceau que le cache disque a emprunté. Le cache de disque peut toujours être remis aux applications immédiatement. Le système n'est pas à court de RAM.

Ai-je besoin de plus d'échanges (swap) ?

Probablement pas ; la mise en cache sur disque emprunte principalement la RAM que les applications ne veulent pas actuellement. Si les applications veulent plus de mémoire, le noyau le reprendra du cache disque. Linux peut pousser la mémoire d'application dans l'échange si cette mémoire est plus souvent accessible que le cache de système de fichiers, mais cela améliorera généralement les performances, et non pas les détériorer.

Comment puis-je empêcher Linux de faire ça ?

Vous ne pouvez pas complètement désactiver la mise en cache de disque (mais vous pouvez ajuster la gestion du fichier d'échange “swapinesss” de Linux). La seule raison pour laquelle quelqu'un veut désactiver la mise en cachet de disques, c'est parce qu'il pense qu'il enlève la mémoire de ses applications, ce qui n'est pas le cas. Les caches de disques rendent les applications plus rapides et se lancent plus facilement, mais il ne leur enlève JAMAIS la mémoire. Donc, il n'y a absolument aucune raison de le désactiver.

Si, cependant, vous avez besoin d'effacer rapidement de la RAM pour une raison quelconque, comme l'étalonnage du démarrage à froid d'une application non encadrée, vous pouvez forcer Linux à supprimer de manière non destructive des caches en utilisant echo 3 | sudo tee /proc/sys/vm/drop-caches

Pourquoi les commandes top et free disent-ils que si peu de RAM est libre si c'est le cas ?

Ce n'est là qu'une différence de terminologie. Vous et Linux êtes d'accord pour dire que la mémoire prise par les applications est “utilisée” (used), alors que la mémoire qui n'est pas utilisée pour quoi que ce soit est “libre” (free).

Mais comment comptez-vous la mémoire qui est actuellement utilisée pour quelque chose, mais qui peut encore être mise à disposition des applications ?

Vous pouvez compter cette mémoire comme “libre” (free) et/ou “disponible” (available). Linux le compte plutôt comme “disponible” :

Mémoire qui est Vous l'appelleriez Linux l'appelle
Utilisés par les applications Utilisé Utilisé
Utilisés, mais peuvent être disponibles Libre (ou disponible) Disponible
N'est pas utilisé pour quoi que ce soit Libre Libre

Ce “quelque chose” est (à peu près) ce que les commandes “top” et “free” appellent “tampons” et “cachés” (ou buffer/caches). Puisque votre terminologie et celle de Linux diffèrent, vous pourriez penser que vous êtes à court de RAM quand vous ne l'êtes pas.

Comment puis-je voir combien de RAM libre j'ai vraiment ?

Pour voir combien vos applications pourraient utiliser sans échanger, exécuter gratuitement -m et regardez la colonne “disponible” :

$ free -m

total used free shared buff/cache available
Mem: 1504 636 13 0 855 792
Swap: 2047 6 2041

(Sur les installations d'avant 2014, regardez plutôt la colonne “free” dans la ligne “–/– buffers/cache” à la place.)

Les chiffres se comprennent en MiB. Si vous regardez simplement “free”, vous penserez que votre RAM est pleine à 99% alors qu'elle n'est vraiment qu'à 42%.

Pour une description plus détaillée et technique de ce que Linux compte comme “available”, voir ce lien.

LinuxAteMyRAM

Quand devrais-je commencer à m'inquiéter ?

Un système Linux sain avec plus qu'assez de mémoire montrera, après un certain temps, le comportement attendu et inoffensif suivant :

Signes d'avertissement d'une situation de mémoire réelle que vous voudrez peut-être examiner :

Comment puis-je vérifier ces choses ?

Voir cette page pour plus de détails et comment vous pouvez expérimenter le cache disque pour montrer les effets décrits ici. Peu de choses vous font apprécier la mise en cachette de disques plus que la mesure d'une accélération de l'ordre de la magnitude sur votre propre matériel.

Traduction basée sur : LinuxAteMyRam.com est présenté par VidarHolen.net. Ce site est accessible depuis GitHub où vous pouvez déposer vos commentaires.