web-dev-qa-db-fra.com

Comment puis-je surveiller le nombre de threads d'un processus sur Linux?

Je voudrais surveiller le nombre de threads utilisés par un processus spécifique sur Linux. Existe-t-il un moyen simple d'obtenir ces informations sans impacter les performances du processus?

110
zorro_velcro

essayer

ps huH p <PID_OF_U_PROCESS> | wc -l

ou htop

136
slav0nic

Pour obtenir le nombre de threads pour un pid donné:

$ ps -o nlwp <pid>

nlwp signifie Nombre de processus légers. Ainsi, ps aliases nlwp à thcount, ce qui signifie que

$ ps -o thcount <pid>

ça marche aussi.

Si vous souhaitez surveiller le nombre de threads, utilisez simplement watch:

$ watch ps -o thcount <pid>

Pour obtenir la somme de tous les threads en cours d'exécution dans le système:

$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
46
Thejaswi R

Chaque thread d’un processus crée un répertoire sous /proc/<pid>/task. Comptez le nombre de répertoires et vous avez le nombre de threads.

45
bdonlan
cat /proc/<PROCESS_PID>/status | grep Threads
29
PbxMan

ps -eLf sur le shell doit vous fournir une liste de tous les threads et processus en cours d'exécution sur le système. Ou, vous pouvez exécuter la commande top puis appuyer sur 'H' pour changer de liste de fils.

20
user2045557

Si tu utilises:

ps uH p <PID_OF_U_PROCESS> | wc -l

Vous devez soustraire 1 au résultat, car l’une des lignes "wc" compte est l’en-tête de la commande "ps".

6
flexo

JStack est relativement peu coûteux - une option serait de diriger la sortie via grep pour rechercher les threads actifs, puis via wc -l.

JConsole est plus graphique et affiche le nombre de threads pour un processus donné.

6
rhys keepence

Voici une commande qui affiche le nombre de threads d'un processus donné:

ps -L -o pid= -p <pid> | wc -l

Contrairement aux autres réponses basées sur ps, il n’est pas nécessaire de soustraire 1 de sa sortie car il n’ya pas de ligne d’entête ps grâce au -o pid=option.

5
jlliagre

$ ps H p pid-id

H - Répertorie tous les threads individuels dans un processus

ou

$cat /proc/pid-id/status

pid-id est l'ID de processus

par exemple .. (tronqué la sortie ci-dessous)

root@abc:~# cat /proc/8443/status
Name:   abcdd
State:  S (sleeping)
Tgid:   8443
VmSwap:        0 kB
Threads:    4
SigQ:   0/256556
SigPnd: 0000000000000000
5
Avinash Reddy

Les distributions JDK les plus récentes sont livrées avec JConsole et VisualVM. Ces deux outils sont des outils fantastiques pour obtenir les détails incorrects d’un processus en cours Java. Si vous devez le faire par programme, étudiez JMX.

4
basszero

jvmtop peut afficher le nombre actuel de threads jvm à côté d'autres métriques.

3
MRalwasser

Le moyen le plus simple consiste à utiliser "htop". Vous pouvez installer "htop" (une version plus sophistiquée de top) qui vous montrera tous vos cœurs, processus et utilisation de la mémoire.

Appuyez sur "Maj + H" pour afficher tous les processus ou appuyez à nouveau pour le masquer. Appuyez sur la touche "F4" pour rechercher votre nom de processus.

Installation sur Ubuntu ou Debian:

Sudo apt-get install htop

Installation sur Redhat ou CentOS:

yum install htop
dnf install htop      [On Fedora 22+ releases]

Si vous voulez compiler "htop" à partir du code source, vous le trouverez ici .

1

Si vous essayez de connaître le nombre de threads utilisant cpu pour un pid donné, j'utiliserais:

top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
1
Manuel Mndza Bañs

Si vous êtes intéressé par les threads qui sont vraiment actifs - comme pour faire quelque chose vraiment attendre qu'un flux donne des données) au lieu de rester inactif mais vivant - alors vous pourriez être intéressé par jstack-active .

Ce script bash simple exécute jstack puis filtre tous les threads qui semblent être inactifs d'après l'heuristique, vous montrant ainsi les traces de pile pour les threads consommant des cycles de processeur.

0
Partly Cloudy

VisualVM peut afficher des états clairs des threads d'un processus JVM donné

enter image description here

0
DiveInto