Главная > SQL Server > Выравнивание кластеров NTFS и блоков RAID массива (детальный тест для SQL Server )

Выравнивание кластеров NTFS и блоков RAID массива (детальный тест для SQL Server )

По мотивам статьи Tips for DBA: выравнивание кластеров NTFS и блоков RAID-массивов Александра Гладченко.
Выравнивание размеров кластеров файловой системы и блоков RAID массива позволит увеличить производительность дисковых операций. — А на сколько и на каких операциях?
Я решил сам проверить это! — Это будет Честный детект.. Потестируем..
Цель теста:
Измерить прирост производительности дисковой подсистемы в контексте дисковых операций MS SQL Server и оценить степень этого прироста.
Материальное обеспечение теста:
— Сервер HP DL560 G1 2 CPU, 4GB RAM, Windows Server 2003 R2 SP2 Standard;
— Дисковый массив HP MSA 1000;
— 4 диска Ultra SCSI 320 300GB 10K;
I. Калибровка дисков
Задача: На этом этапе мы должны убедиться, что используемые диски работоспособны, определить разброс скоростей чтения и записи по дискам, чтобы потом учитывать возможности каждого диска при распределении дисков в массивах.
Поскольку диски с повреждениями или существенными отклонениями от средней производительности, скорее всего, ведут себя одинаково плохо под разными типами рабочей нагрузки, а также потому, что дальнейшее тестирование также может выявить проблемные диски, мы ограничимся одним, грубым тестом. Для проведения этого калибровочного теста необходимы следующие подготовительные действия:
1. С помощью поставляемых с дисковым контроллером HP MSA 1000 специализированных утилит, установленных на сервере, конфигурируем все диски полки как 4 массива RAID0, каждый из которых состоит из одного диска, размер каждого массива выбирается равным всему доступному размеру диска, размер блока низкоуровневой разметки выбираем равным 64Кб, для чистоты измерений кэширование чтения и записи для этих дисков отключаем.
2. С помощью оснастки управления дисками, входящей в состав mmc-консоли управления компьютером, создаем для каждого физического диска полки RAW-раздел (без форматирования NTFS) величиной на весь диск, и без присвоения буквы диска (буквы присваивать можно, но это не обязательно).
3. Установить программу SQLIO Disk Subsystem Benchmark Tool. Везде по тексту настоящей статьи местоположение программы sqlio.exe выбрано следующее: C:\SQLIO\sqlio.exe
Более подробно об утилите можно узнать в статье —
Эталонный тест дисковой подсистемы SQLIO.
4. Подготовим командный файл, который будет запускать программу sqlio.exe в разных режимах для каждого диска и сохранять результаты в файлы. Текст командного файла:
——————————————
sqlio -kR -s300 -b64 -f1 -i4200000 -o1 -t1 -R1 -LP -a2 -BN > R01-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kW -s300 -b64 -f1 -i4200000 -o1 -t1 -R1 -LP -a2 -BN > W01-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kR -s300 -b64 -f1 -i4200000 -o1 -t1 -R3 -LP -a2 -BN > R03-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kW -s300 -b64 -f1 -i4200000 -o1 -t1 -R3 -LP -a2 -BN > W03-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kR -s300 -b64 -f1 -i4200000 -o1 -t1 -R4 -LP -a2 -BN > R04-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kW -s300 -b64 -f1 -i4200000 -o1 -t1 -R4 -LP -a2 -BN > W04-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kR -s300 -b64 -f1 -i4200000 -o1 -t1 -R5 -LP -a2 -BN > R05-b64-f1-i4200000-o1-t1.log
timeout /T 30
sqlio -kW -s300 -b64 -f1 -i4200000 -o1 -t1 -R5 -LP -a2 -BN > W05-b64-f1-i4200000-o1-t1.log
——————————————
В этом файле каждый вызов программы sqlio.exe имеет одинаковые аргументы, кроме аргумента R, который имеет значения 1, 3, 4, 5 — номера дисков согласно консоли «Управление дисками». Каждый диск тестируется на чтение и, после 30 секундной паузы, на запись (аргумент k). Время тестирования каждого диска 300 секунд (аргумент s), размер блока 64Кб (аргумент b), Число блоков в строке равно единице (аргумент f), число строк равно 4200000 (аргумент i), число очередей тоже равно единице (аргумент o), число потоков равно единице (аргумент t). Суммарный размер файла рабочей нагрузки на каждом диске составляет ~270Гб, что почти совпадает с размером диска.

