¿Cómo comprobar la velocidad del disco duro en un VDS Windows?

El rendimiento del disco duro (HDD) o la unidad de estado sólido (SSD) en su servidor dedicado virtual (VDS) Windows es crucial para la velocidad y la capacidad de respuesta general de su servidor. Un disco lento puede provocar retrasos en el funcionamiento de aplicaciones, bases de datos y sitios web. En este artículo, examinaremos en detalle varios métodos y herramientas que le permiten verificar la velocidad del disco en un VDS Windows, para que pueda identificar posibles cuellos de botella y tomar medidas para solucionarlos.

Índice

Comprobación de la velocidad del disco con Diskspd

Diskspd es una potente utilidad de línea de comandos desarrollada por Microsoft para pruebas exhaustivas del rendimiento del disco. Permite realizar diversas pruebas, incluida la lectura y escritura secuencial, la lectura y escritura aleatoria y mucho más. Diskspd es especialmente útil para identificar problemas específicos de rendimiento y optimizar la configuración del disco.

Ejemplo 1: Prueba simple de escritura secuencial

Para empezar, debe descargar Diskspd del sitio web de Microsoft (normalmente se proporciona como parte del kit de evaluación e implementación de Windows (ADK)). Después de la descarga, descomprima el archivo en una ubicación conveniente, por ejemplo, `C:\Diskspd`.

C:\Diskspd\diskspd.exe -b4k -t1 -o1 -w100 -d30 -c100m C:\testfile.dat
Analicemos los parámetros del comando:

  • `-b4k`: Especifica un tamaño de bloque de 4 KB.
  • `-t1`: Especifica el número de hilos igual a 1.
  • `-o1`: Especifica el número de operaciones de E/S pendientes igual a 1.
  • `-w100`: Especifica que el 100% de las operaciones son de escritura.
  • `-d30`: Especifica una duración de la prueba de 30 segundos.
  • `-c100m`: Especifica un tamaño de archivo de prueba de 100 MB.
  • `C:\testfile.dat`: Especifica el nombre del archivo que se utilizará para la prueba. Asegúrese de que el usuario con el que está ejecutando el comando tenga derechos de escritura en el directorio especificado.
Este comando realizará una prueba de escritura secuencial con bloques de 4 KB en el archivo `C:\testfile.dat` durante 30 segundos. Los resultados se mostrarán en la consola, mostrando la velocidad de escritura en MB/s y el número de operaciones de entrada/salida por segundo (IOPS).

Ejemplo 2: Prueba de lectura y escritura aleatoria

C:\Diskspd\diskspd.exe -b4k -t4 -o32 -r -w50 -d60 -c100m C:\testfile.dat
Parámetros de este comando:

  • `-b4k`: Tamaño de bloque de 4 KB.
  • `-t4`: 4 hilos.
  • `-o32`: 32 operaciones de E/S pendientes.
  • `-r`: Realiza operaciones de lectura y escritura aleatorias.
  • `-w50`: Relación de operaciones de escritura del 50% (el 50% restante es lectura).
  • `-d60`: Duración de la prueba de 60 segundos.
  • `-c100m`: Tamaño del archivo de prueba de 100 MB.
Este comando realizará una prueba de lectura y escritura aleatoria con bloques de 4 KB, utilizando 4 hilos y 32 operaciones de E/S pendientes en el archivo `C:\testfile.dat` durante 60 segundos. Los resultados mostrarán el rendimiento tanto de lectura como de escritura, lo que es útil para evaluar el rendimiento del disco en cargas mixtas.

Ejemplo 3: Uso de varios archivos para emular la carga

A veces es necesario emular la carga cuando varios procesos acceden al disco simultáneamente. Diskspd permite hacer esto especificando varios archivos para la prueba.

C:\Diskspd\diskspd.exe -b8k -t8 -o16 -r -w25 -d120 -c50m C:\testfile1.dat C:\testfile2.dat C:\testfile3.dat
En este ejemplo, se utilizan 3 archivos (`C:\testfile1.dat`, `C:\testfile2.dat`, `C:\testfile3.dat`). Parámetros:

  • `-b8k`: Tamaño de bloque de 8 KB.
  • `-t8`: 8 hilos.
  • `-o16`: 16 operaciones de E/S pendientes.
  • `-r`: Operaciones aleatorias.
  • `-w25`: 25% de operaciones de escritura.
  • `-d120`: Duración de la prueba de 120 segundos.
  • `-c50m`: Tamaño de cada archivo de prueba de 50 MB.
