El otro día os comentaba como monitorizar nuestros discos en Linux. Esto puede resultar muy útil cuando estamos utilizando una aplicación y deseamos conocer el acceso y grado de utilización a los dispositivos de E/S.
En el caso de que queramos saber qué capacidad máxima de lectura y escritura tiene nuestro disco (o dispositivo externo) utilizaremos las aplicaciones hdparm y dd como os comento a continuación.
Para obtener la velocidad de lectura del disco:
ahornero@6581-D$ sudo hdparm -tT /dev/sda1
En mi caso, con un disco duro en estado sólido (SSD):
/dev/sda1:
Timing cached reads: 4308 MB in 2.00 seconds = 2157.12 MB/sec
Timing buffered disk reads: 338 MB in 3.01 seconds = 112.40 MB/sec
Unos resultados bastante realistas teniendo en cuenta que el fabricante (Intel) certifica los 3GB/s (un poco truncandos los resultados, hay que diferenciar entre caché y buffer).
Ahora, para obtener unos resultados más contrastados haremos los mismo iterando 5 veces el comando:
ahornero@6581-D$ for i in 1 2 3; do sudo hdparm -tT /dev/sda1; do
Obteniendo el siguiente resultado:
/dev/sda1:
Timing cached reads: 4264 MB in 2.00 seconds = 2133.68 MB/sec
Timing buffered disk reads: 338 MB in 3.01 seconds = 112.42 MB/sec/dev/sda1:
Timing cached reads: 4264 MB in 2.00 seconds = 2133.71 MB/sec
Timing buffered disk reads: 338 MB in 3.01 seconds = 112.33 MB/sec/dev/sda1:
Timing cached reads: 4220 MB in 2.00 seconds = 2111.50 MB/sec
Timing buffered disk reads: 338 MB in 3.01 seconds = 112.42 MB/sec
Con los que podremos verificar los datos.
Para visualizar la velocidad máxima de escritura, obtendremos los datos del arranque del sistema, así, con el parámetro -I y filtrando los resultados con grep:
ahornero@6581-D$ sudo hdparm -I /dev/sda1 | grep -i speed
Obteniendo:
* SATA-I signaling speed (1.5Gb/s)
* SATA-II signaling speed (3.0Gb/s)
Estos sí serían los ideales, es decir, los que nos da el fabricante.
Para verificar la escritura en disco, usaremos el commando dd, creamos un archivo (testing.file) cogiendo los datos del /dev/zero con un tamaño de 4GB y veremos la tasa de escritura. Así:
ahornero@6581-D$ dd if=/dev/zero of=testing.file bs=8k count=512k
524288+0 records in
524288+0 records out
4294967296 bytes (4.3 GB) copied, 72.6282 seconds, 59.1 MB/s
Y para pequeñas escrituras (e.g. 512KB), unos resultados impresionantes:
ahornero@6581-D$ dd if=/dev/zero of=testing.file bs=512k count=1
1+0 records in
1+0 records out
524288 bytes (524 kB) copied, 0.00178933 seconds, 293 MB/s
Ahora sí se cumplen esos 300MB/s que decía el fabricante.
PS: La última prueba con cierta gracia y picardía porque he modificado el tamaño del bloque poniéndolo al máximo del rango y con la cuenta a 1, de ahí esa diferencia tan exagerada. Probad lo inverso, es decir: bs=1 y count=512k …
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Ahora, para obtener unos resultados más contrastados haremos los mismo iterando 5 veces el comando:
ahornero@6581-D$ for i in 1 2 3; do sudo hdparm -tT /dev/sda1; do
Así itera 3 veces sólo en vez de 5 no ? Y al final creo que iría un "done" en vez de un "do", porque lo he probado y no iba. Gracias por el artículo, me ha sido de mucha utilidad.