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)
Répondre
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))
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
Oui. LWP est un fil. http://www.theeggeadventure.com/wikimedia/index.php/What_is_NLWP_on_Solaris%3F – brianegge
Autant que je peux dire - le drapeau de pcpu donne l'utilisation de processeur pour le processus, pas pour le LWP. – jasonk
Pour linux il y a une copie exacte (http://stackoverflow.com/questions/1431569/tracking-threads-memory-and-cpu-consumption). –
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