¿Cómo puedo saber qué está esperando un proceso de Linux?
-
03-07-2019 - |
Pregunta
Estoy tratando de 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é se bloquea un proceso en particular / qué recurso es ¿esperando? ¿Hay algo útil en / proc
por ejemplo?
Solución
Sea cual sea el proceso, utilice top
para verificar el estado. Luego, puede ejecutarlo a través de truss or strace . Eso debería detallar lo que está pasando. Si eso no es posible, conecta it a gdb . Herramientas como iostat pueden mostrarle en general lo que está sucediendo (por ejemplo, si el disco es un cuello de botella) .
Otros consejos
Puedes usar el comando strace
para ver en qué consiste tu proceso. También puede resultarle útil ejecutar lsof
en su proceso para ver qué archivos y sockets está utilizando.
strace es tu amigo, porque puedes aprovechar el tiempo dedicado a cada llamada al sistema, y ??además puedes seleccionar los descriptores de archivos y la llamada al sistema que te interesan. Pero también puedes obtener soporte del núcleo: mira < a href = "http://www.latencytop.org/" rel = "noreferrer"> latencytop