Образец вывода программы sqlio.exe
——————————————
sqlio v1.5.SG
calibrating timestamp counter for latency timings… done (MHz measured at 2956)
1 thread reading for 300 secs from file 5:
using 64KB IOs over 64KB stripes with 4200000 IOs per run
enabling multiple I/Os per thread with 1 outstanding
buffering set to not use file nor disk caches (as is SQL Server)
affinity mask is 0x2 (2)
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   843.64
MBs/sec:    52.72
latency metrics:
Min_Latency(ms): 1
Avg_Latency(ms): 1
Max_Latency(ms): 24
histogram:
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%:  0 100  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
——————————————
5. Запустим командный файл на исполнение, а потом сведем собранные в файлы результаты в общую таблицу, для дальнейшего сравнения и анализа (отберем только интересующие нас данные — метрику «MBs/sec»).
На Рисунке 1 показан результат калибровочного тестирования 4-х дисков.
Rfkb,hjdrf lbcrgп
Рис.1
Наиболее важной задачей нагрузочного тестирования является выявление дисков, характеристики которых существенно отличаются от остальных. На Рисунке 1 диски практически идентичны, как по записи, так и по чтению.
II. Выбор размера блока и уровня RAID
Таблица 1. Характеристики для основных типов нагрузки ввода – вывода SQL Server
image_13
Многие специалисты рекомендуют устанавливать размер блока для форматирования NTFS раздела операционной системы Windows равным 64 Кб и делать такого же размера размер страйпа при монтировании дискового массива. Данная тема многократно обсуждалась во многих источниках.
На этом не задерживаемся — выбираем 64K.
В выборе уровня RAID я остановлюсь на RAID10. Выбор оптимального уровня RAID не цель этой статьи, — это много раз обсуждалось и обсуждается в других источниках.
RAID будет подвержен тестовым сериям измерения скорости чтения и записи, для разных размеров блока. Размер блока (который задаётся параметром –b) будет принимать следующий набор значений: 1024, 512, 256, 128, 64, 8. Размеры блока соответствуют размерам основных типов запросов ввода-вывода.
III. Тест производительности без выравнивания кластеров NTFS и блоков RAID массива
С помощью поставляемых с дисковым контроллером HP MSA 1000 утилит создаем массив RAID10 из четырех имеющихся дисков, размер выбирается максимально доступный, размер блока низкоуровневой разметки выбираем равным 64Кб, кэширование чтения и записи для этого диска отключаем.
С помощью оснастки «Управление дисками», входящей в состав mmc консоли «Управление компьютером» создаем раздел величиной в весь диск, форматируем в NTFS, с размером кластера 64K.
Диск готов.
Узнаем, для информации, смещение кластеров NTFS на созданном разделе.
image_8
Рис.2
Смещение равно 32K
Запускаем тест (см. командный файл в Приложении 1).
Получаем результаты (см. Рис.4).
IV. Тест производительности с выравниванием кластеров NTFS и блоков RAID массива
RAID10 на дисковой полке остается без изменений с предыдущего теста.
Удаляем раздел из оснастки «Управление дисками».
Создаем раздел с использованием DISKPART
CREATE PARTITION PRIMARY ALIGN=64
image_10
Рис.3
С помощью оснастки «Управление дисками», входящей в состав mmc консоли «Управление компьютером» форматируем раздел в NTFS, с размером кластера 64K.
Диск готов. Запускаем тест (см. командный файл в Приложении 1).
Получаем результаты (см. Рис.4).
На рисунке 4 показана сводная таблица с результатами тестов.
image_5
Рис.4
На рисунке 5 показаны результаты тестов в виде графиков.
image_11
Рис. 5
Выводы:
В результате выравнивания кластеров NTFS и блоков RAID массива повышается производительность дисковых операций.
Повышение производительности зафиксировано на операциях чтения и записи блоками по 8K и 64K.
Практически все основные типы нагрузки ввода-вывода SQL Server получили выигрыш от этой оптимизации от 9 до 13%.
Отрицательный и близкий к нулю прирост производительности в таблице результатов тестов можно отнести к погрешностям измерений.
P.S.: Выражаю благодарность Александру Гладченко за оказание помощи методическими материалами.
Приложение 1
Командный файл:
——————————————
sqlio -kW -s180 -frandom -o8 -b8 -LP -BN -Fparam.txt > WR-b8-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -frandom -o8 -b64 -LP -BN -Fparam.txt > WR-b64-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -frandom -o8 -b128 -LP -BN -Fparam.txt > WR-b128-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -frandom -o8 -b256 -LP -BN -Fparam.txt > WR-b256-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -frandom -o8 -b512 -LP -BN -Fparam.txt > WR-b512-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -frandom -o8 -b1024 -LP -BN -Fparam.txt > WR-b1024-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b8 -LP -BN -Fparam.txt > WS-b8-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b64 -LP -BN -Fparam.txt > WS-b64-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b128 -LP -BN -Fparam.txt > WS-b128-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b256 -LP -BN -Fparam.txt > WS-b256-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b512 -LP -BN -Fparam.txt > WS-b512-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kW -s180 -fsequential -o8 -b1024 -LP -BN -Fparam.txt > WS-b1024-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b8 -LP -BN -Fparam.txt > RR-b8-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b64 -LP -BN -Fparam.txt > RR-b64-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b128 -LP -BN -Fparam.txt > RR-b128-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b256 -LP -BN -Fparam.txt > RR-b256-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b512 -LP -BN -Fparam.txt > RR-b512-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -frandom -o8 -b1024 -LP -BN -Fparam.txt > RR-b1024-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b8 -LP -BN -Fparam.txt > RS-b8-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b64 -LP -BN -Fparam.txt > RS-b64-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b128 -LP -BN -Fparam.txt > RS-b128-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b256 -LP -BN -Fparam.txt > RS-b256-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b512 -LP -BN -Fparam.txt > RS-b512-LP-BN-F(2-0x0-2048).log
timeout /T 30
sqlio -kR -s180 -fsequential -o8 -b1024 -LP -BN -Fparam.txt > RS-b1024-LP-BN-F(2-0x0-2048).log

——————————————
param.txt
——————————————
T:\testfile.dat 2 0x0 2048
——————————————
Реклама
Рубрики:SQL Server
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: