¿Cómo puedo monitorear las E / S de disco en un directorio particular?


10

Tengo algunos procesos con un nombre conocido que todos escriben en archivos en un solo directorio. Me gustaría registrar el número de lecturas y escrituras de bloque de disco durante un período ( no solo el acceso a archivos) para probar si un cambio de parámetro reduce significativamente la cantidad de E / S. Actualmente estoy usando iostat -d -p, pero eso está limitado a toda la partición.



1
Esto es diferente de esas preguntas, porque no estoy interesado en los archivos en sí, sino en la cantidad de E / S.
l0b0

Respuestas:


10

Me doy cuenta de que esto parecerá simplista y absurdo, pero si tiene control sobre las aplicaciones en cuestión (tal vez en un entorno de prueba), podría montar SÓLO ese directorio en una partición propia, entonces iostat, etc., le diría solo al respecto, y nada más en ese lugar.

Si hay unidades físicas involucradas, podría simularlo con un montaje de bucle invertido

dd if=/dev/zero of=/bigdisk/LOOPFILE bs=1024m count=1024m # 1gb loopback file
mke2fs -j /bigdisk/LOOPFILE
mkdir /tmpcopy
mount -o loop /tmpcopy /bigdisk/LOOPFILE
cp -r -p $SPECIALDIR2MONITOR /tmpcopy
umount /tmpcopy
mount -o loop $SPECIALDIR2MONITOR  /bigdisk/LOOPFILE,

Eso no eliminaría completamente todas las E / S de disco de la competencia, pero estoy bastante seguro iostatde que la salida sería más específica para su necesidad.


3

No creo que haya una forma directa. Una forma de obtener los datos que desea sería acceder al árbol de directorios a través de un sistema de archivos virtual que registra los accesos. Loggedfs es uno de esos sistemas de archivos, aunque no sé si puede mostrar todos los datos que le interesan. (De lo contrario, probablemente sería un modesto esfuerzo de codificación de esos datos).

mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica

2

Puede usar inotifywait -m DIRNAMEdesde las herramientas de inotify .


-dno existe en inotifywait 3.13. Qué quiere decir -m?
l0b0

@ l0b0: oh, uso 3.14 del repositorio de git. lo siento. Pero la página de manual indica que es lo mismo que -mcon la excepción de ejecutarse en segundo plano y requerir un archivo externo.
Tobias Kienzler

también -rpodría ser útil
Tobias Kienzler

1
Probado Lamento el malentendido, pero no estoy interesado en qué archivos (o incluso cuántos archivos) se accedieron, sino en la cantidad de E / S.
l0b0

2
Tenga en cuenta que esto es específico de Linux. Los BSD tienen llamadas de sistema kqueue y pnotify, pero no sé si hacen exactamente lo que el autor está solicitando.
Shawn J. Goff
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.