Diskspd distribuirá la carga entre los archivos especificados, lo que permite evaluar de manera más realista el rendimiento del disco en condiciones de competencia por los recursos.

Interpretación de los resultados de Diskspd

Una vez finalizada la prueba, Diskspd muestra estadísticas detalladas que incluyen:

  • Throughput (MB/s): Muestra la velocidad de transferencia de datos en megabytes por segundo. Cuanto mayor sea el valor, mejor será el rendimiento.
  • IOPS (Operations Per Second): Muestra el número de operaciones de entrada/salida realizadas por segundo. Un IOPS alto indica un buen rendimiento al trabajar con archivos pequeños y acceso aleatorio.
  • Latency (ms): Muestra la latencia promedio al realizar operaciones de entrada/salida. Una latencia baja es crítica para las aplicaciones que requieren una respuesta rápida.
Al analizar estos indicadores, se pueden sacar conclusiones sobre el rendimiento del disco en varios escenarios. Por ejemplo, un bajo throughput en la escritura secuencial puede indicar problemas con el disco en sí o con el controlador del disco. Un IOPS bajo en el acceso aleatorio puede indicar la necesidad de optimizar la configuración del disco o utilizar un almacenamiento más rápido (por ejemplo, SSD en lugar de HDD).

Consejo experto: Para una evaluación más precisa del rendimiento, se recomienda realizar varias pruebas con diferentes parámetros y promediar los resultados. También es importante tener en cuenta la carga en el servidor en el momento de la prueba para excluir la influencia de otros procesos en los resultados.

Uso de PowerShell para probar el rendimiento del disco

PowerShell proporciona herramientas convenientes para monitorear y probar el rendimiento del disco en un VDS Windows. Con la ayuda de cmdlets integrados, puede obtener información sobre la velocidad de lectura/escritura, IOPS y latencias, así como crear sus propios scripts para automatizar las pruebas.

Ejemplo 1: Obtención de información básica sobre los discos

Get-WmiObject Win32_DiskDrive | Select-Object Model, InterfaceType, MediaType
Este comando obtiene información sobre los modelos de disco, el tipo de interfaz (SATA, SAS, NVMe) y el tipo de medio (HDD, SSD). Esto es útil para determinar las características de los discos instalados.

La salida esperada sería algo como esto:

Model                                       InterfaceType MediaType
-----                                       ------------- ---------
Msft Virtual Disk                            IDE           Fixed hard disk media
En este ejemplo, se puede ver que se está utilizando un disco virtual (Msft Virtual Disk) con una interfaz IDE y un tipo de medio «Fixed hard disk media».

Ejemplo 2: Medición de la velocidad de lectura y escritura con Test-Path

Este método utiliza el cmdlet `Test-Path` para crear, escribir y leer un pequeño archivo, midiendo el tiempo dedicado a estas operaciones.

$FilePath = "C:\testfile_powershell.dat"
$FileSize = 10MB
$Data = New-Object byte[] $FileSize
$Random = New-Object Random
$Random.NextBytes($Data)

# Запись
$sw = [Diagnostics.Stopwatch]::StartNew()
[IO.File]::WriteAllBytes($FilePath, $Data)
$sw.Stop()
$WriteTime = $sw.ElapsedMilliseconds
$WriteSpeed = [Math]::Round(($FileSize / $WriteTime) * 100, 2)

# Чтение
$sw = [Diagnostics.Stopwatch]::StartNew()
$ReadData = [IO.File]::ReadAllBytes($FilePath)
$sw.Stop()
$ReadTime = $sw.ElapsedMilliseconds
$ReadSpeed = [Math]::Round(($FileSize / $ReadTime) * 100, 2)

Remove-Item $FilePath

Write-Host "Скорость записи: $($WriteSpeed) KB/s"
Write-Host "Скорость чтения: $($ReadSpeed) KB/s"
$FilePath = «C:\testfile_powershell.dat» $FileSize = 10MB $Data = New-Object byte[] $FileSize $Random = New-Object Random $Random.NextBytes($Data) # Escritura $sw = [Diagnostics.Stopwatch]::StartNew() [IO.File]::WriteAllBytes($FilePath, $Data) $sw.Stop() $WriteTime = $sw.ElapsedMilliseconds $WriteSpeed = [Math]::Round(($FileSize / $WriteTime) * 100, 2) # Lectura $sw = [Diagnostics.Stopwatch]::StartNew() $ReadData = [IO.File]::ReadAllBytes($FilePath) $sw.Stop() $ReadTime = $sw.ElapsedMilliseconds $ReadSpeed = [Math]::Round(($FileSize / $ReadTime) * 100, 2) Remove-Item $FilePath Write-Host «Velocidad de escritura: $($WriteSpeed) KB/s» Write-Host «Velocidad de lectura: $($ReadSpeed) KB/s»

