Windows server производительность дисков

Одной из основных метрик, позволяющих оценить производительность существующей или проектируемой системы хранения данных является IOPS (Input/Output Operations Per Second — количество операций ввода/вывода). Говоря простым языком, IOPS – этой количество блоков, которое успевает считаться или записаться на носитель или файловую систему в единицу времени. Чем это число больше – тем больше производительность данной дисковой подсистемы (откровенно говоря, само по себе значение IOPS стоит рассматривать в комплексе с другими характеристиками СХД, таким как средняя задержка, пропускная способность и т.п.).

В этой статье мы рассмотрим несколько способов измерения производительности используемой системы хранения данных в IOPS под Windows (локальный жесткий, SSD диск, сетевая папка SMB, CSV том или LUN на СХД в сети SAN).

Содержание:

  • Счетчики производительности дисковой подсистемы Windows
  • Тестирование IOPS в Windows с помощью DiskSpd
  • Как получить IOPS и производительность дисковой подсистемы с помощью PowerShell?

Счетчики производительности дисковой подсистемы Windows

Вы можете оценить текущий уровень нагрузки на дисковую подсистему с помощью встроенных счетчиков производительности Windows из Performance Monitor. Чтобы собрать данные по этим счетчикам:

  1. Запустите
    Perfmon
    ;
  2. Создайте новый набор сборщиков данных (Data Collector Set). Выберите Create manually;
    perfmon - измерение производительности дисков

  3. Выберите опцию Create data logs -> Performance counter;
    Create data logs - data-lazy-src=

  • Теперь в свойствах нового набора для сбора данных добавьте следующие счетчики производительности для объекта Physical Disk (можете выбрать счётчики для конкретного диска или для всех доступных локальных дисков):
    • Avg. Disk Sec./Transfer
    • Avg. Disk Queue Length
    • Avg Disk Bytes/Transfer
    • Disk Bytes/sec
    • Disk Transfers/sec
    • Split IO/sec
  • Можете изменить другие параметра сбора данных. По умолчанию значения счетчиков собираются каждые 15 секунд.

    Чтобы отображать данные о производительности дисков в реальном времени нужно добавить указанные счётчик в Perfmon в разделе Monitoring Tools -> Performance Monitor.

    physicaldisk - добавить счетчики производительности для физического диска

  • Осталось запустить сбор данных счетчиков производительности (Start) и дождаться сбора достаточного количества информации для анализа. После этого щелкните ПКМ по набору у выберите Stop;
    собрать данные производительсноти дисков с помощью Perfmon

  • Чтобы просмотреть собранные данные по диску, перейдите в раздел Perfmon -> Reports -> User Defined -> Data_Disk_IO — > ваш набор. По умолчанию данные по диску отображаются в виде графиков;
  • С помощью
    Ctrl+G
    переключитесь в режим Report.

    perfmon данные счетчиков по текущей нагрузке на диск

  • Как интерпретировать результаты производительности дисков в Perfmon? Для быстрого анализа производительности дисковой подсистемы необходимо посмотреть на значения как минимум следующих 5 счетчиков.

    При анализе данные счётчиков желательно иметь представление о конфигурации физических дисков (используется ли RAID/Stripe/количество и типы дисков, наличие кэша и т.д.).

    • Disk sec/Transfer – время, необходимое для выполнения одной операции записи/чтения на устройство хранения/диск — disk latency. Если задержка более 25 мс (0.25) или выше, значит дисковый массив не успевает выполнять операции. Для высоконагруженных систем значение не должно превышать 10 мс (0.1);
    • Disk Transfers/sec – количество операций чтения/записи в секунду (IOPS). Это основной показатель интенсивности обращений к дискам (примерные значения в IOPS для разных типов дисков представлены в конце статьи);
    • Disk Bytes/Sec средняя скорость обмена с диском (чтения/записи) за 1 секунду. Максимальные значения зависит от типа диска (150-250 Мб/секунду — для обычного диска и 500-10000 для SSD);
    • Split IO/sec показатель фрагментации диска, когда операционной системе приходится разделять одну операцию ввода/вывода на несколько операций. Может также говорить о том, приложение запрашивает слишком большие блоки данных, которые немогут быть переданы за одну операцию;
    • Avg. Disk Queue Length длина очереди к диску (количество транзакций ожидающий обработку). Для одиночного диска длина очереди не должна превышать 2. Для RAID массива из 4 дисков длина очереди до 8 будет считаться допустимым значением.

    Тестирование IOPS в Windows с помощью DiskSpd

    Для генерации нагрузки на дисковую подсистему и измерения ее производительности Microsoft рекомендует использовать утилиту DiskSpd (https://aka.ms/diskspd). Эта консольная утилита, которая в несколько потоков может осуществлять операции I/O с указанным таргетом. Я довольно часто использую эту утилиту чтобы замерить производительность СХД в IOPS и получить максимальную скорость чтения/записи c данного сервера (можно конечно измерить производительность и со стороны СХД, в этом случае diskspd будет использоваться для генерации нагрузки).

    Утилита не требует установки, просто скачайте и распакуйте архив на локальный диск. Для x64 битных систем используйте версию diskspd.exe из каталога amd64fre.

    Я использую такую команду для тестирования диска:

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

    Важно. При использовании diskspd.exe генерируется довольно большая нагрузка на диски и CPU тестируемой системы. Поэтому, чтобы не вызвать падение производительности для пользователей, не рекомендуем запускать ее на продуктивных системах в часы пиковой нагрузки.

    diskspd.exe утилита для стресс тестирования производительности дисков в Windows

    • -c50G
      – размер файла 50 Гб (лучше использовать большой размер файла, чтобы он не поместился в кэш контроллера СХД);
    • -d30
      0 – продолжительность тестирования в секундах;
    • -r
      – произвольное чтение/запись (если нужно тестировать последовательный доступ, используйте –s);
    • -t8
      – количество потоков;
    • -w40
      – соотношение операций записи к операциям чтения 40% / 60%;
    • -o32
      — длина очереди;
    • -b64K
      — размер блока;
    • -Sh
      — не использовать кэширование;
    • -L
      — измерять задержки (latency) ;
    • E:\diskpsdtmp.dat
      – путь к тестовому файл.

    После окончания стресс-теста из полученных таблиц можно получить средние значения производительности.

    Например, в моем тесте получены следующие общие данные про производительности (Total IO):

    • MiB/s — 241 (около 252 Мб/сек, неплохо)
    • IOPS — 3866.49 (отлично!)
    • Средняя задержка — 66.206 мс (высоковато!)

    данные по максимальным IOPS и скорости чтения /записи на диск в Windows из diskspd.exe

    Можно получить отдельные значения только по операциям чтения (секция Read IO ) или записи (секция Write IO ).

    Протестировав с помощью diskspd несколько дисков или LUN на СХД, вы сможете сравнить их или выбрать массив с нужной производительностью под свои задачи.

    Как получить IOPS и производительность дисковой подсистемы с помощью PowerShell?

    Недавно мне на глаза попался PowerShell скрипт (автор Microsoft MVP, Mikael Nystrom), являющийся по сути надстройкой над утилитой SQLIO.exe (набора тестов для расчета производительности файлового хранилища).

    Примечание. В декабре 2015 года Microsoft объявила о прекращении поддержки утилиты и замене SQLIO на более универсальный инструмент — Diskspd, удалив файлы с дистрибутивом SQLIO со своего сайта. Поэтому, вам придется искать sqlio.exe самостоятельно, либо скачать с нашего сайта (находится в архиве со скриптом).

    Итак, скачайте архив содержащий 2 файла: SQLIO.exe и DiskPerformance.ps1 (disk-perf-iops.ZIP — 73Кб) и распакуйте архив в произвольный каталог.

    Скрипт DiskPerformance и утилита sqlio.exe

    Пример запуска PowerShell скрипта для определения IOPS:

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

    Оценка диска в IOPS с помощью Powershell

    Я использовал в скрипте следующие аргументы:

    • -TestFileName test.datимя файла, создаваемого утилитой FSUTIL;
    • –TestFileSizeInGB 1 — размер файла для тестов. Допустимые варианты 1,5,10,50,100,500,1000 Гб. Размер файла должен быть больше, чем размер кэша системы. Иначе будет измеряться IOPS для данных в кэше, а не на диске;
    • -TestFilepath C:\Temp указывается диск, для которого будет выполняться расчет производительности и каталог на диске, в котором будет создаваться тестовый файл. Допустимо указать UNC путь к сетевой папке;
    • —TestMode Get-LargeIO — есть два варианта измерения нагрузки, Get-SmallIO – измеряются IOPS, Get-LargeIO – измеряется скорость передачи данных. Разница между аргументами SmallIO и LargeIO, в размерах блоков при замере скорости 8 Кбайт и 512 Кбайт, и типе доступа Random или Sequential соответственно;
    • -FastMode Trueв режиме Fastmode каждый тест выполняется 10 секунд, иначе 60 сек;
    • -RemoveTestFile Trueудалить тестовый файл по окончании теста;
    • -OutputFormat Out-GridView — возможен вывод результатов измерения в консоль PowerShell (Format-Table) или в отдельное окно графической таблицы (Out-Gridview);

    Производительность диска в IOPS

    В нашем случае дисковый массив (тестировался виртуальный vmdk диск на VMFS хранилище, расположенном на дисковой полке HP MSA 2040 с доступом через SAN) показал среднее значение IOPS около 15000 и скорости передачи данных (пропускная способность) около 5 Гбит/сек.

    В следующей таблице указаны примерные значения IOPS для различных типов дисков:

    Тип IOPS
    SSD(SLC) 6000
    SSD(MLC) 1000
    15K RPM 175-200
    10K RPM 125-150
    7.2K RPM 50-75
    RAID5 из 6 дисков с 10000 RPM 900

    Ниже приведены ряд рекомендаций по производительности дисков в IOPS для распространенных сервисов:

    • Microsoft Exchange 2010 – с 5000 пользователей, каждый из которых получает 75 и отправляет 30 писем в день, потребует как минимум 3750 IOPS
    • Microsoft SQL 2008 Server – с 3500 SQL транзакциями в секунду (TPS) — 28000 IOPS
    • Обычный сервер приложений Windows на 10-100 пользователей — 10-40 IOPS

    Оптимизация системного кэша в Windows Server 2022 для эффективной работы с большим количеством файлов и данных на диске.

    Данная инструкция поможет оптимизировать системный кэш Windows Server 2022 для повышения производительности программ, работающих с большим объемом данных и файлов на диске.

    Оптимизация кэша позволит ускорить операции чтения и записи, снизить нагрузку на дисковую подсистему и улучшить отклик системы. Следуйте представленным шагам, чтобы настроить сервер на более эффективную работу.


    1. Увеличение системного кэша (LargeSystemCache)

    Windows Server по умолчанию использует лишь 8 МБ системного кэша. Чтобы система использовала всю доступную память (за исключением последних 4 МБ), необходимо изменить параметр LargeSystemCache.

    Шаги:

    1. Открыть редактор реестра Regedit (нажмите Win + R, введите regedit и нажмите Enter).
    2. Перейти в раздел:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
      
    3. Найти параметр LargeSystemCache.
    4. Изменить его значение на 1.
    5. Закрыть редактор реестра и перезагрузить сервер.

    2. Включение DisablePagingExecutive

    Этот параметр позволяет хранить ядро системы и драйверы в оперативной памяти, предотвращая их выгрузку в файл подкачки. Это может ускорить отклик системы, если доступно 2 ГБ или больше оперативной памяти.

    Шаги:

    1. Открыть редактор реестра Regedit.
    2. Перейти в раздел:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
      
    3. Найти параметр DisablePagingExecutive.
    4. Установить значение 1.
    5. Закрыть редактор реестра и перезагрузить сервер.

    Важно: Не рекомендуется включать этот параметр, если у вас мало оперативной памяти (менее 2 ГБ).


    3. Настройка файла подкачки

    Файл подкачки позволяет системе использовать виртуальную память в случае нехватки оперативной памяти.

    Шаги:

    1. Открыть Панель управления (Win + R, ввести control и нажать Enter).
    2. Перейти в СистемаДополнительные параметры системы.
    3. Вкладка ДополнительноБыстродействиеПараметры.
    4. Вкладка ДополнительноВиртуальная памятьИзменить.
    5. Выключить автоматическое управление размером файла подкачки.
    6. Установить минимальный размер1024 МБ, максимальный размер2048 МБ.
    7. Нажать ОК и перезагрузить сервер.

    4. Активация системы

    Для полноценной работы Windows Server 2022 необходимо активировать систему. Без активации некоторые функции системы не работают и производительность может быть ограничена. В некоторых релизах система сама перезагружается.

    Варианты активации:

    • Через корпоративные службы KMS:
    • С помощью лицензии:
      • Ввести лицензионный ключ в ПараметрыАктивация.
      • Следовать инструкциям для подтверждения активации.

    Измерение производительности дисковой подсистемы

    Для тестирования скорости чтения и записи данных используйте утилиту CrystalDiskMark или аналогичные инструменты. Этот инструмент позволяет измерять производительность диска, включая последовательные и случайные операции, что помогает выявить возможные узкие места.

    🔗 Скачать: CrystalDiskMark на SourceForge

    Альтернативные утилиты:

    • fio – мощный инструмент для детального тестирования в среде Linux.
    • ATTO Disk Benchmark – тестирует производительность с различными размерами блоков данных.
    • Iometer – предназначен для эмуляции реальных нагрузок на дисковую систему.

    Совет: перед запуском тестирования закройте все фоновые приложения, чтобы получить максимально точные результаты.

    Исходные:
    Windows Server 2016 Standard
    диски для ОС собраны в RAID1, raid в свою очередь задействован встроенный на чипе материнки ASROCK X79 EXTREME6 сами диски SAMSUNG HD321KJ
    Ко всему прочему диски шифрованы bitlocker

    Тормозит работа ОС и приложений на нем. На нем исполняется в основном по загрузке RDP, СУБД(MSSQLSERVER, PosgtreSQL) 1С, libre.

    Вопрос с остальными компонентами не стоит и близко Процессор, ОЗУ, сеть не загружены и запас огромен. Но диски тоже вроде как не загружены по следующим счетчикам: средняя длина очереди диска, среднее время чтения с диска, среднее время записи на диск, Обмен страниц/сек. Однако с учетом того что у конкретно этих моделей дисков по характеристикам «скорость внешней передачи данных» 300Мб\сек, то я склоняюсь что диски надо менять. Однако начальство не хочет их менять, нужен аргумент. Я не знаю как в числах именно выразить это. Есть только подозрения на основании опыта работы с данной ОС. Конкретного счетчика чтобы проверить именно эту характеристику диска «скорость внешней передачи данных» насколько я знаю нет.

    Да я понимаю что вообще чип на материнке вообще не нужен нахрен включая своим врагам, а нужен нормальный аппаратный RAID. Да я понимаю что диски мягко говоря нищеброские даже по меркам домашнего пользователя для такого типа нагрузки как вышеперечисленное. К сожалению молекулярное администрирование не изучал и не копал в такие дебри, чтобы иметь какой-то численно выраженный показатель, который одназначно скажет что да надо менять диски. Долбанутый начальник возомнил себя админом, потому что десять лет назад 5 кнопок нажал и теперь помимо того что работаю админом так еще предварительно надо поработать разрушителем легенд. Как минимум уговорить не использовать RAID на материнке мне не удалось хотя в данном примере я понимаю что есть элементарно риск потерять данные или сбойный в работе RAID при отказе питания или сбой при записи, как минимум в пример.

    On the Task Manager Performance tab we can see real-time server performance, namely processor, memory, and network performance. What is missing; The performance metrics of the disks.

    Show disk performance metrics on Windows Server 2016 Task Manager

    By changing the Task Manager on Windows Server 2012 and then on Windows Server 2016, Microsoft chose to remove this from the Task Manager because it had significant performance implications when collecting the metrics for each process/thread of the disks. Instead, they suggest using the Resource Monitor to display performance and measurement of drives.

    Show disk performance metrics on Windows Server 2016 Task Manager

    The Disk Counter has been removed from the Performance tab in Windows Server 2012. This is because there is a significant performance impact to collect Disk metrics on a Server due to the overhead Task Manager may cause in querying each Disk IO for each process/disk. Disk metrics are very useful while troubleshooting performance issues on the server. An easy way to check Disk metrics is to use Resource Monitor. Source

    In fact, for the same reason, the corresponding disk and network columns have also been disabled from the Processes tab of the Task Manager.

    However, you can enable disk performance in Task Manager with a simple command at the command prompt. This method applies to both Windows Server 2016 and Windows Server 2012 and R2.

    Open the command line (cmd) with administrator permissions and click on the following command:

    diskperf -Y

    Show disk performance metrics on Windows Server 2016 Task Manager

    That’s it. Reopen a Task Manager window and you’ll see that your server’s disk performance is now showing up.

    Show disk performance metrics on Windows Server 2016 Task Manager

    To disable this feature at any time, simply type the following command at the command line with administrator privileges.

    diskperf -N

    Часто встречающийся запрос: у меня есть сервер под управлением Windows Server 2003/2008/2012(R2), стоит задача увеличить производительность дисковой подсистемы в существующем сервере или собрать новый. Конечно, производительности много не бывает, но мы всегда стараемся предложить заказчику необходимый и достаточный вариант.
    Для детального анализа всех аспектов производительности желательно использовать xperf и Windows Performance Analyzer из набора Windows Performance Toolkit. WPT сейчас входит в состав ADK и позволяет в числе прочего ответить на другой популярный в наши дни вопрос: «будет ли эффективным SSD кэш и каков его оптимальный размер?»

    Правильное применение Windows Performance Analyzer — тема для отдельной статьи. На изучение WPA у вас могут уйти многие часы, так что начать можно с базовых инструментов, так как для начала нам нужно получить ответ на два простых вопроса:

    • справляется ли дисковая подсистема с нагрузками?
    • если нет, то какие параметры требуют улучшения и насколько именно?

    Для этого нам нужно провести мониторинг нагрузки за достаточно продолжительное время. Естественно, нагрузка должна быть максимально приближена к «боевой». Например, если речь идет о некой CRM системе, то собирать статистику нужно за весь рабочий день или за несколько часов пиковой нагрузки, когда с системой интенсивно работает большая часть пользователей.

    Использовать можно самый обыкновенный Perfmon. Запускаем:

    Создаем новую сборщиков данных:

    Create manually, затем выбираем System Performance и добавляем счетчики для объекта Physical Disk:

    Нужны данные не по всем дискам вместе (_Total), а раздельно по интересующим томам. Счетчики:

    • Avg. Disks Read Queue Length, Avg. Disk Write Queue Length: средняя длина очереди на чтение и запись за интервал измерения. Является вычисляемой, т.е. просто умножается Disk Transfers/sec на Disk sec/Transfer
    • Current Disk Queue Length: текущая длина очереди
    • Disk Reads/sec, Disk Writes/sec: усредненное (за интервал измерения) количество завершенных запросов на чтение/запись в секунду, т.е. пресловутые IOPS’ы. Сами по себе IOPS’ы мало что значат, т.к. важно не только обработать большое количество запросов в секунду, но и обеспечить максимально быструю обработку каждого отдельного запроса. Читайте ниже про задержки.
    • Avg. Disk Bytes/Read, Avg. Disk Bytes/Write: средний размер одной операции ввода-вывода
    • Avg. Disk sec/Read, Avg. Disk sec/Write: отображает такой важный показатель, как полную задержку (latency) — сколько времени ушло на выполнение запроса. Высокие задержки — одна из главных причин проблем с производительностью дисковой подсистемы, особенно для OLTP нагрузок. Можно иметь систему, способную обработать десятки тысяч IOPS на случайный доступ блоками 4k, но при задержке в 500мс. Приемлемые значения зависят от решаемой задачи, в большинстве случаев (OLTP, VDI, почта) стоит бить тревогу при росте задержки свыше 15-30мс.

    Интервал измерения можно задать в свойствах сборщика, общее время работы — в свойствах группы:

    Запускаем сборщик и получаем на выходе лог в двоичном формате (blg файл), который можно изучать в том же perfmon или конвертировать в CSV, например, для использования в Gnuplot.

    Зная текущую конфигурацию дисковой подсистемы и счетчики производительности, мы можем более-менее точно запланировать возможные действия. Например, когда в пиках появляется по 10000 IOPS на запись по 4-32К, очередь растет до нескольких десятков и задержка аж до 500-700мс и выше, то можно точно сказать, что имеющейся пары SAS HDD в зеркале тут не хватит и проблему можно решить добавлением дисков, включением write-back кэша, использованием SSD (напрямую или в качестве кэша, в зависимости от конкретной задачи, которая будет определять профиль нагрузки).
    Самый быстрый способ — отправить подробную информацию о сервисах, конфигурации и архив с логом специалистам компании True System и получить детальный отчет и несколько вариантов решений.

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  • Как запустить проверку windows в безопасном режиме
  • Как отключить автообновление программ в windows 7
  • Безопасность windows подключение к прокси серверу для отправки запроса
  • Как настроить хранитель экрана в windows 10
  • Запуск устройства невозможен код 10 что делать windows 10