2008-08-04 7 views
22

Quelle est la méthode correcte pour obtenir la taille du processus sur Solaris, HP-UX et AIX? Devrions-nous utiliser top ou ps -o vsz ou autre chose?Taille du processus sous UNIX

Répondre

17

Les définitions exactes de vsize, rss, rprvt, rshrd et autres abréviations obscures prospectifs varient d'un OS à OS. Les pages de manuel pour les commandes top et ps auront une sorte de description, mais toutes ces descriptions sont grandement simplifiées (ou sont basées sur des implémentations depuis longtemps éteintes du noyau).
La "taille du processus" en tant que concept est diaboliquement difficile à cerner dans le cas général. Les réponses dans des instances spécifiques dépendent fortement de l'implémentation réelle de la gestion de la mémoire dans le système d'exploitation et sont rarement aussi satisfaisantes que le concept de «taille de processus» propre à la plupart des utilisateurs (et la plupart des développeurs).

Par exemple, aucun de ces nombres (ni, probablement, aucune combinaison de ces nombres) ne peut être utilisé pour vous dire exactement combien de tels processus peuvent s'exécuter en même temps dans une quantité donnée de mémoire libre. Mais vraiment, votre meilleur pari est de venir à partir de cette fin: pourquoi voulez-vous ce numéro, et à quoi allez-vous l'utiliser? Compte tenu de cette information, je pense que vous obtiendrez des réponses plus utiles.

3

Oui, vous avez raison de verrouiller le VSZ.

ps u vous donnera le VSZ et RSS, qui sont la taille de la mémoire virtuelle et la taille de l'ensemble résident. Le RSS est la quantité de mémoire physique allouée au processus, et le VSZ est la taille de la mémoire virtuelle du processus. Si vous avez plusieurs copies d'un programme en cours d'exécution, une grande partie de la mémoire du VSZ sera partagée entre ces processus.

+3

Le nombre VSZ ne sert à rien si ce que vous intéresse est la consommation de mémoire. VSZ mesure la quantité d'espace mémoire * virtuelle * du processus qui a été marquée par le processus en tant que mémoire qui doit être mappée par le système d'exploitation si le processus arrive à la toucher. Mais cela n'a rien à voir avec si cette mémoire a été réellement touchée et utilisée. VSZ est un détail interne sur la façon dont un processus fait l'allocation de mémoire - quelle quantité de mémoire inutilisée il attrape à la fois. Regardez RSS pour le nombre de pages de mémoire qu'il a réellement commencé à utiliser. –

5

Sous Solaris, vous pouvez obtenir des informations détaillées sur l'utilisation de la mémoire d'un processus à l'aide de la commande pmap. En particulier, pmap -x <pid> vous montre combien de mémoire d'un processus est partagée et quelle quantité est spécifiquement utilisée par ce processus. C'est utile pour travailler sur l'utilisation de la mémoire "marginale" d'un processus - avec cette technique, vous pouvez éviter le double comptage des bibliothèques partagées.

2

Je résume la taille du jeu de résident pour tous les processus comme celui-ci (en tant que root):

ps ax -o rss | awk '{rss += $1;} END { print rss}' 
Questions connexes