Este script crea un archivo de 10 MB, lo rellena con datos aleatorios, lo escribe en el disco, lo lee de nuevo, mide el tiempo de escritura y lectura, calcula las velocidades y elimina el archivo. Los resultados se muestran en la consola.

Ejemplo 3: Uso de contadores de rendimiento para monitorear IOPS y latencias

PowerShell permite acceder a los contadores de rendimiento (Performance Counters), que proporcionan información sobre varios aspectos del funcionamiento del sistema, incluido el subsistema de disco.

$Disk = Get-WmiObject Win32_PerfFormattedData_PerfDisk_PhysicalDisk | Where-Object {$_.Name -ne "_Total"}

foreach ($d in $Disk) {
  Write-Host "Disco: $($d.Name)"
  Write-Host "  % Disk Time: $($d.PercentDiskTime)"
  Write-Host "  Avg. Disk sec/Read: $($d.AvgDisksecRead)"
  Write-Host "  Avg. Disk sec/Write: $($d.AvgDisksecWrite)"
  Write-Host "  Disk Reads/sec: $($d.DiskReadPerSec)"
  Write-Host "  Disk Writes/sec: $($d.DiskWritePerSec)"
}
$Disk = Get-WmiObject Win32_PerfFormattedData_PerfDisk_PhysicalDisk | Where-Object {$_.Name -ne «_Total»} foreach ($d in $Disk) { Write-Host «Disco: $($d.Name)» Write-Host » % Disk Time: $($d.PercentDiskTime)» Write-Host » Avg. Disk sec/Read: $($d.AvgDisksecRead)» Write-Host » Avg. Disk sec/Write: $($d.AvgDisksecWrite)» Write-Host » Disk Reads/sec: $($d.DiskReadPerSec)» Write-Host » Disk Writes/sec: $($d.DiskWritePerSec)» }

Este script obtiene datos sobre los discos físicos, excluyendo el objeto sumario («_Total»). Para cada disco, muestra el porcentaje de tiempo durante el cual el disco está ocupado, el tiempo promedio de lectura y escritura del sector, y el número de operaciones de lectura y escritura por segundo (IOPS). Tenga en cuenta que los valores son instantáneas. Para obtener datos más precisos, es necesario recopilar datos durante un período de tiempo determinado y calcular los valores promedio.

Interpretación de los resultados de PowerShell

  • Velocidad de lectura/escritura (KB/s): Los valores más altos indican una transferencia de datos más rápida. Una velocidad baja puede indicar un problema con el disco o el controlador.
  • % Disk Time: Un porcentaje alto (> 80%) puede indicar que el disco es un cuello de botella en el sistema.
  • Avg. Disk sec/Read y Avg. Disk sec/Write: Los valores más bajos indican un procesamiento más rápido de las operaciones de E/S. Los valores superiores a 0.01 segundos (10 ms) pueden indicar problemas de rendimiento.
  • Disk Reads/sec y Disk Writes/sec (IOPS): Los valores más altos indican una mayor cantidad de operaciones de entrada/salida que el disco puede procesar por segundo. Los valores típicos para HDD son 50-150 IOPS, para SSD: miles o decenas de miles de IOPS.

Consejo experto: PowerShell ofrece amplias capacidades para automatizar las pruebas de rendimiento del disco. Puede crear scripts que se ejecutarán según un cronograma y recopilarán estadísticas, lo que le permitirá realizar un seguimiento de los cambios en el rendimiento a lo largo del tiempo e identificar posibles problemas en las primeras etapas.

Análisis del rendimiento del disco a través del Monitor de rendimiento

El Monitor de rendimiento de Windows (Perfmon) es una herramienta gráfica que le permite realizar un seguimiento de varios aspectos del funcionamiento del sistema, incluido el rendimiento del disco. Proporciona un amplio conjunto de contadores que se pueden utilizar para monitorear la velocidad de lectura/escritura, IOPS, latencias y otros parámetros. El Monitor de rendimiento es especialmente útil para el análisis visual del rendimiento del disco en tiempo real y para identificar problemas relacionados con la carga.

