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

Обеспечение высокой производительности Локальных дисковых пространств Performance tuning for Storage Spaces Direct

Локальные дисковые пространства — это программно-определяемое хранилище на основе Windows Server. Оно автоматически оптимизирует свою производительность, избавляя от необходимости вручную указывать число столбцов, конфигурацию кэша оборудования, которое используется, и другие факторы, которые приходится настраивать вручную для общих хранилищ SAS. Storage Spaces Direct, a Windows Server-based software-defined storage solution, automatically tunes its performance, obviating the need to manually specify column counts, the cache configuration of the hardware you use, and other factors that must be set manually with shared SAS storage solutions. Справочные сведения см. в разделе Локальные дисковые пространства в Windows Server 2016. For background info, see Storage Spaces Direct in Windows Server 2016.

Кэш шины программного хранилища Локальных дисковых пространств настраивается автоматически в зависимости от типа хранилищ в системе. The Storage Spaces Direct Software Storage Bus Cache is automatically configured based on the types of storage present in the system. Распознаются три типа: жесткий диск, SSD и NVMe. Three types recognized: HDD, SSD and NVMe. Кэш использует самое быстрое хранилище для кэширования чтения и (или) записи соответственно, а более медленное хранилище используется для постоянного хранения данных. The cache claims the fastest storage for read and/or write caching, as appropriate, and uses the slower storage for persistent storage of data.

Ниже представлена сводная таблица конфигураций по умолчанию. The following table summarizes the defaults:

Типы хранилищ Storage Types Конфигурация кэша Cache Configuration
Любой отдельный тип Any Single Type Если имеется хранилище только одного типа, то кэш шины программного хранилища не настраивается. If there is only one type of storage present, the Software Storage Bus Cache isn’t configured.
SSD и жесткие диски HDD или NVMe и жесткие диски SSD+HDD or NVMe+HDD Самое быстрое хранилище настраивается в качестве уровня кэша и кэширует операции чтения и записи. The fastest storage is configured as the cache layer and caches both reads and writes.
SSD и SSD или NVMe и NVMe SSD+SSD or NVMe+NVMe Комбинации быстрых носителей нацелены на сочетание хранилищ с низкой и высокой износостойкостью. Например, для кэша могут использоваться SSD-устройства флэш-памяти NAND, выдерживающие 10 перезаписей накопителя в день (DWPD), а для хранения данных — SSD-устройства флэш-памяти NAND с ресурсом в 1,5 DWPD. These fast+fast options are targeted to combinations of higher and lower endurance storage, for instance 10 drive writes per day (DWPD) NAND flash SSD for cache and 1.5 DWPD NAND flash SSD for capacity. Для реализации подобных систем Локальным дисковым пространствам предоставляется набор строк модели для определения устройств кэша. They’re enabled by giving Storage Spaces Direct a set of Model strings to identify cache devices with. Дополнительные сведения см. справочнике по командлету Enable-StorageSpacesDirect ( CacheDeviceModel ). For more information see the Enable-StorageSpacesDirect cmdlet reference ( CacheDeviceModel ).

В системе, сочетающей только быстрые накопители, кэшируются только операции записи. In a fast+fast system, only writes are cached. Операции чтения не кэшируются. Reads aren’t cached.

Обратите внимание на то, что кэширование устройств SSD и NVMe по умолчанию относится только к операциям записи. Note that caching over an SSD or NVMe device defaults to write caching, only. Это делается намеренно: так как накопитель работает быстро, то скорость перемещения считанного содержимого на устройства кэша ограничена его производительностью. The intention is that since the capacity device is fast, there is limited value in moving read content to the cache devices. Это не всегда так, однако следует соблюдать осторожность, так как включение кэша чтения может напрасно тратить ресурсы устройства кэша без видимого прироста производительности. There are cases where this may not hold, though care should be taken since enabling read cache may unnecessarily consume cache device endurance for no increase in performance. Ниже приведены возможные примеры. Examples may include:

  • NVme и SSD Включение кэша чтения позволит ускорить операции ввода-вывода при чтении за счет преимуществ подключения PCIe и (или) более высокой производительности операций ввода-вывода устройств NVMe по сравнению с объединенными устройствами SSD. NVme+SSD Enabling read cache will allow read IO to take advantage of the PCIe connectivity and/or higher IOPS performance of the NVMe devices as compared to the aggregated SSD.
    Это может иметь место в сценариях, ориентированных на пропускную способность, ввиду разницы в пропускной способности устройств NVMe и адаптера шины, подключающегося к устройствам SSD. This may be true for bandwidth-oriented scenarios due to the relative bandwidth capabilities of the NVMe devices vs. the HBA connecting to the SSD. Это может не иметь место в ситуациях, когда стоимость операций ввода-вывода в секунду для ЦП может ограничивать системы, не позволяя увеличить производительность. It may not be true for IOPS-oriented scenarios where CPU costs of IOPS may limit systems before the increased performance can be realized.
  • NVMe и NVMe Аналогично, если скорость чтения кэша NVMe выше, чем скорость совокупного хранилища NVMe, то включение кэша чтения может иметь смысл. NVMe+NVMe Similarly, if the read capability of the cache NVMe are greater than the combined capacity NVMe, there may be value in enabling read cache.
    Удачные случаи применения кэша чтения в таких конфигурациях, скорее всего, будут нетипичными. Good cases for read cache in these configurations are expected to be unusual.

