it-swarm-es.com

¿Cómo puedo monitorear la carga del disco duro en Linux?

¿Existe una buena utilidad de línea de comandos para monitorear la carga del disco duro en Linux? Algo así como top pero luego monitorear la actividad del disco i.s.o. uso de CPU.

Más específicamente, sospecho que para algunos servidores (carga pesada) después de varias optimizaciones en varias partes de los programas que se ejecutan en él, en este momento el cuello de botella es simplemente el registro de archivos en el disco. Pero me resulta muy difícil evaluar cuánto tráfico pueden manejar los servidores.

Mi herramienta ideal sería algo que imprima "Estás utilizando el 35% del ancho de banda de tu disco en este momento". ¿Algunas ideas?

105
Pieter

Puede obtener una buena medida de esto utilizando la herramienta iostat.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

La utilización del disco aparece en la última columna. Esto se define como

Porcentaje de tiempo de CPU durante el cual se emitieron solicitudes de E/S al dispositivo (utilización de ancho de banda para el dispositivo). La saturación del dispositivo ocurre cuando este valor es cercano al 100%.

85
Dave Cheney

iotop es una versión de top que analiza cuánto IO cada proceso está usando. Está en los repositorios estándar de ubuntu; no sé si está en RHEL o Fedora, pero debería ser.

enter image description here

Para los núcleos más antiguos (por ejemplo, CentOS 5.xo RHEL 5.x) que no admiten iotop, use topio en su lugar (documentado aquí: http://yong321.freeshell.org/freeware/pio.html#linux . Se basa en/proc // io para las estadísticas de io y proporciona una funcionalidad similar a iotop. Consulte el enlace para obtener más detalles.

82
Tim Howland

Como sugiere sastanin en los comentarios, puede procesar directamente los valores dados en /sys/block/sda/stat o /proc/diskstats. Esto puede ser útil cuando ninguna de las otras herramientas mencionadas están disponibles y no puede instalarlas fácilmente.

Por ejemplo (IIUC) algo como esto (en bash) debería dar el número de lecturas por segundo:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Ver https://www.kernel.org/doc/Documentation/iostats.txt y https://www.kernel.org/doc/Documentation/block/stat.txt para documentación.

14

Debería echar un vistazo a arriba , que combina el poder de iotop/top/iftop, todo en un solo lugar, y resalta las partes críticas de su sistema.

8
Yvan

Recomendaría echar un vistazo a la herramienta nmon. Le mostrará la carga en vivo en una serie de parámetros del sistema, así como la grabación de datos en un archivo para su posterior examen. Es una herramienta gratuita disponible aquí :

6
MikeyB

para saber cuál es su ancho de banda total, puede usar hdparm -T /dev/sda para probar el rendimiento de la memoria caché del búfer (fileio) hdparm -t /dev/sda para probar el rendimiento de lectura del dispositivo

ejemplos: mi computadora portátil obtiene 82 MB/seg. del disco SATA y 2 GB/seg. del caché. Mi dekstop obtiene 12 GB/seg. De la memoria caché y 500 MB/seg. De la matriz RAID HW. Sospecho que esos últimos números podrían ser el doble en el hardware de clase de servidor.

establecer readahead superior a 256, 4096 funciona mejor para mí

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

veces leyendo 1 GB en diferentes tamaños de bloque y diferentes cabezas de lectura

5
user2987

La herramienta estándar para mostrar la carga del disco duro es iostat.

No le dirá cuánto% de ancho de banda de disco está utilizando, ya que no sabe cuánto ancho de banda tiene su disco. En cualquier caso, su disco solo tiene la cifra citada por el fabricante para grandes transferencias de datos contiguos.

4
Alnitak

Creo que RRDtool debería hacer lo que quieras aquí usa un demonio para volcar datos del sistema y luego te permite procesarlo como quieras. A menudo lo he usado para producir gráficos, etc. para medir la carga del sistema.

3
PixelSmack

htop es una buena herramienta para verificar la información del proceso. Puede agregar o eliminar columnas y entre ellas se encuentran las velocidades de lectura y escritura de los procesos.

0
inquam