¿Determinar qué proceso está causando E / S de disco pesado?

19

He visto esta pregunta: ¿Cómo identificar la escritura pesada en el disco?

Y yo he utilizado dstat y la cima antes ... pero parece que no milimétrica qué proceso está causando / S de disco. Por ejemplo, desde dstat:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

Observe qué tan alto es dsk / total: entre 2 y 5 MB / seg. Pero luego mire la columna 'más cara': solo hay un par de bytes aquí, un par de KB allí y, a veces, incluso nada. Es el mismo tipo de cosas con 'encima'. Muestra un alto uso general del disco, pero un bajo uso de procesos individuales. Estoy ejecutando CentOS 5, kernel 2.6.18-53.

¿Necesito una versión de kernel más nueva? Tal vez alguna configuración del sistema en algún lugar? La página de inicio 'superior' recomienda instalar algunos parches de kernel, pero prefiero no pasar por la molestia de configurar y compilar mi propio kernel.

davr
fuente

Respuestas:

26

iotop ( enlace ) para empezar ;) No te he visto publicando una salida de él.

1: He experimentado casi la misma situación con un sistema de archivos de registro y un tiempo, sin embargo, con más escrituras.

Intente volver a montar con noatime y apague el registro del sistema de archivos (más tarde solo para probar) para ver si está basado en el sistema de archivos y, como se dijo, iotop si está basado en el proceso.

2: Supongo que esta partición no es parte de una matriz de incursiones que se acaba de reconstruir, ¿verdad?

3: Si tiene muchos archivos muy pequeños (mucho más pequeños que el tamaño de bloque real del dispositivo de bloque y / o el tamaño de bloque del sistema de archivos), y está leyendo esos archivos pequeños, termina leyendo bloques enteros del sistema, y ​​la mayoría de esos bloques serán leídos para nada.

4: Si nada ayuda más arriba, siempre puede obtener la lista de archivos a los que se accede ejecutando

echo 1 > /proc/sys/vm/block_dump

tenga en cuenta que degrada mucho el rendimiento del sistema. Las instrucciones están disponibles en mi publicación anterior aquí

asdmin
fuente
1
Me
golpeó
Tuve suerte, pero casi de inmediato extendí la respuesta, ya que no era exactamente una respuesta para la pregunta;)
asdmin