ver procesos proceso ejecucion detener corriendo comando buscar linux multithreading monitor

detener - ver procesos en ejecucion linux



¿Cómo puedo controlar el conteo de subprocesos de un proceso en Linux? (15)

Aquí hay un comando que muestra el número de subprocesos de un proceso determinado:

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

A diferencia de las otras respuestas basadas en ps , aquí no hay necesidad de restar 1 de su salida ya que no hay línea de encabezado ps gracias a la opción -o pid= .

Me gustaría monitorear la cantidad de subprocesos usados ​​por un proceso específico en Linux. ¿Hay una manera fácil de obtener esta información sin afectar el rendimiento del proceso?


Cada subproceso en un proceso crea un directorio en /proc/<pid>/task . Cuente la cantidad de directorios y tenga la cantidad de hilos.


JStack es bastante económico: una opción sería canalizar la salida a través de grep para encontrar hilos activos y luego pasar por wc -l.

Más gráficamente es JConsole, que muestra el conteo de hilos para un proceso dado.


La forma más fácil es usar "htop". Puede instalar "htop" (una versión más elegante de la parte superior) que le mostrará todos sus núcleos, procesos y uso de la memoria.

Presione "Shift + H" para mostrar todo el proceso o presione de nuevo para ocultarlo. Presione la tecla "F4" para buscar el nombre de su proceso.

Instalando en Ubuntu o Debian:

sudo apt-get install htop

Instalación en Redhat o CentOS:

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

Si desea compilar "htop" desde el código fuente, lo encontrará here .


Las distribuciones más nuevas de JDK se envían con JConsole y VisualVM. Ambas son herramientas fantásticas para obtener los detalles sucios de un proceso en ejecución de Java. Si tiene que hacer esto programáticamente, investigue JMX.


Para obtener el número de subprocesos para un pid dado:

$ ps -o nlwp <pid>

Donde nlwp significa Número de procesos de peso ligero (hilos) . Así, ps alias nlwp a thcount , lo que significa que

$ ps -o thcount <pid>

también funciona

Si quieres monitorear el conteo de hilos, simplemente usa watch :

$ reloj ps -o thcount

Para obtener la suma de todos los subprocesos que se ejecutan en el sistema:

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


Si está tratando de averiguar el número de subprocesos usando cpu para un pid dado, yo usaría:

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


Si le interesan los hilos que están realmente activos , como hacer algo (no bloqueado, no temporizado), no informando "ejecución de subprocesos" pero realmente esperando que una transmisión brinde datos) en lugar de quedarse sentado ocioso pero en vivo - - entonces podría estar interesado en jstack-active .

Este sencillo script bash ejecuta jstack luego filtra todos los subprocesos que por heurística parecen estar inactivos, mostrándole rastros de pila para aquellos subprocesos que en realidad consumen ciclos de CPU.


Si utiliza:

ps uH p <PID_OF_U_PROCESS> | wc -l

Tienes que restar 1 al resultado, ya que una de las líneas "wc" está contando son los encabezados del comando "ps".


VisualVM puede mostrar estados claros de hilos de un proceso JVM dado


tratar

ps huH p <PID_OF_U_PROCESS> | wc -l

o htop


jvmtop puede mostrar el recuento actual de hilos jvm junto a otras métricas.


$ ps H p pid-id

H - Enumera todos los hilos individuales en un proceso

o

$cat /proc/pid-id/status

pid-id es la identificación del proceso

por ejemplo .. (Truncado el resultado a continuación)

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


ps -eLf en el shell le dará una lista de todos los hilos y procesos que se ejecutan actualmente en el sistema. O bien, puede ejecutar el comando top luego presionar ''H'' para alternar las listas de hilos.


cat /proc/<PROCESS_PID>/status | grep Threads