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.
$ sudo iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u:0]
6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
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.
$ sudo iotop -a
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
258 be/3 root 0.00 B 896.00 K 0.00 % 0.46 % [jbd2/dm-0-8]
22698 be/4 emma 0.00 B 72.00 K 0.00 % 0.00 % chrome
22712 be/4 emma 0.00 B 172.00 K 0.00 % 0.00 % chrome
1177 be/4 root 0.00 B 36.00 K 0.00 % 0.00 % cupsd -F
22711 be/4 emma 0.00 B 120.00 K 0.00 % 0.00 % chrome
22703 be/4 emma 0.00 B 32.00 K 0.00 % 0.00 % chrome
22722 be/4 emma 0.00 B 12.00 K 0.00 % 0.00 % chrome
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.
$ iostat -htx 1 1
Linux 3.5.0-19-generic (manny) 08/18/2013 _x86_64_ (3 CPU)
08/18/2013 10:15:38 PM
avg-cpu: %user %nice %system %iowait %steal %idle
18.41 0.00 1.98 0.11 0.00 79.49
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda
0.01 0.67 0.09 0.87 1.45 16.27 37.06 0.01 10.92 11.86 10.82 5.02 0.48
dm-0
0.00 0.00 0.09 1.42 1.42 16.21 23.41 0.01 9.95 12.22 9.81 3.19 0.48
dm-1
0.00 0.00 0.00 0.02 0.01 0.06 8.00 0.00 175.77 24.68 204.11 1.43 0.00
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.
$ sudo blktrace -d /dev/sda -o - | blkparse -i -
8,5 0 1 0.000000000 258 A WBS 0 + 0 <- (252,0) 0
8,0 0 2 0.000001644 258 Q WBS [(null)]
8,0 0 3 0.000007636 258 G WBS [(null)]
8,0 0 4 0.000011344 258 I WBS [(null)]
8,5 2 1 1266874889.709032673 258 A WS 852117920 + 8 <- (252,0) 852115872
8,0 2 2 1266874889.709033751 258 A WS 852619680 + 8 <- (8,5) 852117920
8,0 2 3 1266874889.709034966 258 Q WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 4 1266874889.709043188 258 G WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 5 1266874889.709045444 258 P N [jbd2/dm-0-8]
8,0 2 6 1266874889.709051409 258 I WS 852619680 + 8 [jbd2/dm-0-8]
8,0 2 7 1266874889.709053080 258 U N [jbd2/dm-0-8] 1
8,0 2 8 1266874889.709056385 258 D WS 852619680 + 8 [jbd2/dm-0-8]
8,5 2 9 1266874889.709111456 258 A WS 482763752 + 8 <- (252,0) 482761704
...
^C
...
Total (8,0):
Reads Queued: 0, 0KiB Writes Queued: 7, 24KiB
Read Dispatches: 0, 0KiB Write Dispatches: 3, 24KiB
Reads Requeued: 0 Writes Requeued: 0
Reads Completed: 0, 0KiB Writes Completed: 5, 24KiB
Read Merges: 0, 0KiB Write Merges: 3, 12KiB
IO unplugs: 2 Timer unplugs: 0
Throughput (R/W): 0KiB/s / 510KiB/s
Events (8,0): 43 entries
Skips: 0 forward (0 - 0.0%)
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.
$ sudo fatrace
pickup(4910): O /var/spool/postfix/maildrop
pickup(4910): C /var/spool/postfix/maildrop
sshd(4927): CO /etc/group
sshd(4927): CO /etc/passwd
sshd(4927): RCO /var/log/lastlog
sshd(4927): CWO /var/log/wtmp
sshd(4927): CWO /var/log/lastlog
sshd(6808): RO /bin/dash
sshd(6808): RO /lib/x86_64-linux-gnu/ld-2.15.so
sh(6808): R /lib/x86_64-linux-gnu/ld-2.15.so
sh(6808): O /etc/ld.so.cache
sh(6808): O /lib/x86_64-linux-gnu/libc-2.15.so
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