para - ver procesos ejecutados en linux
¿Cómo puedo saber qué está esperando un proceso de Linux? (3)
Estoy intentando localizar la causa de los cuellos de botella en el rendimiento de una aplicación que estoy depurando en Linux. Los diversos procesos involucrados parecen pasar mucho tiempo bloqueando las solicitudes de E / S, y me preguntaba si alguien sabía algún truco de Linux que le permitiera ver por qué un proceso en particular está bloqueado / ¿qué recurso está esperando? ¿Hay algo útil en /proc
por ejemplo?
Puede usar el comando strace
para ver en qué consiste su proceso. También puede resultarle útil ejecutar lsof
en su proceso para ver qué archivos y sockets está utilizando.
Sea cual sea el proceso, usa top
para verificar el estado. Entonces podrías correrlo a través de truss o strace . Eso debería detallar lo que está pasando. Si eso no es posible, gdb a gdb . Herramientas como iostat pueden mostrarle en general lo que está sucediendo (por ejemplo, si el disco es un cuello de botella).
strace es su amigo, ya que puede obtener el tiempo dedicado a cada llamada al sistema, además de que puede seleccionar los descriptores de archivos y la llamada al sistema que le interesan. Pero también puede recibir soporte del núcleo: eche un vistazo a latencytop