Ejemplo 1: Inicio del Monitor de rendimiento y adición de contadores

  • Abra el Monitor de rendimiento escribiendo `perfmon` en la barra de búsqueda de Windows y presionando Entrar.
  • En el panel izquierdo, expanda «Herramientas de supervisión» y seleccione «Monitor de rendimiento».
  • Haga clic en el icono «+» (Agregar) en la barra de herramientas para agregar contadores.
Ejemplo 2: Adición de contadores para la supervisión del disco

  • En la ventana «Agregar contadores», seleccione el objeto «PhysicalDisk» (para discos físicos) o «LogicalDisk» (para discos lógicos).
  • Seleccione los contadores necesarios, por ejemplo:
    • «% Disk Time»: El porcentaje de tiempo durante el cual el disco está ocupado procesando solicitudes.
    • «Avg. Disk sec/Read»: El tiempo promedio que tarda el disco en leer datos (en segundos).
    • «Avg. Disk sec/Write»: El tiempo promedio que tarda el disco en escribir datos (en segundos).
    • «Disk Reads/sec»: El número de operaciones de lectura realizadas por el disco por segundo (IOPS).
    • «Disk Writes/sec»: El número de operaciones de escritura realizadas por el disco por segundo (IOPS).
    • «Avg. Disk Queue Length»: La longitud promedio de la cola de solicitudes al disco.
  • Seleccione una instancia de disco específica (por ejemplo, «0 C:» para el disco C:) o «_Total» para las estadísticas resumidas de todos los discos.
  • Haga clic en «Agregar», luego en «Aceptar».
Ejemplo 3: Análisis de gráficos del Monitor de rendimiento

Después de agregar los contadores, el Monitor de rendimiento comenzará a mostrar gráficos que muestran sus valores en tiempo real.

  • % Disk Time: Si el gráfico está constantemente al 80% o más, esto puede indicar que el disco está sobrecargado y es un cuello de botella.
  • Avg. Disk sec/Read y Avg. Disk sec/Write: Los valores altos (superiores a 0.01 segundos) indican un procesamiento lento de las operaciones de E/S.
  • Disk Reads/sec y Disk Writes/sec: Le permiten evaluar IOPS. Compare los valores obtenidos con los valores típicos para su tipo de disco (HDD o SSD).
  • Avg. Disk Queue Length: Una cola larga (> 2) puede indicar que el disco no puede procesar las solicitudes.
Ejemplo 4: Creación de un conjunto de recopiladores de datos para el monitoreo a largo plazo

Para analizar el rendimiento del disco a largo plazo, puede crear un conjunto de recopiladores de datos (DCS) que recopilará automáticamente datos de rendimiento y los guardará en un archivo.

  • En el panel izquierdo del Monitor de rendimiento, expanda «Conjuntos de recopiladores de datos» y seleccione «Definido por el usuario».
  • Haga clic con el botón derecho y seleccione «Nuevo» -> «Conjunto de recopiladores de datos».
  • Ingrese un nombre para el DCS (por ejemplo, «DiskPerformance») y seleccione «Crear manualmente (Avanzado)».
  • Seleccione «Crear registros de datos» y marque la casilla «Contador de rendimiento».
  • Haga clic en «Agregar» y agregue los contadores necesarios (como se describe anteriormente).
  • Especifique el intervalo de recopilación de datos (por ejemplo, 1 segundo).
  • Especifique la ubicación para guardar los archivos de registro.
  • Inicie el DCS haciendo clic con el botón derecho en su nombre y seleccionando «Iniciar».
Después de la recopilación de datos, puede abrir los archivos de registro en el Monitor de rendimiento y analizar los gráficos para identificar patrones y anomalías en el rendimiento del disco.

Interpretación de los resultados del Monitor de rendimiento

El Monitor de rendimiento proporciona una representación visual de los datos de rendimiento del disco, lo que facilita la identificación de problemas. Es importante recordar que los valores de los contadores pueden cambiar según la carga del sistema, por lo que para obtener resultados más precisos, se recomienda realizar el monitoreo durante un período de tiempo prolongado y analizar los valores promedio.

Consejo experto: El Monitor de rendimiento le permite crear informes que puede utilizar para documentar el rendimiento del disco y para comparar el rendimiento antes y después de realizar cambios en la configuración del sistema.

Prueba de la velocidad del disco con CrystalDiskMark

