Mesurer la quantité de RAM un processus utilise est presque impossible. La difficulté est que chaque fragment de bélier n'est pas utilisé par un seul processus, et que tout le bélier utilisé par un processus ne l'est pas réellement. Par exemple, deux processus peuvent avoir des mappages partagés du même fichier, auquel cas toutes les pages qui sont dans le noyau pour le mappage «appartiennent» aux deux processus. Mais que se passe-t-il si seulement un de ces processus l'utilisait?
Les pages privées peuvent également être copiées à la copie si le processus est bifurqué ou si elles ont été mappées mais pas encore utilisées (voir le cas où un processus a une grande surface mais n'en a pas touché la majeure partie encore). Dans ce cas, quel processus "possède" ces pages?
Les processus peuvent également utiliser efficacement des parties de la mémoire tampon tampon et beaucoup d'autres types de tampons de noyau, qui ne sont pas «possédés» par eux.
Il y a deux mesures qui sont disponibles, qui sont de taille VM, (la quantité de mémoire le processus a tracé tout à l'heure) et la taille du jeu de résident (RSS). Aucun d'eux ne vous dit vraiment beaucoup sur la quantité de mémoire utilisée par un processus, car ils comptent tous les deux des pages partagées et ne comptent pas les pages non mappées.
Alors, y a-t-il une réponse? Certains d'entre eux peuvent être mesurés en examinant les structures de cartes de pages qui sont maintenant disponibles dans/proc (/ proc/pid/pagemap), mais il n'y a pas nécessairement une manière triviale de partager la "propriété" des pages partagées.
Voir la documentation de Linux/vm/pagemap.txt pour une discussion à ce sujet.
devrait-il être en ligne de commande ou GUI? – thejh
Il devrait être un extrait de code ou quelque chose comme ça =) – shybovycha