¿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
- Uso de PowerShell para probar el rendimiento del disco
- Análisis del rendimiento del disco a través del Monitor de rendimiento
- Prueba de la velocidad del disco con CrystalDiskMark
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 secuencialC:\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.
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.
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.
- 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.
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 discosGet-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.
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.
- 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».
- % 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.
- 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».
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.
- 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.
- 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.
| Tipo de disco | Seq Read (MB/s) | Seq Write (MB/s) | 4KiB Q32T1 Read (MB/s) | 4KiB Q32T1 Write (MB/s) |
|---|---|---|---|---|
| HDD (7200 RPM) | 100-200 | 100-200 | ~1 | ~1 |
| SSD (SATA) | 500-550 | 450-500 | 250-350 | 200-300 |
| SSD (NVMe PCIe 3.0) | 2000-3500 | 1500-3000 | 400-600 | 300-500 |
| SSD (NVMe PCIe 4.0) | 5000-7000 | 4000-6000 | 600-800 | 500-700 |