? Déterminer la quantité de mémoire utilisée par un processus s'exécutant sur une plate-forme Linux est une proposition difficile . Les valeurs de consommation de mémoire rapportés par le système d'exploitation sont imprécises . Lorsque vous utilisez les services intégrés fournis avec Linux , il est important de comprendre les statistiques d'utilisation de la mémoire et comment ils sont calculés. Comment une utilisation mémoire?
Quand un processus démarre, le système d'exploitation alloue la quantité de mémoire que le processus a besoin pour fonctionner. Chaque processus dispose de quatre segments de mémoire pour le code exécutable et des données. Le segment «code» contient les instructions exécutables . Le segment "data" contient des variables statiques et mondial. La «pile» contient des variables locales. Le " tas " contient des objets alloués dynamiquement . Les processus peuvent utiliser des bibliothèques partagées. Bibliothèques partagées ne sont chargés en mémoire une fois , et tous les processus utilisant une bibliothèque partagée particulier vont utiliser cette copie.
Quelles sont les statistiques de mémoire ne Report Linux?
Mémoire virtuelle est la quantité totale de l'espace d'adresse réservée par le système d'exploitation pour le processus de son code, de données et de pile . La taille de la mémoire virtuelle rapporté par Linux inclut tout le code , les données et l'espace de pile réservées à l'usage d'un processus , à la fois sur la mémoire physique et d'espace de swap. Cette valeur inclut l'espace utilisé par toutes les bibliothèques partagées utilisées par le processus. La conséquence de ceci est que les bibliothèques partagées comptent en pleine vers la taille d'un processus donné .
La taille de mémoire résidente d'un processus rapporté par Linux ne comprend que la quantité de mémoire physique du processus et des bibliothèques partagées qu'il référence utilisent à un moment donné . Segments déplacés vers l'espace de swap ne sont pas inclus . Comme avec la taille de la mémoire virtuelle , la taille de mémoire résidente inclut l'espace utilisé par les bibliothèques partagées.
Affichage d'une photo de processus simple avec ps
l'utilitaire PS fournit une instantané des processus en cours d'exécution sur le système , les rapports de la taille virtuelle et résident mémoire , CPU et les pourcentages de mémoire, et une grande variété d' autres informations. Pour examiner un seul processus , utilisez les options suivantes pour ps , y compris vsz pour la taille de la mémoire virtuelle, et rss pour la taille de mémoire résidente . Par exemple , AB
ps p 3746 o pid , rss, vsz , comm
sorties pour le processus 3746 :
PID RSS VSZ COMMAND3746 14444 351216 httpd2
processus de surveillance avec haut
L'utilitaire haut fournit une vue en direct de la performance du système . Pour surveiller un ou plusieurs processus spécifiques avec top , utilisez l'option - p pour fournir une liste d'ID de processus. Par exemple:
haut -p 3746,6100,28753,23176,25544
Après le lancement de haut , a frappé la touche commande " f" pour accéder à l'écran de sélection de colonne . Allumez l'écran pour la PID, VIRT , RES , SHR , SWAP , code, les données et les colonnes de commande. Comme illustré dans la capture d' écran , l'écran affiche maintenant les statistiques de mémoire suivants:
VIRT : sizeRES de mémoire virtuelle : Resident sizeSHR de mémoire : mémoire partagée sizeSWAP : sizeCODE Swapped : La taille du code dans memoryDATA physique : données plus la taille de la pile à mémoire physique
jetant dans /proc
état détaillé et informations sur l'utilisation de la mémoire du processus se trouve dans /proc / /status et /proc /< pid > /smaps . Une variété d' information est contenue dans /proc / /statut , y compris les statistiques de la mémoire :
VmPeak : Pic virtuel sizeVmSize mémoire : Virtual memoryVmData : Segment sizeVmStk données : Stack sizeVmExe : Executable secteur sizeVmLib : Bibliothèque Code de taille
/proc / /smaps fournit une vue très détaillée d'un processus de les usages de la mémoire , ventilées par correspondance pour le code, pile, tas et chaque bibliothèque partagée. La sortie complète de smaps est plutôt long et difficile à digérer. Vous pouvez utiliser le Linux: module Perl smaps pour analyser et traiter le fichier smaps
.