Medir la velocidad de escritura del disco en Linux

Publicado el 25 enero 2023 por Daniel Rodríguez @analyticslane

En muchas ocasiones el cuello de botella de nuestro equipo es el disco duro. La velocidad de lectura puede hacer que el procesador tenga que esperar para procesar los datos, mientras que la velocidad de escritura puede hacer que se demore la terminación del procesos. Por eso es importante conocer la velocidad de nuestro disco. En el caso de los sistemas UNIX una de las formas más fáciles de medir la velocidad de escritura del disco es usar el comando dd.

Este método para medir la velocidad del disco también se puede usar en la terminal de macOS y en Windows si se instala el Subsistema de Windows para Linux (WSL).

Media la velocidad de escritura con dd

El comando básico que se puede usar para medir la velocidad de escritura del disco en los sistemas Linux es el siguiente:

dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync

En este comando mediante la opción if se indica que se lea de /dev/zero un flujo de datos en el archivo que se indique mediante el parámetro of. Los datos se guardarán en bloque del tamaño indicado mediante bs, en el ejemplo de 64kb, y la cantidad de veces indicadas en count. Finalmente, mediante el parámetro conv se indica la opción fdatasync que indica que los datos se guardan físicamente después de terminar. Una vez ejecutado el comando se creará un archivo speed_test en la ruta de trabajo que se puede borrar una vez finalizada la prueba.

En un equipo de trabajo he obtenido el siguiente resultado

$ dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.819597 s, 1.3 GB/s

Lo que indica que el disco duro tiene un capacidad de escritura de 1,3 Gb por segundo.

En base al tipo de archivo con el que se trabaje se pueden cambiar las opciones bs y count para tener uno resultados más cercanos a la realidad. No es lo mismo guardar miles de archivos pequeños que un archivo grande. Si se desea ver el rendimiento con muchos archivos pequeños se puede cambiar el valor de bs a 1k y subir count a 1024k, también generará un archivo de 1Gb, pero el rendimiento generalmente caerá.

$ dd if=/dev/zero of=speed_test bs=1k count=1024k conv=fdatasync
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.78178 s, 386 MB/s

Conclusiones

En esta entrada se ha visto como se puede medir la velocidad de escritura del disco en Linux usando para ello el comando dd. Sin necesidad de instalar un programa para ello.

Imagen de Phiraphon Srithakae.