Tengo algunos problemas de E / S en un par de sistemas Linux que administro. Se manifiestan en que los procesos a menudo se bloquean durante varios segundos en llamadas al sistema simples como open (), unlink () o close () en los archivos (lo cual es un problema porque algunos de los programas involucrados necesitan una latencia de E / S bastante baja para funcionar correctamente). Es cierto que los sistemas en cuestión experimentan una carga de E / S moderada, pero difícilmente puedo pensar que sea suficiente para justificar tiempos de latencia tan enormes. A veces, las llamadas pueden tardar más de 15 segundos en completarse (aunque con mayor frecuencia pueden tomar 1 o 2 o 3 segundos más o menos).
Mi pregunta es: ¿cómo puedo averiguar por qué sucede esto? Lo que me gustaría es alguna herramienta que pueda decirme en qué están bloqueados los procesos en cuestión en el kernel, y por qué está ocupado lo que están durmiendo, qué está sucediendo con él y esas cosas. ¿Existe tal herramienta o hay alguna otra forma de tratar de depurar lo que sucede?
Alternativamente, por supuesto, si tiene alguna idea de lo que realmente está sucediendo, ¿cómo se puede evitar?
Para el registro, el sistema de archivos que uso es XFS.