Pregunta ¿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 como top pero luego monitoreando la actividad del disco i.s.o. uso de CPU.

Más específicamente, sospecho que para algunos servidores (de 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 los 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 "Actualmente está usando el 35% del ancho de banda de su disco". ¿Algunas ideas?


88
2018-05-18 13:56


origen


Pregunta perfecta, es exactamente lo que estaba buscando =) - rafa.ferreira
Es posible leer sysfs directamente, como /sys/block/sda/stat. El campo # 1 proporciona el número total de lecturas, el campo # 5 es el número total de escrituras, el campo # 9 es el número de operaciones de E / S en curso. Ver mas en kernel.org/doc/Documentation/iostats.txt Los valores son sin signo largo y pueden ajustarse. - sastanin
Esta es una muy buena pregunta porque siempre estamos luchando con este problema en los servidores Plesk. Sin embargo, lo que falta es how do you do it with SNMP?. Está bien iniciar sesión y verificar cosas, pero uno realmente necesita datos históricos. - Eugene van der Merwe
unix.stackexchange.com/questions/55212/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Respuestas:


Puedes obtener una buena medida de esto 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 se muestra 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). Saturación del dispositivo   Ocurre cuando este valor es cercano al 100%.


77
2018-05-18 14:15



¿En qué paquete reside esto en Debian, si lo hay? apt-cache dump no apareció nada para iostat - hBy2Py
@Brian: está en el paquete sysstat (a través de yum de todos modos ...) - Joe
@Joe Nifty, gracias! - hBy2Py
No se pudo encontrar esto en RHEL 6.5. ¿Está disponible para RHEL? - Hazok
¿Puede esto funcionar sin tener que continuar con un retraso? ¿Tratar de ejecutar una sola instancia para obtener datos obtiene el mismo número presumiblemente ya que no puede tomar muestras? - Wilf


iotop es una versión de top que analiza la cantidad de IO que utiliza cada proceso. Está en los repositorios de ubuntu estándar; No sé si está en RHEL o Fedora, pero debería estarlo.

enter image description here

Para núcleos más antiguos (digamos CentOS 5.x o RHEL 5.x) que no son compatibles con 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. Vea el enlace para más detalles.


75
2018-05-18 14:14



De hecho, no está instalado de forma predeterminada en Ubuntu, por lo que uno podría emitir: sudo apt-get install iotop para obtenerlo - Moshe
iotop requiere un kernel superior a 2.6.20, que desafortunadamente descarta tanto RedHat el4 como el5. - Dave Cheney
A partir de RedHat 5.4, los bits necesarios para hacer que iotop funcione se han portado hacia atrás. ¡Disfrutar! - Dave Cheney
Está en Fedora :). - jamie


Según lo sugerido por 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á disponible 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 la documentación.


12
2017-07-22 10:16





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


5
2018-03-01 04:42





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 el registro de datos en un archivo para su posterior lectura. Es una herramienta gratuita disponible. aquí:


4
2018-05-18 15:52





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

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

el conjunto de lectura anticipada 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  

tiempos de lectura de 1 GB en diferentes tamaños de bloques y diferentes lecturas anticipadas


4
2018-05-18 15:58



Bienvenido a SF. Puede usar el resaltado de código en sus publicaciones poniendo comillas de vuelta alrededor de cadenas o sangría de párrafos. - ℝaphink
Dos cosas - 1) --setra es ahora -ay 2), el hdparm -{T,t} Los comandos solo emiten lecturas de disco, de acuerdo con strace, por lo que son no destructivos. (Se aplica el descargo de responsabilidad estándar sobre asesoramiento en Internet) - i336_


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

No le dirá cuánto ancho de banda de disco de edad 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.


3
2018-05-18 14:02





Creo que RRDtool debería hacer lo que quieras aquí utiliza un demonio para volcar los datos del sistema y luego le permite procesarlos como desee. Lo he usado a menudo para producir gráficos, etc. para medir la carga del sistema.


2
2018-05-18 14:03