Русифицированная версия стандартного шаблона Zabbix (от 14.08.2022).
Нагрузочное тестирование дискового массива с целью анализа критических показателей для создания актуальных тригеров.
Показатели и графики на дисковом массиве при нагрузке CrystalDiskMark:
SEQ1M
запись контрольного файла будет производиться последовательно (Sequential), как и его чтение, с размером блока 1МБайт. Именно результат теста Seq Q32T1 стоит сравнивать со скоростью носителя, указанной производителем.
RND4K (Random 4KiB) Q32T1
лучше использовать для тестирования раздела диска с операционной системой, т.к. ОС в основном работает с небольшими блоками данных, а тестирование будет производиться блоками размером 4 КБ при единственном потоке с глубиной очереди 32.
Потоки (Threads)
количество одновременно выполняемых операций чтения/записи, увеличение этого параметра приводит к повышению нагрузки на носитель.
Глубина очереди
число запросов, обрабатываемых тестируемым накопителем. Чем больше глубина, тем больший объём информации будет обработан диском.
Тестирование DiskSpd:
diskspd.exe –c8G -d300 -r -w40 -t8 -o32 -b64K -Sh -L testfile1.dat > DiskSpeedResults.txt
-c8G
размер файла, превышающий размер кэша контроллера СХД
-d300
продолжительность тестирования в секундах (5 минут)
-r
произвольное чтение/запись (если нужно тестировать последовательный доступ, используется –s)
-t8
количество потоков
-w40
соотношение операций записи к операциям чтения 40% / 60%
-o32
длина очереди
-b64K
размер блока
-Sh
не использовать кэширование
-L
измерять задержки (Latency)
Дисковый массив (Storage Array) - это RAID или SAN, который представляется как один логический диск. Если происходит чтение с такого логического диска, то это равносильно тому, что ввод-вывод будет направлен только на один диск массива (то есть, глубина очереди = 1), и всего один из дисков обслужит ввод-вывод. Остальные диски будут невостребованны, пока активность направленных на эту группу дисков в массиве из расчёта на один диск не превысит, например, 180 IOPS - максимальный порог одного диска HDD SATA 15к оборотов на шпинделе. При глубине очереди 2, вероятно, что пара запросов ввода-вывода распределилась между разными дисками, таким образом, два диска будут работать с глубиной очереди 1, а остальные диски останутся неактивными. Очередь к одному диску массива, т.е. логическому диску станет больше единицы только тогда, когда нагрузка на массив превысит возможности обслуживания без очередей запросов ко всем дискам (IOPS всех дисков).
Disk Time - % Disk Read Time (% активности диска при чтении) и % Disk Write Time (% активность диска при записи) — процент активности диска при операции чтения и записи диска. Показания этого счетчика в RAID-массиве охватывают больше чем один физический диск, значения может быть в диапазоне от 0 до 100% для одиночного диска, и выше в массиве. Этот счетчик надо анализировать вместе с % Idle Time.
Idle 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 — количество обращений чтения в секунду. В нормальном режиме интенсивность обращений не должна превышать их индивидуальным пределам, умноженным на количество дисков в массиве. В режиме чтения для различных типов RAID могут учитываться не все диски, например в RAID-6 в массиве из шести дисков скорость чтения равна скорости чтения с четырех дисков (с оставшихся двух считываются контрольные суммы).
Disk Writes/sec — количество обращений записи в секунду, то есть частота выполнения операций записи на диск.
Анализировать корректно Disk Reads/sec и Disk Writes/sec можно только с учетом текущей (Current) длины очереди Current Disk Queue Length и средней (Average) длины очередей чтения/записи Avg. Disk Read Queue Length и Avg. Disk Write Queue Length. Если Current Disk Queue Length или Avg. Disk Read Queue Length и Avg. Disk Write Queue Length существенно выходят за штатные пределы — скорее всего, реальная потребность в IOPS дисковой подсистемы будет в разы выше, чем фиксируют Disk Reads/sec и Disk Writes/sec. К примеру, если Current Disk Queue Length для массива RAID 10 из 4 дисков в какие-то интервалы времени достигает показателей 12-16, с пиками до 100 — то реальный спрос на операции ввода/вывода в эти моменты у приложений превышает возможности дисковой подсистемы в 2-3 раза.
Avg. Disk Queue Length - средняя длина очереди диска. Данный показатель указывает, сколько операций ввода/вывода в среднем ожидают, когда жесткий диск станет доступным. Показатель не должен превышать количество физических дисков в массиве более чем в 1,5-2 раза (кол-во запросов на диск). В приложениях класса SQL Server, Exchange Server его среднее значение лучше удерживать на уровне 0.2. Уточнить, с какими именно операциями не справляется диск, можно с помощью счетчиков Avg. Disk Read Queue Length (очередь запросов на чтение) и Avg. Disk Wright Queue Length (очередь запросов на запись).
Avg. Disk Queue Length = (Disk Transfers/sec) * (Avg. Disk sec/Transfer) - количество запросов ожидающих обработки, равняется частоте поступления запросов, умноженной на время обработки запроса. Уменьшению показателя очереди способствует SSD-кеширование или традиционное увеличение количества дисков в RAID-массиве. Среднюю длину очереди к диску на чтение снижает переход на SSD, а среднюю длину очереди на запись — отказ от вариантов RAID с большим штрафом на запись RAID 5 и RAID 6, в пользу RAID 10.
Current Disk Queue Length - текущая длина очереди запросов к диску. Показывает количество запросов, ожидающих обработки в данный конкретный момент.
Avg. Disk sec/Transfer - среднее время задержки обращения к диску в секундах, требуемое для выполнения диском одной операции чтения или записи. Сумма значений Avg. Disk sec/Read (время на выполнение операции чтения) и Avg. Disk sec/Write (время на выполнение операции записи). Для высоконагруженых систем, таких как сервера БД, значение Avg. Disk sec/Transfer не должно превышать 0,1, для рядовых серверов допустимо значение 0,25.
Avg. Disk sec/Read - среднее время обращения на чтения данных с диска в секундах. Среднее значение счетчика производительности Avg. Disk sec/Read не должно превышать 10 миллисекунд (0,01 сек). Максимальное значение счетчика производительности Avg. Disk sec/Read не должно превышать 50 миллисекунд (0,050 секунды).
Avg. Disk sec/Write - среднее время обращения записи данных на диск в секундах.
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\% Idle Time",60],15m)>{$VFS.DEV.UTIL.MAX.WARN}
{#DEVNAME}: Загрузка диска выше {$VFS.DEV.UTIL.MAX.WARN} в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Disk Transfers/sec",60],15m) > 2000
{#DEVNAME}: IOPS выше 2000 в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Disk Reads/sec",60],15m) > 1000
{#DEVNAME}: IOPS reads выше 1000 в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Disk Writes/sec",60],15m) > 1000
{#DEVNAME}: IOPS writes выше 1000 в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Avg. Disk sec/Write",60],15m) > {$VFS.DEV.WRITE.AWAIT.WARN:"{#DEVNAME}"}
{#DEVNAME}: Задержка записи больше {$VFS.DEV.WRITE.AWAIT.WARN} мс в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Avg. Disk sec/Read",60],15m) > {$VFS.DEV.READ.AWAIT.WARN:"{#DEVNAME}"}
{#DEVNAME}: Задержка чтения больше {$VFS.DEV.READ.AWAIT.WARN} мс в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Avg. Disk sec/Transfer",60],15m) > {$VFS.DEV.TRANSFER.AWAIT.WARN:"{#DEVNAME}"}
{#DEVNAME}: Задержка обращений к диску выше {$VFS.DEV.TRANSFER.AWAIT.WARN} мс в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Current Disk Queue Length",60],15m) > 15
{#DEVNAME}: Очередь запросов к диску выше 15 в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Avg. Disk Write Queue Length",60],15m) > 10
{#DEVNAME}: Очередь записи выше 10 в течении 15 минут
min(/Windows Agent Custom/perf_counter_en["\PhysicalDisk({#DEVNAME})\Avg. Disk Read Queue Length",60],15m) > 10
{#DEVNAME}: Очередь чтения выше 10 в течении 15 минут