2009-10-05 8 views
2

J'ai une application multi-thread (bibliothèque C++ et pthread) et j'aimerai savoir combien de ressources (CPU et mémoire)) chaque thread utilise. Existe-t-il un moyen de connaître ces détails sous Solaris et Linux, ou sur l'un d'entre eux?Trouver l'utilisation des ressources (CPU et mémoire) par les threads d'un processus dans unix (solaris/linux)

+0

Pour linux il y a une copie exacte (http://stackoverflow.com/questions/1431569/tracking-threads-memory-and-cpu-consumption). –

+0

J'ai vérifié cela avant. Ma question était aussi pour Solaris. Vous n'avez encore rien trouvé. La seule chose que je peux conclure maintenant est que parler de la consommation de mémoire par thread n'est pas une bonne idée car ils partagent le même espace mémoire. Peut être que nous pouvons seulement calculer quelle mémoire a été allouée ou désallouée par un fil (Comment faire ceci ??). – mkamthan

Répondre

6

Vous pouvez utiliser la commande ps avec certaines options:

 
ps -eLo pid,ppid,lwp,nlwp,osz,rss,ruser,pcpu,stime,etime,args | more 
    PID PPID LWP NLWP SZ RSS RUSER %CPU STIME  ELAPSED COMMAND 
    0  0  1 1 0 0  root 0.0 Oct_02 4-02:13:37 sched 
    1  0  1 1 298 528  root 0.0 Oct_02 4-02:13:36 /sbin/init 
    2  0  1 1 0 0  root 0.0 Oct_02 4-02:13:36 pageout 

Jetez un oeil à la page de l'homme ps pour obtenir des informations (LWP (processus de poids léger))

+0

LWP est-il un thread? Je veux dire en termes Linux/Solaris. Puisque dans ce que vous avez collé ici, PPID est 0, je suppose que c'est un processus et non un fil. Ai-je raison? – mkamthan

+0

Oui. LWP est un fil. http://www.theeggeadventure.com/wikimedia/index.php/What_is_NLWP_on_Solaris%3F – brianegge

+0

Autant que je peux dire - le drapeau de pcpu donne l'utilisation de processeur pour le processus, pas pour le LWP. – jasonk

Questions connexes