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 straceprograma en el que aparece iotop. Preferiblemente, usando una herramienta en la misma línea que iotoppero que detalla por archivo. Puedo usar lsofpara 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, auditdpero 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 lsen todos los descriptores de archivos abiertos /proc/<pid>/fdpara ver cuál crecía más rápido.
fuente

fatraceanterior, 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
toppara 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-ainterruptor 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
inotifymarco 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
inotifysin 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
fatraceopció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
fatracey 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.yumsaqué las bibliotecas de python3 por alguna razón. Hice unfilesobre y parece que es un ejecutable ELF.lddno muestra ningún enlacepythonni tampoco lo hizostrings. ¿Alguna idea de por qué se molestó con python3?iotopyiostatllamadas. Además, descubrí lo de Python, parece que (al menos en Fedora 18) hay unpythonscript de "informe de uso de energía", poryumlo que solo estaba respondiendo al hecho de quepythonestá 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
stracedurante 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 elstracey 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
inotifyes correcto? Dudaba en usar algo basado eninotifyque 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.