104 votos

¿Cómo puedo monitorizar carga de disco duro en linux

Hay una buena utilidad de línea de comandos para controlar el disco duro de carga en linux? Algo como top , pero luego de monitoreo de la actividad del disco yo.s.o. el uso de la cpu.

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

Mi herramienta ideal sería algo que se imprime "estás usando el 35% de su disco ancho de banda de ahora". Alguna idea?

85voto

Dave Cheney Puntos 13302

Puede obtener una muy buena medida de este usando el iostat herramienta.

% 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. Se define como

Porcentaje de tiempo de CPU durante la cual I/O solicitudes fueron publicadas para el dispositivo (utilización de ancho de banda para el dispositivo). Saturación del dispositivo se produce cuando este valor es cercano al 100%.

82voto

Tim Howland Puntos 3650

iotop es una versión de la parte superior que se ve en cuánto IO cada proceso está utilizando. Es en el estándar de los repositorios de ubuntu; no sé si es en red hat enterprise linux o Fedora, pero debería ser.

enter image description here

Para los mayores núcleos (decir CentOS 5.x o RHEL 5.x) que no admiten iotop, uso topio lugar (documentado aquí: http://yong321.freeshell.org/freeware/pio.html#linux. Se basa en /proc//io para io estadísticas y proporciona una funcionalidad similar como iotop. Vea el enlace para más detalles.

14voto

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

Por ejemplo (IIUC) algo como esto (en bash) debe proporcionar 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 la documentación.

3voto

Scott Gottreu Puntos 1253

RRDtool debe hacer lo que quieras aquí utiliza un demonio para volcado de datos de sistema y permite entonces que procesarla sin embargo te gusta. A menudo lo he utilizado para producir gráficos etc. para medir la carga del sistema.

2voto

user2987 Puntos 61

para averiguar lo que su ancho de banda total se puede utilizar hdparm -T /dev/sda a prueba la memoria caché del búfer (fileio) rendimiento hdparm -t /dev/sda a prueba el dispositivo de lectura de rendimiento

ejemplos: mi laptop se pone 82MB/seg desde el disco SATA y 2 gb/seg de la caché. Mi escritorio se pone 12 GB/s de la caché y de 500 mb/seg de la TAREA de la matriz RAID. Sospecho que los últimos números podrían ser el doble en el servidor de la clase de hardware.

conjunto de readahead mayor de 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  

los tiempos de lectura de 1GB en diferentes tamaños de bloque y diferentes de lectura-cabezas

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: