
¿Cómo monitorear el tamaño de los iops de almacenamiento en un Linux moderno?
Puedo monitorear la cantidad de iops de almacenamiento usando comandos como iostat. Sin embargo, me gustaría saber el tamaño de los iops que genera la carga de trabajo.
Algo así como, en los últimos X segundos hubo: 5 iops 4K, 10 iops 8K, 20 iops 16K...
Estoy interesado en monitorear a nivel de dispositivo de bloque (por ejemplo: /dev/sda), sin embargo, en cualquier otro nivel también sería interesante.
Respuesta1
Nivel bajo
En el nivel bajo, puede obtener esta información de /sys/block/X/stat
, que está documentadaaquí.
El contenido de ejemplo se ve así:
10465 3250 759844 27528 4400 2983 546848 66306 0 9754 93792
Los campos que queremos son las columnas 1 y 3 para lecturas y 5 y 7 para escrituras. El método de cálculo es el mismo para ambos, así que solo hablaré de las lecturas.
La columna 1 es la cantidad de lecturas (que usted indicó que ya puede monitorear) y la columna 3 es la cantidad de sectores leídos. Un sector tiene 512 bytes. Entonces, con estos para calcular el tamaño de las lecturas, simplemente hazlo $col3 * 512 / $col1
.
Los números en este archivo son el total desde que el disco se puso en línea. Entonces, para calcular el tamaño de lectura promedio durante un período de tiempo, simplemente lee el archivo dos veces y calcula con: ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1)
.
Tenga en cuenta que el método anterior le proporciona el tamaño de los OP realizados a nivel de aplicación (la descripción no es exacta, pero sí lo suficientemente cercana). El kernel puede fusionar varias operaciones para que la cantidad de operaciones realizadas en el disco sea menor. El cálculo para esto es: $col3 * 512 / ($col1 - $col2)
. Y para obtener el valor durante un período de tiempo:($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))
Nivel alto
iostat
También puede darle el valor, pero con menos precisión. No diferencia escrituras o lecturas, y solo le da el valor en sectores, no en bytes (de nuevo, multiplique por 512). Pero el comando es iostat -x -d
, y la columna a mirar es avgrq-sz
.