Чтобы просмотреть и изменить конфигурацию кэша, используйте командлеты Get-ClusterStorageSpacesDirect и Set-ClusterStorageSpacesDirect. To view and alter the cache configuration, use the Get-ClusterStorageSpacesDirect and Set-ClusterStorageSpacesDirect cmdlets. Свойства CacheModeHDD и CacheModeSSD определяют, как кэш функционирует на носителе указанного типа. The CacheModeHDD and CacheModeSSD properties define how the cache operates on capacity media of the indicated type.

Журнал производительности для дисков Performance history for drives

Область применения: Windows Server 2019 Applies to: Windows Server 2019

В этом подразделе журнала производительности для Локальные дисковые пространства подробно описывается журнал производительности, собранный для дисков. This sub-topic of Performance history for Storage Spaces Direct describes in detail the performance history collected for drives. Журнал производительности доступен для каждого диска в подсистеме хранения кластера, независимо от шины или типа носителя. Performance history is available for every drive in the cluster storage subsystem, regardless of bus or media type. Однако он недоступен для загрузочных дисков операционной системы. However, it is not available for OS boot drives.

Не удается собрать журнал производительности для дисков на недоступном сервере. Performance history cannot be collected for drives in a server that is down. Коллекция будет возобновлена автоматически при резервном копировании сервера. Collection will resume automatically when the server comes back up.

Имена и единицы рядов Series names and units

Эти серии собираются для каждого подходящего диска: These series are collected for every eligible drive:

Series Series Единицы Unit
physicaldisk.iops.read в секунду per second
physicaldisk.iops.write в секунду per second
physicaldisk.iops.total в секунду per second
physicaldisk.throughput.read байт в секунду bytes per second
physicaldisk.throughput.write байт в секунду bytes per second
physicaldisk.throughput.total байт в секунду bytes per second
physicaldisk.latency.read секунд seconds
physicaldisk.latency.write секунд seconds
physicaldisk.latency.average секунд seconds
physicaldisk.size.total Байты bytes
physicaldisk.size.used Байты bytes

Как интерпретировать How to interpret

Series Series Как интерпретировать How to interpret
physicaldisk.iops.read Число операций чтения в секунду, выполненных диском. Number of read operations per second completed by the drive.
physicaldisk.iops.write Число операций записи в секунду, выполненных диском. Number of write operations per second completed by the drive.
physicaldisk.iops.total Общее число операций чтения или записи в секунду, выполненных диском. Total number of read or write operations per second completed by the drive.
physicaldisk.throughput.read Количество данных, считанных с диска в секунду. Quantity of data read from the drive per second.
physicaldisk.throughput.write Количество данных, записываемых на диск в секунду. Quantity of data written to the drive per second.
physicaldisk.throughput.total Общее количество данных, считанных или записанных на диск в секунду. Total quantity of data read from or written to the drive per second.
physicaldisk.latency.read Средняя задержка операций чтения с диска. Average latency of read operations from the drive.
physicaldisk.latency.write Средняя задержка операций записи на диск. Average latency of write operations to the drive.
physicaldisk.latency.average Средняя задержка всех операций на диск или с него. Average latency of all operations to or from the drive.
physicaldisk.size.total Общий объем хранилища диска. The total storage capacity of the drive.
physicaldisk.size.used Используемая емкость хранилища диска. The used storage capacity of the drive.

Откуда они приходят Where they come from

