sql >> Base de Datos >  >> RDS >> Database

Uso de Microsoft DiskSpd para probar su subsistema de almacenamiento

Anteriormente, cubrí los aspectos básicos de las métricas y las pruebas del subsistema de almacenamiento en mi artículo Análisis del rendimiento del subsistema de E/S para SQL Server, incluida una introducción a CrystalDiskMark 4.0. CrystalDiskMark se reescribió recientemente para usar Microsoft DiskSpd para sus pruebas, lo que la convierte en una herramienta aún más valiosa para sus esfuerzos iniciales de prueba del subsistema de almacenamiento. DiskSpd proporciona la funcionalidad necesaria para generar una amplia variedad de patrones de solicitud de disco, que pueden ser muy útiles en el diagnóstico y análisis de problemas de rendimiento de E/S con mucha más flexibilidad que las herramientas de referencia anteriores como SQLIO. Es extremadamente útil para las pruebas de subsistemas de almacenamiento sintético cuando desea un mayor nivel de control que el disponible en CrystalDiskMark.

Ahora, profundizaremos un poco más en cómo usar Microsoft DiskSpd para probar su subsistema de almacenamiento sin usar CrystalDiskMark 4.0. Para hacer esto, deberá descargar y descomprimir DiskSpd. Para facilitar las cosas, siempre copio el archivo ejecutable diskspd.exe deseado de la carpeta ejecutable adecuada (amd64fre, armfre o x86fre) a una ruta corta y simple como C:\DiskSpd . En la mayoría de los casos, querrá la versión de 64 bits de DiskSpd de la carpeta amd64fre.

Una vez que tenga disponible el archivo ejecutable diskspd.exe, deberá abrir un símbolo del sistema con derechos administrativos (eligiendo "Ejecutar como administrador") y luego navegar hasta el directorio donde copió el archivo diskspd.exe.

Estos son algunos de los parámetros de la línea de comandos con los que querrá comenzar:

Parámetro Descripción
-b Tamaño de bloque de E/S, especificado como (K/M/G). Por ejemplo –b8K significa un tamaño de bloque de 8 KB, que es relevante para SQL Server
-d Duración de la prueba en segundos. Las pruebas de 30 a 60 segundos suelen ser lo suficientemente largas para obtener resultados válidos
-o E/S sobresalientes (es decir, profundidad de la cola) por destino, por subproceso de trabajo
-t Hilos de trabajo por objetivo de archivo de prueba
-h Desactive el almacenamiento en caché de software a nivel del sistema operativo y el almacenamiento en caché de escritura de hardware, lo cual es una buena idea para probar SQL Server
-r Bandera aleatoria o secuencial. Si se usa –r, se realizan pruebas aleatorias; de lo contrario, se realizan pruebas secuenciales
-w Escribe el porcentaje. Por ejemplo, –w25 significa 25 % de escrituras, 75 % de lecturas
-Z Tamaño del búfer de fuente de escritura de prueba de carga de trabajo, especificado como (K/M/G). Se utiliza para proporcionar datos aleatorios para escrituras, lo cual es una buena idea para las pruebas de SQL Server
-L Capture información de latencia durante la prueba, lo cual es una muy buena idea para probar SQL Server
-c Crea archivo(s) de carga de trabajo del tamaño especificado, especificado como (K/M/G)

Tabla 1:Parámetros básicos de la línea de comandos para DiskSpd

También querrá especificar la ubicación del archivo de prueba y el nombre del archivo para los resultados al final de la línea. Aquí hay una línea de comando de ejemplo:

diskspd –b8K –d30 –o4 –t8 –h –r –w25 –L –Z1G –c20G T:\iotest.dat> DiskSpeedResults.txt

