GNU/Linux >> Tutoriels Linux >  >> Linux

Mémoire inactive Linux

Il y a des cas où regarder la mémoire inactive est intéressant, un rapport élevé de mémoire active à inactive peut indiquer une pression de mémoire par exemple, mais cette condition est généralement accompagnée d'une pagination/permutation qui est plus facile à comprendre et à observer. Le fichier /proc/kpageflags contient un bitmap 64 bits pour chaque page de mémoire physique, vous pouvez obtenir un résumé avec page-types qui peut venir avec votre noyau.

Votre compréhension de actif et inactif est incorrect cependant

  • mémoire active sont des pages qui ont été consultées "récemment"
  • mémoire inactive sont des pages qui n'ont pas été consultées "récemment"

« récemment » n'est pas une mesure absolue du temps, mais dépend également de l'activité et de la pression de la mémoire (vous pouvez lire certains des détails techniques dans le livre gratuit Understanding the Linux Virtual Memory Manager , le chapitre 10 est pertinent ici), ou la documentation du noyau (pagemap.txt).

Chaque liste est stockée sous forme de LRU (plus ou moins). Les pages de mémoire inactives sont de bons candidats pour écrire dans le fichier d'échange, soit de manière préventive (avant que des pages de mémoire libre ne soient requises), soit lorsque la mémoire libre tombe en dessous d'une limite configurée et que des pages libres sont (immédiatement) nécessaires.

L'un ou l'autre des indicateurs s'applique aux pages allouées aux processus en cours d'exécution, à l'exception de la mémoire persistante ou partagée, toute la mémoire est libérée lorsqu'un processus se termine, sinon cela serait considéré comme un bogue.

Ce balisage de page de bas niveau n'a pas besoin de connaître le PID (et une page mémoire peut avoir plus d'un PID avec celui-ci mappé dans tous les cas), de sorte que les informations requises pour fournir les données que vous demandez ne sont pas au même endroit.

Pour ce faire, processus par processus, vous devez extraire les plages d'adresses virtuelles de /prod/PID/maps , convertir en PFN (page physique) avec /proc/PID/pagemap , et indexer en /proc/kpageflags . Tout est décrit dans pagemap.txt , et prend environ 60 à 80 lignes de C. Sauf si vous dépannez le système VM, les chiffres ne sont pas très intéressants. Une chose que vous pouvez faire est de compter les pages inactives et sauvegardées par swap par processus, ces chiffres doivent indiquer les processus qui ont une taille RSS (résidente) faible par rapport à VSZ (taille totale de la machine virtuelle). Une autre chose pourrait être de déduire une fuite de mémoire, mais il existe de meilleurs outils pour cette tâche.


Un tel outil n'existe pas car il est complètement inutile pour tout programme externe.

La seule partie du système qui a besoin de savoir cela est le gestionnaire de mémoire du noyau qui l'utilisera pour savoir quoi paginer (échanger) s'il manque de mémoire disponible.

Le seul cas connexe qui pourrait causer des soucis est si votre swap devient presque plein. Si jamais cela devient le cas, augmentez-le simplement.

Je n'ai jamais vu de problèmes réels qui impliquaient d'enquêter sur la mémoire inactive.


Linux
  1. Le noyau Linux :Top 5 des innovations

  2. Utilisation de la mémoire Linux

  3. Linux Out-of-Memory Killer

  4. Linux peut-il nettoyer la mémoire ?

  5. Vider la mémoire d'un processus Linux dans un fichier

Commande gratuite sous Linux

Comment effacer la mémoire d'échange sous Linux

Comment désactiver définitivement Swap sous Linux

Comment fonctionne la mémoire d'échange sous Linux ?

exemples de commandes gratuits sous Linux

Segmentation de la mémoire Linux