Bueno, podría probar los siguientes comandos que me funcionaron en RHEL6:
1) Cualquier dispositivo que vea en la salida "iostat" realizando más E/S, utilícelo con fuser
comando de la siguiente manera:
fuser -uvm device
2) Obtendrá una lista de procesos con el nombre de usuario que causan más E/S. Seleccione esos PIDS y utilícelos en el lsof
comando de la siguiente manera:
lsof -p PID | more
3) Obtendrá una lista de archivos/directorios junto con el usuario que realiza la E/S máxima.
Parece que no hay herramientas para averiguar el rendimiento de E/S por archivo que no sea dentro del proceso que usa el archivo. Pero hay formas de averiguar el rendimiento de E/S del proceso.
iotop:es una utilidad similar a top/iftop que muestra el rendimiento de E/S del proceso.
Después de señalar qué proceso tiene E/S pesada, use lo siguiente para averiguar qué archivo se está usando
lsof -c <process name>
Eso debería reducir el alcance y ayudar a identificar la fuente.
Puedes usar inotifywait
de inotify-tools
para averiguar exactamente en qué archivo se está escribiendo. Esto no le dirá cuántos datos se están escribiendo, pero al menos le dirá en qué archivos se están escribiendo a medida que sucede.
Como ejemplo, este comando imprimirá el nombre del archivo tan pronto como se cree, modifique o elimine alguno en /tmp
:
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test
Desafortunadamente, deberá adivinar en qué directorio se encuentran los archivos que se están escribiendo. Esto falla si intenta usarlo en el directorio raíz, aunque aparentemente eso puede anularse:
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches. Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.