Esta línea de comando de ejemplo ejecutará una prueba de E/S aleatoria de 30 segundos utilizando un archivo de prueba de 20 GB ubicado en la unidad T:, con una proporción de escritura del 25 % y lectura del 75 %, con un tamaño de bloque de 8K. Utilizará ocho subprocesos de trabajo, cada uno con cuatro E/S pendientes y un valor inicial de entropía de escritura de 1 GB. Guardará los resultados de la prueba en un archivo de texto llamado DiskSpeedResults.txt. Este es un conjunto de parámetros bastante bueno para una carga de trabajo OLTP de SQL Server.

Figura 1:línea de comando de ejemplo para DiskSpd

La ejecución de la prueba comienza con un tiempo de calentamiento predeterminado de cinco segundos (antes de que realmente comience cualquier medición), y luego la prueba real se ejecutará durante la duración especificada en segundos con un tiempo de enfriamiento predeterminado de cero segundos. Cuando finalice la prueba, DiskSpd proporcionará una descripción de la prueba y los resultados detallados. De manera predeterminada, será un resumen de texto simple en un archivo de texto con el nombre de archivo que especificó, que estará en el mismo directorio que el ejecutable diskspd.

Estos son los resultados de esta ejecución de prueba en particular en mi estación de trabajo.

Figura 2:Ejemplo de resultados de prueba de DiskSpd

La primera sección de los resultados le brinda la línea de comando exacta que se usó para la prueba, luego especifica todos los parámetros de entrada que se usaron para la ejecución de la prueba (que incluyen los valores predeterminados que pueden no haberse especificado en la línea de comando real). ). A continuación, los resultados de la prueba se muestran comenzando con el tiempo real de la prueba, el número de subprocesos y el número de procesadores lógicos. La sección de la CPU muestra la utilización de la CPU para cada procesador lógico, incluido el tiempo del kernel y del usuario, para el intervalo de prueba.

La parte más interesante de los resultados de la prueba viene a continuación. Obtiene el total de bytes, el total de E/S, MB/segundo, E/S por segundo (IOPS) y su latencia promedio en milisegundos. Estos resultados se desglosan para cada subproceso (cuatro en nuestro caso), con secciones separadas en los resultados para E/S total, E/S de lectura y E/S de escritura. Los resultados para cada subproceso deberían ser muy similares en la mayoría de los casos. En lugar de centrarme inicialmente en los valores absolutos de cada medida, me gusta comparar los valores cuando ejecuto la misma prueba en diferentes unidades lógicas (después de cambiar la ubicación del archivo de prueba en la línea de comandos), lo que le permite comparar el rendimiento para cada unidad lógica.

La última sección de los resultados de la prueba es aún más interesante. Muestra un análisis percentil de la distribución de los resultados de la prueba de latencia desde el valor mínimo en milisegundos hasta el valor máximo en milisegundos, desglosado por lecturas, escrituras y latencia total. Los "nueves" en la columna de %-ile se refieren al número de nueves, donde 3-nueves significa 99.9, 4-nueves significa 99.99, etc. La razón por la cual los valores para las filas de percentiles más altos son iguales es porque esta prueba un número relativamente bajo de operaciones totales. Si desea caracterizar con precisión los percentiles más altos, deberá ejecutar una prueba de mayor duración que genere una mayor cantidad de operaciones de E/S separadas.

Lo que desea buscar en estos resultados es el punto en el que los valores dan un gran salto. Por ejemplo, en esta prueba podemos ver que el 99 % de las lecturas tenían una latencia de 1,832 milisegundos o menos.

Figura 3:Distribución de resultados de latencia

Como puede ver, ejecutar DiskSpd es bastante simple una vez que comprende qué significan los parámetros básicos y cómo se usan. No solo puede ejecutar DiskSpd desde una línea de comando antigua, sino que también puede ejecutarlo usando PowerShell. DiskSpd también le brinda mucha más información detallada que la que obtiene de SQLIO. La parte más complicada de usar DiskSpd es analizar e interpretar los resultados, algo que trataré en un artículo futuro.