Vorrei monitorare il numero di thread utilizzati da un processo specifico su Linux. Esiste un modo semplice per ottenere queste informazioni senza influire sulle prestazioni del processo?Come posso monitorare il conteggio dei thread di un processo su linux?
risposta
JStack è piuttosto economico: un'opzione potrebbe essere il pipe dell'output tramite grep per trovare i thread attivi e quindi passare attraverso wc -l.
Più grafica è JConsole, che visualizza il numero di thread per un dato processo.
Le distribuzioni JDK più recenti vengono fornite con JConsole e VisualVM. Entrambi sono strumenti fantastici per ottenere i dettagli sporchi da un processo Java in esecuzione. Se devi farlo a livello di codice, investiga su JMX.
Se si utilizza:
ps uH p <PID_OF_U_PROCESS> | wc -l
si deve sottrarre 1 al risultato, come una delle linee "wc" è il conteggio è il intestazioni del comando "ps".
Benvenuti in StackOverflow. Probabilmente, questo dovrebbe essere un commento alla risposta di slav0nic.Tuttavia, a quanto ho capito, quando ti iscrivi per la prima volta a SO, non puoi (ancora) commentare le risposte finché non hai acquisito una certa reputazione, quindi aggiungere una risposta è tutto ciò che puoi fare. Hai ragione; non dovresti contare la riga dell'intestazione da 'ps' come uno dei thread. –
Ogni thread in un processo crea una directory sotto /proc/<pid>/task
. Contare il numero di directory e il numero di thread.
Per aggiungere al commento sopra. È possibile utilizzare questo comando per trovare il numero di thread: 'find/proc/
jvmtop può mostrare il conteggio del thread jvm corrente accanto ad altre metriche.
Ecco un comando che visualizza il numero di fili di un dato processo:
ps -L -o pid= -p <pid> | wc -l
differenza degli altri ps
risposte base, qui c'è alcuna necessità di sottrarre 1
dalla sua uscita in quanto non v'è alcun ps
intestazione linea grazie all'opzione -o pid=
.
ps -eLf
sulla shell deve fornire un elenco di tutti i thread e processi attualmente in esecuzione sul sistema. Oppure, è possibile eseguire il comando top
quindi premere "H" per alternare le voci di thread.
Questa è la salsa per me. Non voglio limitarlo solo a un processo. È facile aggiungere un '-p' a questo se necessario, o qualsiasi altra cosa. Questo è il minimo necessario per visualizzare l'elenco di thread. –
ps -eLf ha funzionato per me insieme a grep -c
cat /proc/<PROCESS_PID>/status | grep Threads
o 'grep Threads/proc/
Se siete interessati a quei fili che sono davvero attivi - come a fare qualcosa (non bloccato, non timed_waiting, non reporting "filo conduttore", ma in realtà in attesa di un flusso di conferire i dati) al contrario di stare seduti inattivo ma dal vivo - allora potresti essere interessato a jstack-active.
Questo semplice script bash esegue jstack
quindi filtra tutti i thread che dall'euristica sembrano essere inattivi, mostrando le tracce dello stack per quei thread che stanno effettivamente consumando cicli della CPU.
$ ps H p pid-id
H - elenca tutti i singoli fili in un processo
o
$cat /proc/pid-id/status
pid-id è l'ID di processo
ad es .. (troncato l'uscita in basso)
[email protected]:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
Per ottenere il numero di thread per un dato pid:
$ ps -o nlwp <pid>
Dove nlwp
stand per Numero di processi leggeri (fili). Così ps
alias nlwp
a thcount
, il che significa che
$ ps -o thcount <pid>
fa anche il lavoro.
Se si desidera monitorare il numero di thread, è sufficiente utilizzare watch
:
$ watch ps -o thcount
Per ottenere la somma di tutti i thread in esecuzione nel sistema:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
Se si sta cercando di scoprire il numero di thread utilizzando cpu per un dato pid vorrei usare:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
Il modo più semplice è usare "htop". Puoi installare "htop" (una versione più elaborata di top) che ti mostrerà tutti i tuoi core, i processi e l'utilizzo della memoria.
Premere "MAIUSC + H" per mostrare tutto il processo o premere nuovamente per nasconderlo. Premere il tasto "F4" per cercare il nome del processo.
Installazione su Ubuntu o Debian:
sudo apt-get install htop
Installazione su RedHat o CentOS:
yum install htop
dnf install htop [On Fedora 22+ releases]
Se vuoi compilare "htop" dal codice sorgente, lo troverete here.
- 1. Come monitorare un processo su OS X?
- 2. Come monitorare un processo in Linux CPU, memoria e tempo
- 3. Come posso monitorare l'utilizzo della memoria di php in linux?
- 4. Come monitorare un thread di vitale importanza
- 5. Strumenti per monitorare l'esecuzione del thread java
- 6. Come monitorare processo di calcolo in Haskell
- 7. Come interrogare il conteggio thread di un processo utilizzando le normali API C/C++ di Windows
- 8. Monitorare costantemente un programma/processo usando Python
- 9. OSX - Come posso vedere il TID di tutti i thread del mio processo?
- 10. Come posso recuperare il numero di processori su C/Linux?
- 11. Riavvia il processo di modifica dei file in Linux
- 12. Come posso monitorare l'attività SQL su Oracle?
- 13. Come posso monitorare il tempo di rendering in un browser?
- 14. Come interrompere il processo 'non interrompibile' su Linux?
- 15. un programma per monitorare una directory su Linux
- 16. Come posso monitorare i dati su una porta seriale in Linux?
- 17. Un'altra domanda sul conteggio dei riferimenti sicuri dei thread
- 18. numero di conteggio dei caratteri di tabulazione in linux
- 19. Discussioni/Confronto dei processi su Linux/Windows
- 20. Come ottenere il numero di thread in un processo Java
- 21. Come ottenere il percorso di un processo in Unix/Linux
- 22. Come ottenere il conteggio thread attivo?
- 23. per il processo linux
- 24. Thread daemon, conteggio thread e conteggio totale thread iniziato
- 25. Come posso ridurre il footprint di memoria di un processo Linux minimo
- 26. Il processo di multiprocesso termina con esito negativo su Linux
- 27. Come utilizzare il conteggio dal modulo del kernel di Linux?
- 28. Come diagnosticare un processo Python masticando CPU in linux
- 29. Un modo migliore per monitorare e uccidere il processo in stallo di un altro programma in Linux?
- 30. impostazione affinità cpu di un processo dall'inizio su linux
Credo che dovresti sottrarre '1' da esso perché stampa una riga come' USER PID% CPU% MEM VSZ RSS TTY STAT START TIME COMANDO' per intestazione tabella. –
La 'h' nasconde l'intestazione. – thinkmassive
-1 Perché collegare l'output a 'wc' quando si potrebbe' ps -o il conteggio '? Vedi [questa risposta] (https://stackoverflow.com/a/37713259/194894). –
Flow