Cómo verificar el rendimiento de un disco duro (ya sea a través de terminal o GUI). La velocidad de escritura. La velocidad de lectura. Tamaño de caché y velocidad. Velocidad aleatoria
hard-drive
performance
Luis Alvarado
fuente
fuente
Respuestas:
Método terminal
hdparm
Es un buen lugar para comenzar.sudo hdparm -v /dev/sda
dará información también.dd
le dará información sobre la velocidad de escritura.Si la unidad no tiene un sistema de archivos (y solo entonces ), úselo
of=/dev/sda
.De lo contrario, móntelo en / tmp y escriba y luego elimine el archivo de salida de prueba.
Método gráfico
gnome-disks
Cómo realizar un benchmark de E / S de disco
Artículo
¿Hay algo más que quieras?
fuente
/dev/urandom
, así como/dev/zero
entradas,dd
cuando pruebe un SSD, ya que la compresibilidad de los datos puede tener un efecto masivo en la velocidad de escritura./tmp
sistema de archivos a menudo usa un disco RAM en estos días. Por lo tanto, escribir en/tmp
parece estar probando su memoria, no su subsistema de disco.Suominen tiene razón, deberíamos usar algún tipo de sincronización; pero hay un método más simple, conv = fdatasync hará el trabajo:
fuente
No recomendaría usarlo
/dev/urandom
porque está basado en software y es lento como el cerdo. Es mejor tomar una porción de datos aleatorios en ramdisk. En las pruebas de disco duro, el azar no importa, porque cada byte se escribe como está (también en ssd con dd). Pero si probamos el grupo zfs deduptado con cero puro o datos aleatorios, hay una gran diferencia de rendimiento.Otro punto de vista debe ser la inclusión del tiempo de sincronización; Todos los sistemas de archivos modernos utilizan el almacenamiento en caché en las operaciones de archivos.
Para medir realmente la velocidad del disco y no la memoria, debemos sincronizar el sistema de archivos para eliminar el efecto de almacenamiento en caché. Eso se puede hacer fácilmente mediante:
con ese método obtienes salida:
entonces la velocidad de datos del disco es solo 104857600 / 0.441 = 237772335 B / s -> 237MB / s
Eso es más de 100 MB / s más bajo que con el almacenamiento en caché.
Feliz benchmarking,
fuente
Si desea monitorear la velocidad de lectura y escritura del disco en tiempo real, puede usar la herramienta iotop .
Esto es útil para obtener información exacta sobre el rendimiento de un disco para una aplicación o tarea en particular. La salida le mostrará la velocidad de lectura / escritura por proceso, y la velocidad total de lectura / escritura para el servidor, muy similar a
top
.Para instalar iotop:
Para ejecutarlo:
fuente
Si desea precisión, debe usar
fio
. Requiere leer el manual (man fio
) pero le dará resultados precisos. Tenga en cuenta que para cualquier precisión, debe especificar exactamente lo que desea medir. Algunos ejemplos:Velocidad de LECTURA secuencial con bloques grandes (debe estar cerca del número que ve en las especificaciones de su unidad):
Velocidad de ESCRITURA secuencial con bloques grandes (debe estar cerca del número que ve en las especificaciones de su unidad):
Random 4K read QD1 (este es el número que realmente importa para el rendimiento en el mundo real a menos que esté seguro):
Mezcla aleatoria 4K de lectura y escritura QD1 con sincronización (este es el peor número de caso que debería esperar de su unidad, generalmente menos del 1% de los números enumerados en la hoja de especificaciones):
Aumente el
--size
argumento para aumentar el tamaño del archivo. El uso de archivos más grandes puede reducir los números que obtiene dependiendo de la tecnología de la unidad y el firmware. Los archivos pequeños darán resultados "demasiado buenos" para los medios de rotación porque el cabezal de lectura no necesita moverse tanto. Si su dispositivo está casi vacío, usar un archivo lo suficientemente grande como para casi llenar el disco le dará el peor comportamiento para cada prueba. En el caso de SSD, el tamaño del archivo no importa tanto.Sin embargo, tenga en cuenta que para algunos medios de almacenamiento, el tamaño del archivo no es tan importante como el total de bytes escritos durante un período de tiempo corto. Por ejemplo, algunos SSD pueden tener un rendimiento significativamente más rápido con bloques previamente borrados o pueden tener un área flash SLC pequeña que se usa como caché de escritura y el rendimiento cambia una vez que el caché SLC está lleno. Como otro ejemplo, los discos duros Seagate SMR tienen un área de caché PMR de aproximadamente 20 GB que tiene un rendimiento bastante alto, pero una vez que se llena, escribir directamente en el área SMR puede reducir el rendimiento al 10% del original. Y la única forma de ver esta degradación del rendimiento es escribir primero más de 20 GB lo más rápido posible. Por supuesto, todo depende de su carga de trabajo: si su acceso de escritura está lleno de retrasos prolongados que permiten que el dispositivo limpie la memoria caché interna, secuencias de prueba más cortas reflejarán mejor su rendimiento en el mundo real. Si necesita hacer muchas IO, debe aumentar ambas
--io_size
y--runtime
parámetros. Tenga en cuenta que algunos medios (p. Ej., La mayoría de los dispositivos flash) recibirán un desgaste adicional de tales pruebas. En mi opinión, si algún dispositivo es lo suficientemente pobre como para no manejar este tipo de prueba, no debe usarse para contener datos valiosos en ningún caso.Además, algunos dispositivos SSD de alta calidad pueden tener algoritmos de nivelación de desgaste aún más inteligentes donde el caché interno SLC tiene suficiente inteligencia para reemplazar los datos que se reescriben durante la prueba si llega al mismo espacio de direcciones (es decir, el archivo de prueba es más pequeño que el caché SLC total). Para tales dispositivos, el tamaño del archivo comienza a importar nuevamente. Si necesita su carga de trabajo real, es mejor probar con tamaños de archivo que realmente verá en la vida real. De lo contrario, sus números pueden parecer demasiado buenos.
Tenga en cuenta que
fio
creará el archivo temporal requerido en la primera ejecución. Se rellenará con datos aleatorios para evitar obtener números demasiado buenos de dispositivos que engañan al comprimir los datos antes de escribirlos en el almacenamiento permanente. El archivo temporal se llamaráfio-tempfile.dat
en los ejemplos anteriores y se almacenará en el directorio de trabajo actual. Por lo tanto, primero debe cambiar al directorio que está montado en el dispositivo que desea probar.Si tiene un buen SSD y desea ver números aún más altos, aumente por
--numjobs
encima. Eso define la concurrencia para las lecturas y escrituras. Todos los ejemplos anteriores se hannumjobs
configurado para1
que la prueba se trate de lectura y escritura de procesos de subproceso único (posiblemente con una cola establecida coniodepth
). Los SSD de gama alta (por ejemplo, Intel Optane) deberían obtener números altos incluso sin aumentarnumjobs
mucho (por ejemplo,4
deberían ser suficientes para obtener los números de especificaciones más altos), pero algunos SSD "Enterprise" requieren ir a32
-128
para obtener los números de especificaciones debido a la latencia interna de esos los dispositivos son más altos, pero el rendimiento general es una locura.fuente
max_sectors_kb
. Cambié los comandos de ejemplo anteriores para usar un tamaño de bloque de 1 MB porque parece funcionar con hardware del mundo real. Y también probé quefsync
no importa leer.iodepth
a1
para el acceso aleatorio exactamente porque los programas del mundo real a menudo corren algoritmos / lógica que no funciona con una profundidad mayor que cualquier 1. Como resultado, si dicha profundidad es "demasiado bajo" el dispositivo de E / S es malo. Es cierto que algunos dispositivos SSD se beneficiarán de una profundidad superior a 32. Sin embargo, ¿puede señalar cualquier carga de trabajo del mundo real que requiera acceso de lectura y pueda mantener una profundidad de yodo superior a 32? TL; DR: si desea reproducir un número de referencia de lectura increíblemente alto con un dispositivo de alta latencia, useiodepth=256 --numjobs=4
pero nunca espere ver esos números de verdad.Bonnie ++ es la última utilidad de referencia que conozco para Linux.
(¡Actualmente estoy preparando un livecd de Linux en el trabajo con bonnie ++ para probar nuestra máquina basada en Windows con él!)
Se encarga del almacenamiento en caché, la sincronización, los datos aleatorios, la ubicación aleatoria en el disco, las actualizaciones de pequeño tamaño, las actualizaciones de gran tamaño, las lecturas, las escrituras, etc. Comparando una llave USB, un disco duro (rotativo), una unidad de estado sólido y un disco basado en ram El sistema de archivos puede ser muy informativo para el novato.
No tengo idea si está incluido en Ubuntu, pero puedes compilarlo desde la fuente fácilmente.
http://www.coker.com.au/bonnie++/
fuente
Velocidad de escritura
El tamaño del bloque es en realidad bastante grande. Puedes probar con tamaños más pequeños como 64k o incluso 4k.
Velocidad de lectura
Ejecute el siguiente comando para borrar la memoria caché
Ahora lea el archivo que se creó en la prueba de escritura:
fuente
algunos consejos sobre cómo usar bonnie ++
Un poco más en: EJEMPLO SIMPLE BONNIE ++ .
fuente
f3 - Lucha contra el fraude flash
Compruebe la integridad, detecte unidades flash falsas y pruebe el rendimiento, las tres de una sola vez
Más sobre esta respuesta .
fuente