Una de las principales métricas, que permite estimar el desempeño del sistema de almacenamiento existente o diseñado es IOPS (Operaciones de entrada / salida por segundo). En términos simples, IOPS es el número de operaciones de lectura / escritura con un almacenamiento, disco o sistema de archivos por unidad de tiempo. Cuanto mayor sea este número, mayor será el rendimiento de su almacenamiento (francamente, el valor de IOPS debe considerarse junto con otras características de rendimiento del almacenamiento, como la latencia, el rendimiento, etc.).

En este artículo, veremos varias formas de medir el rendimiento del almacenamiento (IOPS, latencia, rendimiento) en Windows (puede usar este manual para un disco duro local, SSD, carpeta de red SMB, volumen CSV o LUN en SAN / iSCSI almacenamiento).

Captura de E / S de almacenamiento mediante contadores de rendimiento de disco en Windows

Puede estimar aproximadamente la carga de trabajo de E / S de almacenamiento actual en Windows utilizando los contadores de rendimiento de disco integrados de Monitor de rendimiento. Para recopilar estos datos de contadores:

  1. Inicie el Perfmon;
  2. Crear un nuevo Conjunto de recopilador de datos y seleccione Crear manualmente;
  3. Seleccione la casilla de verificación Crear registros de datos -> Contador de rendimiento;
  4. Ahora, en las propiedades del nuevo conjunto de recopilación de datos, agregue los siguientes contadores de rendimiento para el Disco físico objeto (puede seleccionar los contadores para un disco específico o para todos los discos locales disponibles):
    • Promedio Sec. De disco / Transferencia
    • Promedio Longitud de la cola de disco
    • Promedio de bytes de disco / transferencia
    • Bytes de disco / seg.
    • Transferencias de disco / seg
    • IO dividido / seg
  5. Puede cambiar otras propiedades de recopilación de datos. De forma predeterminada, los valores de los contadores se recopilan cada 15 segundos.

    Para mostrar el rendimiento del disco en tiempo real, debe agregar los contadores Perfmon especificados en el Herramientas de supervisión -> Monitor de rendimiento sección.

    perfmon: agregar contadores de rendimiento de disco físico

  6. Queda por comenzar a recopilar datos de contadores de rendimiento (seleccione Comienzo) y esperar la recopilación de información suficiente para el análisis. Después de eso, haga clic derecho en su conjunto de recopiladores de datos y seleccione Detener;recopilar datos de rendimiento de couters
  7. Para ver los datos de rendimiento recopilados, vaya al Perfmon -> Informes -> Definido por el usuario -> Data_Disk_IO -> check_the_last_set. De forma predeterminada, los datos del disco se muestran como gráficos;
  8. Use Ctrl + G para cambiar al Informe modo.datos de rendimiento de almacenamiento recopilados por disk-perfmon

¿Cómo entender los contadores de rendimiento del almacenamiento recopilados por Perfmon? Para un análisis rápido del rendimiento del disco / almacenamiento, debe observar los valores de al menos los siguientes 5 contadores.

Al analizar los datos del contador, es recomendable que comprenda la configuración actual de los discos físicos (almacenamiento) (si se utiliza RAID o Stripe, el número y los tipos de discos, el tamaño de la caché, etc.).

  • Segundos de disco / Transferencia - el tiempo necesario para realizar una operación de escritura / lectura con el dispositivo de almacenamiento o disco (latencia de disco). Si el retraso es superior a 25 ms (0,25), la matriz de discos no puede manejar la operación de E / S a tiempo. Para servidores de alta carga, el valor de latencia del disco no debe exceder los 10 ms (0,1);
  • Transferencias de disco / seg - (IOPS). El número de operaciones de lectura / escritura por segundo. Este es el indicador principal de la intensidad de acceso al disco (los valores de IOPS aproximados para diferentes tipos de disco se enumeran al final del artículo);
  • Bytes de disco / seg. - Rendimiento total del disco (lectura + escritura) por segundo. Los valores máximos dependen del tipo de disco (150-250 Mb / s - para un disco HDD normal y 500-10000 para SSD);
  • IO dividido / seg - un indicador de fragmentación de disco cuando el sistema operativo tiene que dividir una operación de E / S en varias solicitudes de disco. También puede indicar que la aplicación solicita bloques de datos demasiado grandes que no se pueden transferir en una sola operación;
  • Promedio Longitud de la cola de disco - número medio de solicitudes de lectura / escritura que se pusieron en cola. Para un solo disco, la longitud de la cola no debe exceder 2. Para una matriz RAID de 4 discos, el valor umbral de la longitud de la cola de disco es 8.

DiskSpd: prueba del rendimiento del disco y las IOPS en Windows