iops.* Ряды, throughput.* и latency.* собираются из Physical Disk набора счетчиков производительности на сервере, подключенном к диску, по одному экземпляру на диск. The iops.* , throughput.* , and latency.* series are collected from the Physical Disk performance counter set on the server where the drive is connected, one instance per drive. Эти счетчики измеряются partmgr.sys и не включают большую часть стека программного обеспечения Windows и других прыжков сети. These counters are measured by partmgr.sys and do not include much of the Windows software stack nor any network hops. Они представляют собой представление о производительности оборудования устройства. They are representative of device hardware performance.

Series Series Счетчик источника Source counter
physicaldisk.iops.read Disk Reads/sec
physicaldisk.iops.write Disk Writes/sec
physicaldisk.iops.total Disk Transfers/sec
physicaldisk.throughput.read Disk Read Bytes/sec
physicaldisk.throughput.write Disk Write Bytes/sec
physicaldisk.throughput.total Disk Bytes/sec
physicaldisk.latency.read Avg. Disk sec/Read
physicaldisk.latency.write Avg. Disk sec/Writes
physicaldisk.latency.average Avg. Disk sec/Transfer

Счетчики измеряются для всего интервала, а не для выборки. Counters are measured over the entire interval, not sampled. Например, если диск бездействует в течение 9 секунд, но завершает 30 IOs в десятой секунде, он physicaldisk.iops.total будет записан в среднем 3 iOS в секунду в течение этого 10-секундного интервала. For example, if the drive is idle for 9 seconds but completes 30 IOs in the 10th second, its physicaldisk.iops.total will be recorded as 3 IOs per second on average during this 10-second interval. Это гарантирует, что журнал производительности захватывает все действия и является надежным для шума. This ensures its performance history captures all activity and is robust to noise.

size.* Ряды собираются из MSFT_PhysicalDisk класса в WMI, по одному экземпляру на диск. The size.* series are collected from the MSFT_PhysicalDisk class in WMI, one instance per drive.

Series Series Source, свойство Source property
physicaldisk.size.total Size
physicaldisk.size.used VirtualDiskFootprint

Использование в PowerShell Usage in PowerShell

Используйте командлет Get-физический : Use the Get-PhysicalDisk cmdlet:

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

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

Для наблюдения за дисками можно выбрать два типа объектов:

• Physical Disk — в качестве объекта мониторинга выступает то, что система определяет как физическое устройство. Это может быть как отдельный жесткий диск, так и несколько дисков, объединенных в RAID-массив. Если физический диск разбит на логические разделы (тома), то счетчики выдают суммарное значение для всех томов, находящихся на диске.
• Logical Disk — здесь в качестве объекта мониторинга выступает логический раздел. Perfmon идентифицирует тома по букве диска или точке монтирования (если том примонтирован как папка). Если физический диск разбит на несколько томов, то счетчики будут выдавать значения для каждого выбранного тома отдельно. Возможна и обратная ситуация, когда при использовании динамических дисков том может быть растянут на несколько физических устройств, тогда счетчики покажут значения сразу для всех физических дисков, входящих в состав логического.

Набор счетчиков для физического и логического диска практически идентичен, за небольшим исключением, о котором чуть позже.

Приступим к описанию счетчиков.

%Disk Time

Показывает процент общей загруженности диска. Представляет из себя сумму значений счетчиков %Disk Read Time (процент загруженности диска операциями чтения) и %Disk Write Time (процент загруженности диска операциями записи). Теоретически его значения должны быть в диапазоне от 0 до 100%, однако это верно только для одиночного диска. При использовании RAID-массивов часто можно увидеть значения этого счетчика больше 100%.

%Idle Time

Показывает время простоя диска, т.е. время, в течении которого диск оставался в состоянии покоя, не обрабатывая запросы чтения\записи. В отличии от %Disk Time лежит строго в диапазоне от 100% (полный покой) до 0 (полная загрузка).

Disk Transfers/sec

Основной показатель интенсивности запросов к диску. Показывает общее количество операций ввода\вывода, обработанных (завершенных) диском в течении 1 секунды (Input/Output Operations Per Second, IOPS). Этот счетчик позволяет примерно оценить, насколько нагрузка на диски близка к предельной. Для дисков, работающих в нормальном режиме, можно ориентироваться на следующие значения: 80-160 IOPS для одиночного жесткого диска SATA или SAS, 1800-5000 IOPS для одиночного SSD диска. Для уточнения можно воспользоваться счетчиками Disk Reads/sec (количество обработанных за секунду запросов на чтение) и Disk Writes/sec (количество обработанных за секунду запросов на запись).

Avg. Disk sec/Transfer

