¿Cómo puedo probar el rendimiento de mi disco?
Precauciones
En la prueba de rendimiento del disco, si el número de sector de inicio no está alineado con 4 KiB, el rendimiento del disco se verá muy afectado. Asegúrese de que el número de sector de inicio esté alineado en 4 KiB antes de comenzar la prueba.
- El disco compartido debe estar conectado a varios servidores (ECSs o BMSs).
- Si el disco compartido está conectado a varios ECS, estos ECS deben pertenecer al mismo grupo de ECS antiafinidad.
Si estos ECS no cumplen con el requisito de antiafinidad, no se puede lograr el rendimiento óptimo del disco compartido.
El proceso de prueba para Windows y Linux es diferente.
Si los resultados de la prueba no cumplen con sus expectativas, consulte ¿Por qué mi prueba de rendimiento de disco con Fio tiene resultados incorrectos?
Windows
La forma en que pruebe el rendimiento del disco depende del sistema operativo del servidor. En esta sección se utiliza Windows 7 Professional de 64 bits como ejemplo. Para otros sistemas operativos Windows, consulte la documentación correspondiente del sistema operativo.
Instale la herramienta de medición de rendimiento Iometer antes de la prueba. Puede obtener la herramienta en http://www.iometer.org/.
- Inicie sesión en el servidor.
- Presione win+R para abrir la ventana Run. Ingrese msinfo32 y haga clic en OK.
Se muestra la ventana de información del sistema.
- Elija components >storage >disks. En el panel derecho, vea el desplazamiento de partición.
- Si 4096 puede dividirse por el valor del parámetro, la partición está alineada de 4 KiB. Consulte 4.
- Si 4096 no se puede dividir por el valor del parámetro, la partición no está alineada con 4 KiB. Asegurar la alineación de 4 KiB para la partición antes de continuar con la prueba.
Si elimina la partición y selecciona otro número de sector de inicio para la alineación de 4 KiB, perderá todos los datos de esa partición. Tenga cuidado cuando realice esta acción.
- Utilice Iometer para probar el rendimiento del disco. Para obtener más información, consulte la documentación del producto Iometer.
Cuando se prueban las IOPS y el rendimiento del disco, los parámetros para Iometer y fio son los mismos. Para obtener más información, consulte Tabla 1.
En el ejemplo siguiente se utiliza Iometer para probar el rendimiento del disco.
- Establezca el flujo de trabajo.
- Establezca el tiempo de ejecución de la prueba.
En este ejemplo, el tiempo de ejecución de la prueba se ajusta a 10 minutos, con un tiempo de rampa de 60 segundos. El rendimiento del disco se prueba después de que las escrituras son estables.
- Establezca el tamaño del bloque de datos y la política de lectura/escritura. En este ejemplo, el tamaño del disco se establece en 64 KiB, la política es 100% de escritura secuencial.
- Vea los resultados de la prueba.
Linux
Si utiliza una versión antigua del sistema operativo Linux, por ejemplo CentOS 6.5, y ejecuta fdisk para crear particiones, el número de sector de inicio predeterminado no estará alineado de 4 KiB, lo que afectará enormemente el rendimiento de la prueba. Por esta razón, si se utiliza un sistema operativo de este tipo, se recomienda seleccionar un nuevo número de sector de inicio, uno que esté alineado con 4 KiB, al crear particiones.
La forma en que pruebe el rendimiento del disco depende del sistema operativo del servidor. Esta sección utiliza CentOS 7.2 64-bit como ejemplo. Para otros sistemas operativos Linux, consulte la documentación correspondiente del sistema operativo.
Instale la herramienta de medición del rendimiento, fio, antes de la prueba.
- Inicie sesión en el servidor y cambie a root de usuario.
- Antes de iniciar la prueba, ejecute el siguiente comando para comprobar si el número de sector de inicio está alineado con 4 KiB:
fdisk -lu
La información que aparecerá en pantalla será similar a la información siguiente:[root@ecs-centos sdc]# fdisk -lu Disk /dev/xvda: 10.7 GiB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x7db77aa5 Device Boot Start End Blocks Id System /dev/xvda1 * 2048 20968919 10483436 83 Linux Disk /dev/xvdb: 10.7 GiB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/xvdc: 53.7 GiB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x3cf3265c Device Boot Start End Blocks Id System /dev/xvdc1 2048 41943039 20970496 83 Linux
- Si 8 puede dividirse por el número de sector inicial, el número está alineado con 4 KiB. Consulte 3.
- Si 8 no se puede dividir por el número de sector inicial, el número no está alineado con 4-KiB. Elimine la partición y seleccione un número de sector de inicio alineado de 4 KiB para la nueva partición antes de continuar con la prueba.
Si elimina la partición y selecciona otro número de sector de inicio para la alineación de 4 KiB, perderá todos los datos de esa partición. Tenga cuidado cuando realice esta acción.
- Ejecute los siguientes comandos y use fio para probar el rendimiento del disco:
- Para probar IOPS de escritura aleatoria, ejecute el siguiente comando: fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=600 -group_reporting -filename=/opt/fiotest/fiotest.txt -name=Rand_Write_IOPS_Test
- Para probar IOPS de lectura aleatoria, ejecute el siguiente comando: fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=600 -group_reporting -filename=/opt/fiotest/fiotest.txt -name=Rand_Read_IOPS_Test
- Para probar el rendimiento de escritura, ejecute el siguiente comando: fio -direct=1 -iodepth=32 -rw=write -ioengine=libaio -bs=1024k -size=10G -numjobs=1 -runtime=600 -group_reporting -filename=/opt/fiotest/fiotest.txt -name=Write_BandWidth_Test
- Para probar el rendimiento de lectura, ejecute el comando: fio -direct=1 -iodepth=32 -rw=read -ioengine=libaio -bs=1024k -size=10G -numjobs=1 -runtime=600 -group_reporting -filename=/opt/fiotest/fiotest.txt -name=Read_BandWidth_Test
- Para probar la latencia de lectura aleatoria, ejecute el comando: fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=60 -group_reporting -filename=/opt/fiotest/fiotest.txt -name=Rand_Read_LATE_Test
- Cuando utilice fio para realizar una prueba de rendimiento del disco sin procesar, asegúrese de que no se hayan creado particiones ni sistemas de archivos en el disco y de que no haya datos almacenados en el disco. O bien, la prueba de disco sin procesar dañará el sistema de archivos y los datos en el disco se convertirán en de sólo lectura. En este caso, su única opción será eliminar el disco y comprar uno nuevo para continuar con la prueba.
- No realice la prueba en un disco con datos de servicio en él. Si dicha prueba es una necesidad, se le aconseja que realice la prueba de la siguiente manera:
- Haga una copia de respaldo de los datos del disco antes de la prueba, ya que puede dañar los datos del disco.
- Especifique un archivo, por ejemplo, -filename=/opt/fiotest/fiotest.txt para probar el rendimiento del sistema de archivos.
Tabla 1 enumera los parámetros de la prueba fio.
Tabla 1 Descripción de parámetro Parámetro
Descripción
direct
Define si se utiliza E/S directa.
- Ajustado a 0: se utiliza E/S almacenada en búfer.
- Ajustado a 1: se utiliza E/S directa.
iodepth
Define la profundidad de la cola de E/S.
Esta profundidad de cola se refiere a la profundidad de cola de cada subproceso independientemente de si se usan uno o varios subprocesos en la prueba. Total concurrent I/Os of fio = iodepth x numjobs Ejemplos:
- Si hay un único subproceso y -iodepth=32, la profundidad de la cola de E/S de este subproceso es 32 y el total de E/S simultáneas de fio es 32 (32 x 1).
- Si hay tres subprocesos y -iodepth=32, la profundidad de la cola de E/S de cada subproceso es 32 y el total de E/S simultáneas de fio es 96 (32 x 3).
rw
Define la política de lectura/escritura de prueba.
- randread: lectura aleatoria
- randwrite: escritura aleatoria
- read: lectura secuencial
- write: escritura secuencial
- randrw: lectura/escritura aleatoria mixta
ioengine
Define cómo fio entrega la solicitud de E/S (sincrónica o asincrónicamente).
- E/S síncrona: Solo se entrega una solicitud de E/S a la vez, y la respuesta se devuelve después de que el núcleo ha procesado la solicitud. Dicho esto, la profundidad de la cola de E/S de subproceso único es siempre menor que 1, y el procesamiento simultáneo de subprocesos múltiples puede usarse para manejar tales problemas. Normalmente, 16 a 32 subprocesos de trabajo simultáneos ocupan completamente la profundidad de la cola de E/S.
- E/S asíncrona: Se entregan múltiples solicitudes de E/S usando libaio a la vez. Espere a que se complete el proceso y reduzca los tiempos de interacción para mejorar la eficiencia.
bs
Define el tamaño del bloque de E/S. La unidad puede ser KiB, Kb, MiB y Mb, y el valor predeterminado es 4 KiB.
size
Define la cantidad de datos procesados por las E/S de prueba. Si no se especifican parámetros, como runtime, la prueba finaliza cuando fio ha procesado toda la cantidad de datos especificada.
El valor puede ser un número con una unidad o porcentaje. Un número con una unidad indica la cantidad de datos de lectura/escritura, por ejemplo size=10G que indica una cantidad de datos de lectura/escritura de 10 GiB. Un porcentaje indica la relación entre la cantidad de datos de lectura/escritura y el tamaño total de los archivos, por ejemplo size=20%, indicando que la cantidad de datos de lectura/escritura ocupa el 20% del espacio total del archivo.
numjobs
Define el número de subprocesos simultáneos.
runtime
Define el tiempo de prueba.
Si no se especifica este parámetro, la prueba finaliza hasta que la cantidad de datos especificada es procesada por el tamaño de bloque definido mediante el parámetro size.
group_reporting
Define el modo de visualización del resultado de la prueba. El valor del parámetro muestra las estadísticas en un solo subproceso en lugar de en todos los trabajos.
filename
Define el nombre del archivo o dispositivo de prueba.
- Si se especifica un archivo, se comprueba el rendimiento del sistema de archivos. Ejemplo: -filename=/opt/fiotest/fiotest.txt
- Si se especifica un nombre de dispositivo, se comprueba el rendimiento del disco sin procesar. Ejemplo: -filename=/dev/vdb
AVISO:
Si la prueba se realiza en un disco ya tiene particiones y sistemas de archivos creados, así como datos en él, parámetro de usuario filename para especificar un archivo para que el sistema de archivos original no se dañe y los datos no se sobrescriben.
name
Define el nombre de la tarea de prueba.