Microsoft recomienda utilizar el DiskSpd (https://aka.ms/diskspd) utilidad para generar una carga en un sistema de disco (almacenamiento) y medir su rendimiento. Esta es una herramienta de interfaz de línea de comandos que puede realizar operaciones de E / S con el destino de unidad especificado en varios subprocesos. A menudo uso DiskSpd para medir el rendimiento del almacenamiento y obtener la velocidad máxima de lectura / escritura y las IOPS disponibles del servidor específico (por supuesto, también puede medir el rendimiento del almacenamiento, en este caso, se usará diskspd para generar la carga de almacenamiento ).

DiskSpd no requiere instalación, simplemente descargue y extraiga el archivo en un disco local. Para sistemas x64 bits, use la versión de diskspd.exe del amd64fre directorio.

Utilizo el siguiente comando para probar el rendimiento del disco:

diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:diskpsdtmp.dat > DiskSpeedResults.txt

Importante. Cuando se usa diskspd.exe, se genera una carga considerable en los discos y la CPU del sistema probado. Para eliminar la degradación del rendimiento para los usuarios, no se recomienda iniciarlo en sistemas productivos en las horas pico.

Herramienta DiskSpd para generar carga de disco

  • -c50G - tamaño de archivo de 50 GB (es mejor utilizar un tamaño de archivo grande para que no quepa en la memoria caché del controlador de almacenamiento);
  • -d300 - duración de la prueba en segundos;
  • -r - operaciones de lectura / escritura aleatorias (si necesita probar el acceso secuencial, use –s);
  • -t8 - Número de hilos;
  • -w40 - proporción de operaciones de escritura a lectura 40%/60%;
  • -o32 - longitud de la cola;
  • -b64K - tamaño de bloque;
  • -Sh - no use caché;
  • -L - medir la latencia;
  • E:diskpsdtmp.dat - ruta del archivo de prueba.

Una vez finalizada la prueba de esfuerzo, los valores de rendimiento de almacenamiento promedio se pueden obtener de las tablas de salida.

En mi prueba, se obtuvieron los siguientes datos de rendimiento (verifique la tabla de E / S totales):

  • MiB / s - 241 (alrededor de 252 Mb / s, nada mal);
  • IOPS - 3866 (¡perfectamente bien!);
  • Latencia promedio: 66.206 ms (¡una latencia bastante grande!).

diskspd: obtiene valores de latencia y iops promedio del disco

Puede obtener valores individuales para operaciones de lectura (sección Leer E / S) o de escritura (sección Escribir E / S).

Después de haber probado varios discos o LUN de almacenamiento con diskspd, puede compararlos o seleccionar una matriz con el rendimiento deseado para sus tareas.

¿Cómo medir las IOPS de almacenamiento, el rendimiento y la latencia con PowerShell?

He encontrado un PowerShell texto (por Mikael Nystrom, Microsoft MVP), que es esencialmente un complemento de SQLIO.exe utilidad (un conjunto de pruebas de rendimiento de almacenamiento de archivos).

Nota. En diciembre de 2015, Microsoft anunció el fin del soporte para esta herramienta y el reemplazo de SQLIO por una herramienta más universal. Diskspdy eliminó los archivos de distribución SQLIO de su sitio web. Por lo tanto, tendrá que buscar sqlio.exe usted mismo o descargarlo de nuestro sitio web (se encuentra en el archivo con el script de PowerShell).

Entonces, descargue el archivo que contiene 2 archivos: SQLIO.exe y DiskPerformance.ps1 (disk_perf_iops.ZIP - 74 KB) y extráigalo a cualquier carpeta.

secuencia de comandos de powershell de iops de rendimiento de disco

Un ejemplo de ejecución de un script de PowerShell para estimar el rendimiento del disco y las IOPS:

.DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView

DiskPerformance.ps1

Consideremos los argumentos del script:

  • –TestFileName test.dat - el nombre del archivo creado por la herramienta FSUTIL;
  • –TestFileSizeInGB 1 - el tamaño del archivo de prueba. Los valores posibles son 1,5, 10, 50, 100, 500, 1000 GB. El tamaño del archivo debe ser mayor que el tamaño de la caché del sistema de almacenamiento. De lo contrario, las IOPS se medirán para los datos de la caché, en lugar del disco;
  • -TestFilepath C:Temp - aquí especifica el disco para medir el rendimiento y la carpeta en el disco, en la que se creará un archivo de prueba. También puede especificar una ruta UNC a la carpeta compartida de red (SMB);
  • -TestMode Get-LargeIO - hay dos opciones de medición de entrada-salida. Get-SmallIO permite medir IOPS, y Get-LargeIO mide la tasa de transferencia de datos. La diferencia entre los argumentos SmallIO y LargeIO está en el tamaño de bloque de 8 KB y 512 KB mientras se mide la tasa y el tipo de acceso, aleatorio o secuencial, en consecuencia;
  • -FastMode True - en el modo rápido, cada prueba dura 10 segundos; de lo contrario, tarda 60 segundos;
  • -RemoveTestFile True - eliminar el archivo de prueba una vez finalizada la prueba;
  • -OutputFormat Out-GridView - los resultados de la prueba se pueden mostrar en la consola de PowerShell (Tabla de formato) o en una ventana de gráfico separada (Fuera de Gridview).

prueba iops

En nuestro caso (se utiliza un disco virtual vmdk en el almacén de datos VMFS en HP MSA 2040 conectado a través de SAN), la matriz de discos mostró el valor IOPS promedio de aproximadamente 15.000 y la tasa de transmisión de datos (rendimiento) sobre 5 Gbit / s.

En la siguiente tabla, se muestran los valores de IOPS aproximados para diferentes tipos de disco:

Tipo IOPS
SSD (SLC) 6000
SSD (MLC) 1000
15K RPM 175-200
10K RPM 125-150
7.2K RPM 50-75
Raid5 de 6 unidades con 10K RPM 1000

Encontré algunas recomendaciones para el rendimiento del disco en IOPS para algunos servicios populares de Microsoft:

  1. Microsoft Exchange 2010 con 5,000 usuarios, cada uno de ellos recibe 75 y envía 30 correos electrónicos por día, requerirá al menos 3,750 IOPS;
  2. Servidor Microsoft SQL 2008 con 3.500 transacciones SQL por segundo (TPS) requiere 28.000 IOPS;
  3. Un servidor de aplicaciones común de Windows para 10-100 usuarios requiere 10-40 IOPS.

Recomendado para ti