Este es un problema simple pero la primera vez que he tenido que solucionarlo: encontrar qué archivos / inodos específicos son los objetivos de la mayoría de las E / S. Me gustaría poder obtener una visión general del sistema, pero si tengo que dar un PID o TID, estoy de acuerdo con eso.
Me gustaría ir sin tener que hacer un strace
programa en el que aparece iotop
. Preferiblemente, usando una herramienta en la misma línea que iotop
pero que detalla por archivo. Puedo usar lsof
para ver qué archivos ha abierto Mailman, pero no indica qué archivo está recibiendo E / S o cuánto.
He visto en otros lugares donde se sugirió su uso, auditd
pero preferiría no hacerlo, ya que incluiría la información en nuestros archivos de auditoría, que usamos para otros fines y esto parece un problema que debería poder investigar. De este modo.
El problema específico que tengo ahora es que las instantáneas de LVM se llenan demasiado rápido. Desde entonces, he resuelto el problema, pero me gustaría haberlo solucionado de esta manera en lugar de simplemente hacer un ls
en todos los descriptores de archivos abiertos /proc/<pid>/fd
para ver cuál crecía más rápido.
fuente
fatrace
anterior, que algo así como el guión que escribí debería se han ofrecido ya que es más ampliamente utilizable.Respuestas:
Hay varios aspectos de esta pregunta que se han abordado parcialmente a través de otras herramientas, pero no parece haber una sola herramienta que brinde todas las funciones que está buscando.
iotop
Esta herramienta muestra qué procesos están consumiendo más E / S. Pero carece de opciones para mostrar nombres de archivo específicos.
De forma predeterminada, hace lo que hace regularmente
top
para los procesos que compiten por el tiempo de la CPU, excepto las E / S de disco. Puede convencerlo para que le brinde una vista de 30,000 pies usando el-a
interruptor para que muestre una acumulación por proceso, con el tiempo.Herramientas i * (inotify, iwatch, etc.)
Estas herramientas proporcionan acceso a los eventos de acceso a archivos, sin embargo, deben estar específicamente dirigidas a directorios o archivos específicos. Por lo tanto, no son tan útiles cuando intentan rastrear el acceso a un archivo no autorizado por un proceso desconocido, al depurar problemas de rendimiento.
Además, el
inotify
marco no proporciona detalles sobre los archivos a los que se accede. Solo está disponible el tipo de acceso, de modo que no se dispone de información sobre la cantidad de datos que se mueven de un lado a otro, utilizando estas herramientas.iostat
Muestra el rendimiento general (lecturas y escrituras) en función del acceso a un dispositivo determinado (disco duro) o partición. Pero no proporciona ninguna idea de qué archivos están generando estos accesos.
blktrace
Esta opción tiene un nivel demasiado bajo. Carece de visibilidad sobre a qué archivos y / o inodos se está accediendo, solo números de bloque sin procesar.
fatrace
Esta es una nueva adición al kernel de Linux y una bienvenida, por lo que solo está en distribuciones más nuevas como Ubuntu 12.10. A mi sistema Fedora 14 le faltaba 8-).
Proporciona el mismo acceso que puede obtener
inotify
sin tener que apuntar a un directorio o archivos en particular.Lo anterior le muestra la identificación del proceso que está accediendo al archivo y a qué archivo está accediendo, pero no le da ningún uso general de ancho de banda, por lo que cada acceso es indistinguible de cualquier otro acceso.
¿Entonces lo que hay que hacer?
La
fatrace
opción muestra lo más prometedor para FINALMENTE proporcionar una herramienta que puede mostrar el uso agregado de E / S de disco en función de los archivos a los que se accede, en lugar de los procesos que acceden.Referencias
fuente
fatrace
y no lo hubieran desarrollado mucho. Realmente aprecio cómo haces un esfuerzo adicional para asegurarte de que la gente entienda la imagen completa y desearía que yo pudiera hacer algo más que votar y dar recompensa.yum
saqué las bibliotecas de python3 por alguna razón. Hice unfile
sobre y parece que es un ejecutable ELF.ldd
no muestra ningún enlacepython
ni tampoco lo hizostrings
. ¿Alguna idea de por qué se molestó con python3?iotop
yiostat
llamadas. Además, descubrí lo de Python, parece que (al menos en Fedora 18) hay unpython
script de "informe de uso de energía", poryum
lo que solo estaba respondiendo al hecho de quepython
está en las dependencias del RPM. Entonces ese misterio particular está resuelto.Todavía no he recibido una respuesta, pero escribí este script (al final) y parece hacer lo que quiero. No lo he probado en otros sistemas y es específico de Linux.
Básicamente, solo se envuelve
strace
durante 30 segundos, filtra las llamadas al sistema relacionadas con el archivo y hace un esfuerzo para eliminar el nombre del archivo. Cuenta el número de ocurrencias de ese archivo en elstrace
y presenta un resumen paginado al usuario. No es perfecto, pero la cantidad de llamadas del sistema a un archivo en particular puede tener una correlación débil con la cantidad de E / S que está realizando.No lo he probado completamente, pero si no funciona fuera de la caja, debería darles a las personas un lugar para comenzar. Si se desarrolla más, puede ser recomendable volver a escribir esto en un lenguaje de nivel superior como python .
Si no recibo una respuesta dentro de una semana de una forma menos casera de hacer esto (incluso si es otra herramienta que solo cuenta las E / S de un proceso en particular), aceptaré esto como mi respuesta para la posteridad.
Guión:
fuente
Puedes usar iwatch usando iWatch
iWatch es muy simple de usar, supongamos que desea ver el cambio en el sistema de archivos / etc, solo necesita ejecutarlo en la consola
e iwatch te dirá si algo cambia en este directorio. Y si quieres ser notificado por correo electrónico:
En este caso, el administrador recibirá una notificación por correo electrónico (tal vez pueda usar su cuenta de puerta de enlace de SMS, por lo que se alarmará inmediatamente en cualquier momento y en cualquier lugar). Y si desea monitorear muchos directorios de diferencia, puede usar un archivo de configuración. Este archivo de configuración es un archivo xml con una estructura fácil de entender.
fuente
inotify
es correcto? Dudaba en usar algo basado eninotify
que tenía que darle rutas (que es esencialmente lo que estoy buscando) y me preocupaba la cantidad de sobrecarga que habría si solo hiciera todo debajo/
¿Puede este filtro por PID? Podría tolerar la lentitud temporal si va a ser lo suficientemente fácil extraer qué programa lo está haciendo. El sitio web tampoco tiene ningún resultado de comando de ejemplo.