Revista Informática

Cómo medir la velocidad de lectura y escritura en disco en Linux

Publicado el 31 agosto 2016 por Drassill
Agosto se acaba, y con ello los días de playa, relax y vacaciones, haciendo que cada uno tenga que volver a la rutina y haciendo que poco a poco la gente vaya retomando sus quehaceres habituales. Tras un pequeño descanso, vuelvo a la carga con las pilas cargadas y con ganas de seguir escribiendo artículos en este humilde blog que, espero que os gusten. En la ocasión de hoy vengo con un pequeño post orientado a la velocidad de lectura y escritura de un disco duro. 
disco_duro
La importancia de la eficiencia de todos los componentes es un hecho, y obviamente la eficiencia de un disco duro no es de menos, pues determina el tiempo que tarda este en leer un dato o escribirlo, cosa que no se nota con archivos pequeños, pero que se nota considerablemente en el tratamiento de archivos grandes. Generalmente es bastante perceptible por nuestra parte el saber si un disco actúa con la velocidad adecuada, pero a veces necesitamos datos más concretos, como saber con exactitud cuantos megabytes por segundo es capaz de leer y escribir.
Este proceso es bastante sencillo de realizar y la precisión con la que obtenemos el resultado es muy fiable, ayudándonos a hacernos una idea de le eficiencia de nuestro disco.
Requisitos
Los requisitos para realizar exitosamente este procedimiento son muy poco pero importantes. El primer requisito sería tener conocimiento del nombre de las unidades de disco instaladas en el equipo al igual que el tamaño de los sectores de éstas. Esta información se obtiene mediante un sencillo comando llamado fdisk, seguido del parámetro -l.
fdisk-l
En mi caso en concreto he obtenido el siguiente resultado referente a la única unidad de disco que tengo instalada que, como veis, se trata de /dev/sda y que contiene bloques de 512 bytes, un dato que no parece relevante, pero que tendrá cierta importancia más adelante..
fdiskl
Ahora que conocemos las características del disco instalado, tendremos que instalar una herramienta que posibilitará la medición de los tiempos de lectura del disco. Esta herramienta suele estar instalada por defecto en las últimas distribuciones, pero es preferible asegurarse. Dicha herramienta se denomina hdparm y se encuentra en los propios repositorios oficiales de las distribuciones Linux; es por eso que si deseamos instalar el paquete hdparm, simplemente tendríamos que escribir en la consola:
apt-get install hdparm
Velocidad de lectura

Comencemos con la velocidad de lectura. Esto se logra gracias la herramienta que recién acabamos de instalar; es decir mediante la herramienta hdparm. Con esta herramienta podremos medir la cantidad de MBs leídos por segundo, si bien es necesario ejecutarla varias veces y de ahí hacer una media, pues la velocidad de lectura no es un valor fijo, sino variable; un valor que  obviamente no cambia drásticamente cada vez que se ejecuta el comando, pero que sí que puede variar entre un comando y otro.
El comando a partir del cual obtendríamos la velocidad de lectura sería:
hdparm -tT/dev/sda
Este sería para ejecutar el comando una única vez, cosa que no ofrece un valor 100% fidedigno tal y como he dicho antes... La mejor forma de obtener una conclusión fiable, sería ejecutando dicho comando 10 veces, para lo cual podemos modificar la línea anterior para dejarla de la siguiente forma:
for((i=1;i<=10;i+=1))do hdparm -tT/dev/sda; done
hparm_salida
Como podéis comprobar, a excepción de la primera lectura, que ha sido claramente más veloz que el resto, no hay una gran diferencia entre el resultado entre los comandos, con lo que podemos decir que el resultado obtenido es fiable.
Velocidad de escritura
Tan importante como la velocidad de lectura es la velocidad de escritura. Aquí, a diferencia de con el testeo de la lectura, no se usa el comando hdparm, sino que es necesario recurrir al comando dd, del cual ya he hablado con anterioridad. Este comando vuelca el contenido de un origen en un destino y muestra el tiempo invertido en dicha operación, con lo que es un método perfectamente válido para hacer la medición de velocidad de escritura.
Para la prueba en cuestión, lo que haremos será volcar cadenas de valores 0 en un fichero ficticio llamado  test.dat. Esos ceros se introducirán en bloques de 512 (debido a que hemos obtenido dicho tamaño anteriormente mediante el comando fdisk) 1 millón de veces. Además, para que el comando dd muestre un tiempo de escritura preciso, nos veremos obligados a usar el parámetro conv=fdatasync. Esto lo haremos usando el comando de a continuación.
ddif=/dev/zero of=/tmp/test.dat bs=512count=1000000conv=fdatasync
dd_salida
En este caso el tiempo de escritura ha sido de 33,8 MB/s, una cifra no especialmente alta, pero no del todo mala.
Como podéis observar, la comprobación de la velocidad de nuestro disco duro es realmente sencilla y nos ofrece valores muy concretos que nos puede dar una idea muy acertada de la eficiencia de éste.
Espero que os haya resultado útil.
Saludos.

Volver a la Portada de Logo Paperblog