Me gustaría monitorear la cantidad de hilos utilizados por un proceso específico en Linux. ¿Hay una manera fácil de obtener esta información sin afectar el rendimiento del proceso?
linux
multithreading
monitor
Fluir
fuente
fuente

Respuestas:
tratar
o htop
fuente
1porque imprime una línea comoUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDpara el encabezado de la tabla.wccuando podrías simplementeps -o thcount <pid>? Mira esta respuesta .Para obtener el número de hilos para un pid dado:
Donde
nlwpsignifica Número de procesos livianos (hilos) . Asípsaliasnlwpathcount, lo que significa quetambién funciona
Si desea monitorear el conteo de hilos, simplemente use
watch:Para obtener la suma de todos los hilos que se ejecutan en el sistema:
fuente
watchcomando. Sin embargo, tenga en cuenta que el usothcountpuede fallar para algunos (Red Hat ...), aunquenlwpfuncionó para mí.Cada hilo en un proceso crea un directorio debajo
/proc/<pid>/task. Cuente la cantidad de directorios y tendrá la cantidad de hilos.fuente
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l. Simplemente reemplace el <PID> con su ID de proceso que puede obtenertopo usarpsfuente
ps -eLfen el shell le dará una lista de todos los hilos y procesos que se ejecutan actualmente en el sistema. O bien, puede ejecutar eltopcomando y luego presionar 'H' para alternar las listas de hilos.fuente
-pa esto si es necesario, o cualquier otra cosa. Esto es lo mínimo que necesita para ver la lista 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 canalizar a través de wc -l.
Más gráficamente es JConsole, que muestra el recuento de subprocesos para un proceso determinado.
fuente
Si utiliza:
Debe restar 1 al resultado, ya que una de las líneas que "wc" cuenta son los encabezados del comando "ps".
fuente
pscomo uno de los hilos.Aquí hay un comando que muestra el número de hilos de un proceso dado:
A diferencia de las otras
psrespuestas basadas, aquí no hay necesidad de restar1de su salida ya que no hay unapslínea de encabezado gracias a la-o pid=opción.fuente
$ ps H p pid-idH - Lista todos los hilos individuales en un proceso
o
$cat /proc/pid-id/statuspid-id es la ID del proceso
por ejemplo ... (truncado el siguiente resultado)
fuente
Las distribuciones más nuevas de JDK se entregan con JConsole y VisualVM. Ambas son herramientas fantásticas para obtener los detalles sucios de un proceso Java en ejecución. Si tiene que hacer esto mediante programación, investigue JMX.
fuente
jvmtop puede mostrar el recuento actual de subprocesos jvm junto a otras métricas.
fuente
La forma más fácil es usar "htop". Puede instalar "htop" (una versión más elegante de top) que le mostrará todos sus núcleos, procesos y uso de memoria.
Presione "Shift + H" para mostrar todo el proceso o presione nuevamente para ocultarlo. Presione la tecla "F4" para buscar el nombre de su proceso.
Instalación en Ubuntu o Debian:
Instalación en Redhat o CentOS:
Si desea compilar "htop" a partir del código fuente, lo encontrará aquí .
fuente
Si está tratando de averiguar la cantidad de subprocesos que usan CPU para un pid dado, usaría:
fuente
Si está interesado en esos hilos que están realmente activos , como hacer algo (no bloqueado, no timed_waiting, no informar "hilo en ejecución" pero realmente esperando que una transmisión proporcione datos) en lugar de estar inactivo pero en vivo, - entonces te puede interesar jstack-active .
Este script bash simple se ejecuta y
jstackluego filtra todos los subprocesos que, por heurística, parecen estar inactivos, mostrándole rastros de pila para aquellos subprocesos que realmente consumen ciclos de CPU.fuente
VisualVM puede mostrar estados claros de subprocesos de un proceso JVM dado
fuente
Si desea la cantidad de subprocesos por usuario en un sistema Linux, debe usar:
donde como utilizar el nombre de usuario deseado.
fuente