GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Détermination correcte de l'utilisation de la mémoire sous Linux ?

Je suis un peu confus sur certains des résultats que je vois de ps et gratuit .

Sur mon serveur, c'est le résultat de free -m

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2048       2033         14          0         73       1398
-/+ buffers/cache:        561       1486
Swap:         2047         11       2036

Ma compréhension de la façon dont Linux gère la mémoire est qu'il stockera l'utilisation du disque dans la RAM, de sorte que chaque accès ultérieur soit plus rapide. Je crois que cela est indiqué par les colonnes "en cache". De plus, divers tampons sont stockés dans la RAM, indiqués dans la colonne "tampons".

Donc, si je comprends bien, l'utilisation "réelle" est censée être la valeur "utilisée" de "-/+ tampons/cache", ou 561 dans ce cas.

Donc, en supposant que tout cela est correct, la partie qui me jette est le résultat de ps aux .

Ma compréhension du ps résultats, est que la 6ème colonne (RSS), représente la taille en kilo-octets que le processus utilise pour la mémoire.

Donc quand j'exécute cette commande :

[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52

Le résultat ne devrait-il pas être la colonne "utilisé" de "-/+ tampons/cache" de free -m ?

Alors, comment puis-je déterminer correctement l'utilisation de la mémoire d'un processus sous Linux ? Apparemment, ma logique est erronée.

Réponse acceptée :

Copier/coller sans vergogne ma réponse de serverfault l'autre jour 🙂

Le système de mémoire virtuelle Linux n'est pas si simple. Vous ne pouvez pas simplement additionner tous les champs RSS et obtenir la valeur rapportée used par free . Il y a plusieurs raisons à cela, mais je vais en citer quelques-unes parmi les plus importantes.

  • Lorsqu'un processus bifurque, le parent et l'enfant s'afficheront avec le même RSS. Cependant, Linux utilise la copie sur écriture afin que les deux processus utilisent réellement la même mémoire. Ce n'est que lorsque l'un des processus modifie la mémoire qu'elle sera réellement dupliquée.
    Cela provoquera le free le nombre doit être plus petit que le top Somme RSS.

  • La valeur RSS n'inclut pas la mémoire partagée. Étant donné que la mémoire partagée n'appartient à aucun processus en particulier, top ne l'inclut pas dans RSS.
    Cela entraînera le free le nombre doit être plus grand que le top Somme RSS.


Linux
  1. Utilisation de la mémoire Linux

  2. Linux - Limiter l'utilisation de la mémoire pour un seul processus Linux ?

  3. Détermination de l'utilisation du disque sous Linux à l'aide de la commande "du"

  4. Linux gratuit montre une utilisation élevée de la mémoire, mais pas top

  5. Comment l'utilisation de la mémoire est-elle signalée sous Linux ?

Commande gratuite Linux (vérifier l'utilisation de la mémoire)

Commande gratuite sous Linux

Comment interpréter l'utilisation de la mémoire Top/htop ?

exemples de commandes gratuits sous Linux

Trouver la taille de la RAM sous Linux

Déterminer correctement l'utilisation de la mémoire sous Linux