-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIOps.txt
119 lines (88 loc) · 16.8 KB
/
IOps.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Items Physical Disk:
Дисковый массив (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 - среднее время обращения записи данных на диск в секундах.
Triggers:
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 минут
CrystalDiskMark:
SEQ1M # запись контрольного файла будет производиться последовательно (Sequential), как и его чтение, с размером блока 1МБайт. Именно результат теста Seq Q32T1 стоит сравнивать со скоростью носителя, указанной производителем.
RND4K (Random 4KiB) Q32T1 # лучше использовать для тестирования раздела диска с операционной системой, т.к. ОС в основном работает с небольшими блоками данных, а тестирование будет производиться блоками размером 4 КБ при единственном потоке с глубиной очереди 32.
Потоки (Threads) # количество одновременно выполняемых операций чтения/записи, увеличение этого параметра приводит к повышению нагрузки на носитель.
Глубина очереди # число запросов, обрабатываемых тестируемым накопителем. Чем больше глубина, тем больший объём информации будет обработан диском.
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)
sqlio -kW -s360 -fsequential -o8 -b64 -Fparam.txt
-KW # тестовая запись
-КR # тестовое чтение
-S360 # тест 360 секунд
-Fsequential # использовать последовательный метод
-Frandom # использует случайный метод
-O8 # количество ожидающих запросов ввода-вывода, в каждой очереди есть 8 невыполненных запросов ввода-вывода
-B8 # буфер (buffering), использовать размер блока запроса 8 КБ
-BN # N=none
-BY # Y=all
-T8 # использовать 8 потоков для тестирования
-DD # тестируемый диск D
-i8 # количество выполнений ввода-вывода (8 IOs) в каждом тесте ввода-вывода
cat param.txt
c:\testfile.dat 2 0x0 100
c:\ # целевой диск обозначен как диск C.
testfile.dat # имя тестового файла, который будет создан на целевом диске
2 # количество используемых потоков
0x0 # означает использование всех ЦП.
100 # представляет размер созданного тестового файла в МБ.
.\DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:\temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView
-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:
10K RPM - 125-150
7.2K RPM - 50-75
15K RPM - 175-200
SSD(MLC) - 1000
SSD(SLC) - 6000
RAID5 из 6 дисков с 10000 RPM - 900
Рекомендации:
Microsoft Exchange 2010 – с 5000 пользователей, каждый из которых получает 75 и отправляет 30 писем в день, потребует как минимум 3750 IOPS
Microsoft SQL 2008 Server – с 3500 SQL транзакциями в секунду (TPS) — 28000 IOPS