CrystalDiskMark es una popular utilidad gratuita para probar el rendimiento de discos duros y unidades de estado sólido (SSD) en Windows. Proporciona una interfaz simple y conveniente para medir la velocidad de lectura/escritura secuencial y aleatoria, así como IOPS. CrystalDiskMark se utiliza a menudo para comparar el rendimiento de varios discos y para evaluar el impacto de varias configuraciones en el rendimiento.

Ejemplo 1: Inicio de CrystalDiskMark y selección de parámetros de prueba

  • Descargue CrystalDiskMark del sitio web oficial e instale el programa.
  • Ejecute CrystalDiskMark.
  • En la ventana principal, seleccione:
    • Number of Runs: El número de repeticiones de la prueba (generalmente 3-5).
    • Test Size: El tamaño del archivo utilizado para la prueba (por ejemplo, 1 GiB).
    • Drive: El disco que desea probar.
Ejemplo 2: Ejecución de pruebas de CrystalDiskMark

CrystalDiskMark ofrece varios tipos de pruebas:

  • Seq Q32T1: Lectura/escritura secuencial con una profundidad de cola de 32 y 1 hilo. Emula una carga cuando se envían varias solicitudes al disco simultáneamente.
  • 4KiB Q8T8: Lectura/escritura aleatoria de bloques de 4KiB con una profundidad de cola de 8 y 8 hilos. Emula una carga cuando varias aplicaciones acceden simultáneamente a archivos pequeños.
  • Seq: Lectura/escritura secuencial simple.
  • 4KiB Q1T1: Lectura/escritura aleatoria de bloques de 4KiB con una profundidad de cola de 1 y 1 hilo. Emula una carga cuando una sola aplicación accede a archivos pequeños.
Haga clic en el botón «All» para ejecutar todas las pruebas.

Ejemplo 3: Interpretación de los resultados de CrystalDiskMark

Después de completar las pruebas, CrystalDiskMark mostrará los resultados en forma de tabla.

  • Seq Read/Write: Velocidad de lectura/escritura secuencial en MB/s. Los valores altos son importantes para trabajar con archivos grandes (por ejemplo, video, archivos).
  • 4KiB Q32T1 Read/Write: Velocidad de lectura/escritura aleatoria de bloques de 4KiB con una gran profundidad de cola. Importante para el rendimiento de bases de datos y máquinas virtuales.
  • 4KiB Q1T1 Read/Write: Velocidad de lectura/escritura aleatoria de bloques de 4KiB con una pequeña profundidad de cola. Importante para la capacidad de respuesta del sistema y el inicio rápido de aplicaciones.
Ejemplo 4: Comparación de los resultados de CrystalDiskMark con valores típicos

Para evaluar el rendimiento de su disco, compare los resultados de CrystalDiskMark con los valores típicos para varios tipos de discos:

Tipo de discoSeq Read (MB/s)Seq Write (MB/s)4KiB Q32T1 Read (MB/s)4KiB Q32T1 Write (MB/s)
HDD (7200 RPM)100-200100-200~1~1
SSD (SATA)500-550450-500250-350200-300
SSD (NVMe PCIe 3.0)2000-35001500-3000400-600300-500
SSD (NVMe PCIe 4.0)5000-70004000-6000600-800500-700
Estos valores son aproximados y pueden variar según el modelo de disco específico y la configuración del sistema.

Interpretación de los resultados de CrystalDiskMark

CrystalDiskMark proporciona una forma rápida y sencilla de evaluar el rendimiento del disco. Los valores altos de velocidad de lectura/escritura secuencial son importantes para trabajar con archivos grandes, y los valores altos de velocidad de lectura/escritura aleatoria son importantes para la capacidad de respuesta general del sistema y el inicio rápido de aplicaciones. Si los resultados de CrystalDiskMark son significativamente más bajos de lo esperado, esto puede indicar un problema con el disco, el controlador del disco o los controladores.

Consejo experto: Al probar SSD, asegúrese de que la función TRIM esté habilitada para garantizar un rendimiento óptimo. TRIM permite que el sistema operativo informe a la SSD qué bloques de datos ya no se utilizan y se pueden limpiar, lo que evita la degradación del rendimiento con el tiempo. Para verificar si TRIM está habilitado, abra el símbolo del sistema como administrador y ejecute el comando `fsutil behavior query DisableDeleteNotify`. Si el resultado es «0», entonces TRIM está habilitado. Si el resultado es «1», entonces TRIM está deshabilitado y debe habilitarse con el comando `fsutil behavior set DisableDeleteNotify 0`.