Среднее время в секундах, требуемое для выполнения диском одной операции чтения или записи. Складывается из значений Avg. Disk sec/Read (время на выполнение операции чтения) и Avg. Disk sec/Write (время на выполнение операции записи). Для высоконагруженых систем, таких как сервера БД, значение Avg. Disk sec/Transfer не должно превышать 0,1, для рядовых серверов допустимо значение 0,25.

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

Avg. Disk Queue Length

Cредняя длина очереди запросов к диску. Отображает количество запросов к диску, ожидающих обработки в течении определенного интервала времени. Нормальным считается очередь не больше 2 для одиночного диска. Если в очереди больше двух запросов, то возможно диск перегружен и не успевает обрабатывать поступающие запросы. Уточнить, с какими именно операциями не справляется диск, можно с помощью счетчиков Avg. Disk Read Queue Length (очередь запросов на чтение) и Avg. Disk Wright Queue Length (очередь запросов на запись).

Значение Avg. Disk Queue Length не измеряется, а рассчитывается по закону Литтла из математической теории очередей. Согласно этому закону, количество запросов, ожидающих обработки, в среднем равняется частоте поступления запросов, умноженной на время обработки запроса. Т.е. в нашем случае Avg. Disk Queue Length = (Disk Transfers/sec) * (Avg. Disk sec/Transfer).

Avg. Disk Queue Length приводится как один из основных счетчиков для определения загруженности дисковой подсистемы, однако для его адекватной оценки необходимо точно представлять физическую структуру системы хранения. К примеру, для одиночного жесткого диска критическим считается значение больше 2, а если диск располагается на RAID-массиве из 4-х дисков, то волноваться стоит при значении больше 4*2=8.

Current Disk Queue Length

Текущая длина очереди запросов к диску. Показывает количество запросов, ожидающих обработки в данный конкретный момент. По сути это мгновенное значение (срез) текущей очереди запросов.

Disk Bytes/sec

Средняя скорость обмена данными с диском, или скорость чтения\записи. Показывает общее количество байт, отправленных на диск (запись) и с диска (чтение) в течении одной секунды, тем самым позволяя оценить пропускную способность дисковой системы. Складывается из значений Disk Read Bytes/sec (скорость чтения) и Disk Write Bytes/sec (скорость записи). Предельные значения сильно зависят от типа диска: к примеру для одиночного жесткого диска максимальная скорость чтения\записи лежит в пределах 160-250Mb/s, для одиночного SSD — около 550-600Mb/s.

Avg. Disk Bytes/Transfer

Среднее количество байт, передаваемое при выполнении одной операции чтения\записи. Чем больше размер передаваемых блоков, тем меньше нагрузка на диск. При нормальной работе этот параметр должен быть больше 20Kb, значения меньше говорят о большом количестве мелких запросов, т.е. о неэффективном использовании дисковой системы. Более точную информацию можно получить из значений счетчиков Avg. Disk Bytes/Read (количество байт, передаваемое при выполнении одной операции чтения) и Avg. Disk Bytes/Write (количество байт, передаваемое при выполнении одной операции записи).

Split IO/Sec

Частота разделения операций ввода\вывода на несколько операций. Значение, отличное от нуля показывает, что запрашиваются слишком большие блоки данных, которые не могут быть переданы за одну операцию. Это может быть следствием сильной фрагментации диска.

И только для объектов Logical Disk есть еще два счетчика, позволяющие определить наличие свободного места на диске.

%Free Space

Объем свободного дискового пространства на выбранном логическом диске, в процентах.

Free Megabytes

Объем свободного пространства на логическом диске, в мегабайтах.

Заключение

Для того, чтобы адекватно оценить полученные данные, необходимо точно представлять физическую структуру системы хранения. В первую очередь важен тип используемых дисков (HDD, SSD), интерфейс (SATA, SAS, FC, PCIe), скорость вращения HDD (7200, 10k, 15k). При использовании RAID-массивов нужно знать тип массива (0, 1, 5, 10 и т.д.) и количество дисков в массиве.

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

1. Большое количество случайных операций чтения\записи, данные обрабатываются небольшими блоками. Этот тип нагрузки характерен для серверов баз данных. При таком типе нагрузки наиболее важным параметром является количество IOPS-ов. Основные счетчики — Disk Transfers/sec, Avg. Disk sec/Transfer и конечно Avg. Disk Queue Length.

2. Последовательное чтение\запись больших блоков данных. Такая нагрузка характерна, к примеру, для серверов потокового видео. В этом случае наиболее важна пропускная способность дисковой системы, которую показывает Disk Bytes/sec.

Читайте также:  Linux share files with samba
Оцените статью