Как проверить скорость жесткого диска на VDS Windows?
Производительность жесткого диска (HDD) или твердотельного накопителя (SSD) на вашем виртуальном выделенном сервере (VDS) Windows имеет решающее значение для общей скорости и отзывчивости вашего сервера. Медленный диск может привести к задержкам в работе приложений, баз данных и веб-сайтов. В этой статье мы подробно рассмотрим различные методы и инструменты, позволяющие проверить скорость диска на VDS Windows, чтобы вы могли выявить потенциальные узкие места и принять меры по их устранению.
Содержание
- Проверка скорости диска с помощью Diskspd
- Использование PowerShell для тестирования производительности диска
- Анализ производительности диска через Performance Monitor
- Тестирование скорости диска с помощью CrystalDiskMark
Проверка скорости диска с помощью Diskspd
Diskspd – это мощная утилита командной строки, разработанная Microsoft для всестороннего тестирования производительности диска. Она позволяет проводить различные тесты, включая последовательное чтение и запись, случайное чтение и запись, и многое другое. Diskspd особенно полезна для выявления конкретных проблем с производительностью и оптимизации конфигурации диска. Пример 1: Простой тест последовательной записиC:\Diskspd\diskspd.exe -b4k -t1 -o1 -w100 -d30 -c100m C:\testfile.dat
Разберем параметры команды:
- `-b4k`: Указывает размер блока 4KB.
- `-t1`: Указывает количество потоков равное 1.
- `-o1`: Указывает количество ожидающих операций ввода/вывода равное 1.
- `-w100`: Указывает, что 100% операций – это запись.
- `-d30`: Указывает длительность теста 30 секунд.
- `-c100m`: Указывает размер тестового файла 100MB.
- `C:\testfile.dat`: Указывает имя файла, который будет использоваться для тестирования. Убедитесь, что у пользователя, под которым вы запускаете команду, есть права на запись в указанную директорию.
C:\Diskspd\diskspd.exe -b4k -t4 -o32 -r -w50 -d60 -c100m C:\testfile.dat
Параметры этой команды:
- `-b4k`: Размер блока 4KB.
- `-t4`: 4 потока.
- `-o32`: 32 ожидающих операций ввода/вывода.
- `-r`: Выполняет случайные операции чтения и записи.
- `-w50`: Соотношение операций записи 50% (остальные 50% — чтение).
- `-d60`: Длительность теста 60 секунд.
- `-c100m`: Размер тестового файла 100MB.
C:\Diskspd\diskspd.exe -b8k -t8 -o16 -r -w25 -d120 -c50m C:\testfile1.dat C:\testfile2.dat C:\testfile3.dat
В этом примере используется 3 файла (`C:\testfile1.dat`, `C:\testfile2.dat`, `C:\testfile3.dat`). Параметры:
- `-b8k`: Размер блока 8KB.
- `-t8`: 8 потоков.
- `-o16`: 16 ожидающих операций ввода/вывода.
- `-r`: Случайные операции.
- `-w25`: 25% операций записи.
- `-d120`: Длительность теста 120 секунд.
- `-c50m`: Размер каждого тестового файла 50MB.
- Throughput (MB/s): Показывает скорость передачи данных в мегабайтах в секунду. Чем выше значение, тем лучше производительность.
- IOPS (Operations Per Second): Показывает количество операций ввода/вывода, выполненных за секунду. Высокий IOPS указывает на хорошую производительность при работе с небольшими файлами и случайном доступе.
- Latency (ms): Показывает среднюю задержку при выполнении операций ввода/вывода. Низкая задержка критична для приложений, требующих быстрого отклика.
Использование PowerShell для тестирования производительности диска
PowerShell предоставляет удобные инструменты для мониторинга и тестирования производительности диска на VDS Windows. С помощью встроенных командлетов можно получить информацию о скорости чтения/записи, IOPS и задержках, а также создавать собственные скрипты для автоматизации тестирования. Пример 1: Получение базовой информации о дискахGet-WmiObject Win32_DiskDrive | Select-Object Model, InterfaceType, MediaType
Эта команда получает информацию о моделях дисков, типе интерфейса (SATA, SAS, NVMe) и типе носителя (HDD, SSD). Это полезно для определения характеристик установленных дисков.
Ожидаемый вывод будет примерно таким:
Model InterfaceType MediaType
----- ------------- ---------
Msft Virtual Disk IDE Fixed hard disk media
В данном примере видно, что используется виртуальный диск (Msft Virtual Disk) с интерфейсом IDE и типом носителя «Fixed hard disk media».
Пример 2: Измерение скорости чтения и записи с помощью Test-Path
Этот метод использует командлет `Test-Path` для создания, записи и чтения небольшого файла, измеряя время, затраченное на эти операции.
$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"
Этот скрипт создает файл размером 10MB, заполняет его случайными данными, записывает его на диск, читает его обратно, измеряет время записи и чтения, вычисляет скорости и удаляет файл. Результаты выводятся в консоль.
Пример 3: Использование Performance Counters для мониторинга IOPS и задержек
PowerShell позволяет получать доступ к счетчикам производительности (Performance Counters), которые предоставляют информацию о различных аспектах работы системы, включая дисковую подсистему.
$Disk = Get-WmiObject Win32_PerfFormattedData_PerfDisk_PhysicalDisk | Where-Object {$_.Name -ne "_Total"}
foreach ($d in $Disk) {
Write-Host "Диск: $($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)"
}
Этот скрипт получает данные о физических дисках, исключая суммарный объект («_Total»). Для каждого диска он выводит процент времени, в течение которого диск занят, среднее время чтения и записи сектора, а также количество операций чтения и записи в секунду (IOPS). Обратите внимание, что значения являются моментальными снимками. Для получения более точных данных, необходимо собирать данные в течение определенного периода времени и вычислять средние значения.
Интерпретация результатов PowerShell
- Скорость чтения/записи (KB/s): Более высокие значения указывают на более быструю передачу данных. Низкая скорость может указывать на проблему с диском или контроллером.
- % Disk Time: Высокий процент (>80%) может указывать на то, что диск является узким местом в системе.
- Avg. Disk sec/Read и Avg. Disk sec/Write: Более низкие значения указывают на более быструю обработку операций ввода/вывода. Значения выше 0.01 секунды (10 мс) могут указывать на проблемы с производительностью.
- Disk Reads/sec и Disk Writes/sec (IOPS): Более высокие значения указывают на большее количество операций ввода/вывода, которые диск может обработать за секунду. Типичные значения для HDD составляют 50-150 IOPS, для SSD – тысячи или десятки тысяч IOPS.
Анализ производительности диска через Performance Monitor
Windows Performance Monitor (Perfmon) – это графический инструмент, позволяющий отслеживать различные аспекты работы системы, включая производительность диска. Он предоставляет широкий набор счетчиков, которые можно использовать для мониторинга скорости чтения/записи, IOPS, задержек и других параметров. Performance Monitor особенно полезен для визуального анализа производительности диска в режиме реального времени и для выявления проблем, связанных с нагрузкой. Пример 1: Запуск Performance Monitor и добавление счетчиков- Откройте Performance Monitor, набрав `perfmon` в строке поиска Windows и нажав Enter.
- В левой панели разверните «Monitoring Tools» и выберите «Performance Monitor».
- Нажмите на значок «+» (Add) на панели инструментов, чтобы добавить счетчики.
- В окне «Add Counters» выберите объект «PhysicalDisk» (для физических дисков) или «LogicalDisk» (для логических дисков).
- Выберите нужные счетчики, например:
- «% Disk Time»: Процент времени, в течение которого диск занят обработкой запросов.
- «Avg. Disk sec/Read»: Среднее время, необходимое диску для чтения данных (в секундах).
- «Avg. Disk sec/Write»: Среднее время, необходимое диску для записи данных (в секундах).
- «Disk Reads/sec»: Количество операций чтения, выполненных диском в секунду (IOPS).
- «Disk Writes/sec»: Количество операций записи, выполненных диском в секунду (IOPS).
- «Avg. Disk Queue Length»: Средняя длина очереди запросов к диску.
- Выберите конкретный экземпляр диска (например, «0 C:» для диска C:) или «_Total» для суммарной статистики по всем дискам.
- Нажмите «Add», затем «OK».
- % Disk Time: Если график постоянно находится на уровне 80% или выше, это может указывать на то, что диск перегружен и является узким местом.
- Avg. Disk sec/Read и Avg. Disk sec/Write: Высокие значения (выше 0.01 секунды) указывают на медленную обработку операций ввода/вывода.
- Disk Reads/sec и Disk Writes/sec: Позволяют оценить IOPS. Сравните полученные значения с типичными значениями для вашего типа диска (HDD или SSD).
- Avg. Disk Queue Length: Длинная очередь (>2) может указывать на то, что диск не успевает обрабатывать запросы.
- В левой панели Performance Monitor разверните «Data Collector Sets» и выберите «User Defined».
- Щелкните правой кнопкой мыши и выберите «New» -> «Data Collector Set».
- Введите имя для DCS (например, «DiskPerformance») и выберите «Create manually (Advanced)».
- Выберите «Create data logs» и установите флажок «Performance counter».
- Нажмите «Add» и добавьте нужные счетчики (как описано выше).
- Укажите интервал сбора данных (например, 1 секунда).
- Укажите местоположение для сохранения файлов логов.
- Запустите DCS, щелкнув правой кнопкой мыши на его имени и выбрав «Start».
Тестирование скорости диска с помощью CrystalDiskMark
CrystalDiskMark – это популярная бесплатная утилита для тестирования производительности жестких дисков и твердотельных накопителей (SSD) под Windows. Она предоставляет простой и удобный интерфейс для измерения скорости последовательного и случайного чтения/записи, а также IOPS. CrystalDiskMark часто используется для сравнения производительности различных дисков и для оценки влияния различных настроек на производительность. Пример 1: Запуск CrystalDiskMark и выбор параметров тестирования- Скачайте CrystalDiskMark с официального сайта и установите программу.
- Запустите CrystalDiskMark.
- В главном окне выберите:
- Number of Runs: Количество повторений теста (обычно 3-5).
- Test Size: Размер файла, используемого для тестирования (например, 1GiB).
- Drive: Диск, который вы хотите протестировать.
- Seq Q32T1: Последовательное чтение/запись с глубиной очереди 32 и 1 потоком. Эмулирует нагрузку, когда несколько запросов отправляются на диск одновременно.
- 4KiB Q8T8: Случайное чтение/запись блоками 4KiB с глубиной очереди 8 и 8 потоками. Эмулирует нагрузку, когда несколько приложений одновременно обращаются к небольшим файлам.
- Seq: Простое последовательное чтение/запись.
- 4KiB Q1T1: Случайное чтение/запись блоками 4KiB с глубиной очереди 1 и 1 потоком. Эмулирует нагрузку, когда одно приложение обращается к небольшим файлам.
- Seq Read/Write: Скорость последовательного чтения/записи в MB/s. Высокие значения важны для работы с большими файлами (например, видео, архивы).
- 4KiB Q32T1 Read/Write: Скорость случайного чтения/записи блоками 4KiB с большой глубиной очереди. Важна для производительности баз данных и виртуальных машин.
- 4KiB Q1T1 Read/Write: Скорость случайного чтения/записи блоками 4KiB с малой глубиной очереди. Важна для отзывчивости системы и быстрого запуска приложений.
| Тип диска | 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 |