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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top