Bonjour,
J'ai une question de débutant. Je ne débute pas vraiment sous Linux mais dans certains domaines je ne suis pas bon.
J'aimerais savoir comment déterminer la quantité de mémoire utilisée par un processus. Ce que me donne ps n'est pas clair pour moi (SZ et RSS), ou alors il faut m'expliquer car pour moi RSS est obligatoirement plus petit que SZ et je constate que ce n'est pas vrai pour certains des processus que je vois.
# man ps, man top
Posté par NeoX . Évalué à 6.
qui explique RSS et SZ et ajoute
Les champs SIZE et RSS ne prennent pas en compte les tables des pages et la structure task_struct du processus; Il y a toujours au moins 12 Ko de données résidentes en mémoire. SIZE est la taille virtuelle du processus (code + données + pile).
man top te donne
RES -- Resident size (kb) : The non-swapped physical memory a task has used.
SHR -- Shared Mem size (kb) : The amount of shared memory used by a task. It simply reflects memory that could be potentially shared with other processes
[^] # Re: man ps, man top
Posté par gremous . Évalué à 2.
Cette page de manuel n'explique rien du tout justement. Et ce n'est pas son role. Elle indique que RSS est ce qui est réellement en mémoire alors que SZ est ce qui est virtuellement en mémoire. Me voilà bien avancé. J'en conclu que RSS est toujours plus petit ou égal à SZ. Or j'ai plusieurs processus qui ont un SZ plus petit que leur RSS, donc je constate que la super explication de la page de manuel est un peu courte.
Les autres ressources que j'ai lu se bornent aux même explications, voilà pourquoi je n'en sais pas plus.
[^] # Re: man ps, man top
Posté par NeoX . Évalué à 2.
tout comme certains programmes n'utilisent pas de memoire partagée (SHR ou Shared)
[^] # Re: man ps, man top
Posté par Kerro . Évalué à 2.
Mais rassure toi: ceux qui savent ce que ça veut dire se dépêchent d'indiquer que c'est parfaitement inutile. Pas de regrets.
note: je ne sais pas non plus car comme l'indique Gremouss j'ai aussi des processus avec RSS>SZ.
[^] # Re: man ps, man top
Posté par Fabimaru (site web personnel) . Évalué à 2.
ps aux | awk '{ print $5-$6, $11}' | sort -n | head
J'ai essayé avec ma machine qui n'utilise pas de swap (au prix de la RAM...) et dans une VM qui swappe beaucoup.
Par contre, les valeurs données par "ps" peuvent être vite trompeuses dès que le programme commence à utiliser des bibliothèques partagées. C'est bien si ton process n'en utilise pas ou si il utilise beaucoup de données.
[^] # Re: man ps, man top
Posté par Kerro . Évalué à 2.
ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
1000 1093 1090 0 1473 2940 3 00:36 pts/0 00:00:00 -bash
1000 1137 1093 0 966 948 1 00:38 pts/0 00:00:00 ps -F
Je remarque que tu parles de VSZ alors que personne n'en a encore parlé. Avec ce nouveau mot-clé j'ai fini par trouver mieux.
En gros:
SZ: la taille du programme (sans les données)
VSZ: la taille totale (en RAM ou pas)
RSS: la taille totale présente en RAM
Donc forcément SZ est généralement plus petit que RSS.
Ce que je n'ai pas trouvé, c'est si VSZ tient compte de la mémoire réservée mais non utilisée (pages pas encore écrites par le programme). Pas le temps de tester ce soir. Dodo.
Reste que ces informations ne tiennent pas du tout compte de la mémoire partagée. Sur nos serveurs équipés de vmware ça fait tout drôle d'avoir la somme des RSS très largement supérieure à la mémoire physiquement présente. Surtout que free indique qu'il reste pas mal de place :-)
[^] # Re: man ps, man top
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
cf http://linuxfr.org//~nicOnicO/27153.html
"La première sécurité est la liberté"
# Question délicate :-)
Posté par Kerro . Évalué à 5.
Un bon endroit pour en savoir plus est /proc/[pid]/maps et /proc/[pid]/smaps
Jette un oeil là-dessus:
http://lwn.net/Articles/230975/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.