Подсистемы хранения данных


Эффективность встроенных RAID


Сергей Антончук, "Комиздат"

Статья посвящена вопросу производительности дисковой подсистемы при использовании технологии Matrix Storage.

Напомним, что технология Matrix Storage реализована в новых южных мостах ICH6R и ключевой ее возможностью (если не говорить о реализации стандартных RAID-0 и RAID-1) является реализация такой схемы работы, при которой на двух дисках создается два массива уровней RAID-0 и RAID-1 (matrix RAID-0 и matrix RAID-1).

Тестирование серьезной технологии, конечно же, требует серьезного инструмента. Поэтому данное исследование проводилось в деловом приложении, использующем трехуровневую архитектуру. А точнее — в "1С:Предприятие 8.0".

"1С:Предприятие" работало в трехуровневой архитектуре "клиент — сервер приложения — SQL-сервер" на одном ПК. При этом основную нагрузку на дисковую подсистему ПК давал SQL-сервер.

Тестирование именно в этой архитектуре было выбрано потому, что производительность RAID-0 вообще и Matrix RAID-0 в частности серьезно зависит от параметра strip size.

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

Но в компьютере всегда работает множество приложений с разной спецификой, поэтому размер strip size для RAID-0 в системах общего назначения — это всегда значение компромиссное. Однако если у нас есть приложение, которое должно работать быстро — пусть даже в ущерб всем остальным, то RAID-0 можно подстроить именно под него.

Вообще, такую настройку легче всего (и наиболее правильно) делать для SQL-серверов. Легче — потому что кратность данных, с которой SQL сервер взаимодействует с дисковой подсистемой, всегда известна. Это размер страницы (page size).

Для MS SQL сервера размер страницы составляет 8 Кб. Индексы записываются восьмистраничными блоками по 64 Кб.

Для Matrix RAID-0 значение strip size по умолчанию составляет 128 Кб. Так что, если планируется работа ПК, в основном, в качестве SQL-сервера (как в нашем случае), необходимость оптимизации налицо.
Вот этим и займемся.

Чтобы все было по-настоящему, на двух SATA- дисках Maxtor MaXLine III 250 Гб были построены два раздела:

  • Matrix RAID-1 — для системы и бэкапов;
  • Matrix RAID-0 — для свопа, временных файлов и рабочей SQL-базы.


Matrix RAID-0 сначала создавался по умолчанию, затем размер strip size задавался в 64 Кб, 32 Кб, 16 Кб и 8 Кб.

Вот что получилось в результате замеров производительности серверного трехуровневого варианта работы "1С:Предприятие 8.0" для одного клиента:





Полученные результаты достаточно красноречивы. При неудачном для данного случая значении strip size, которое составляет 128 Кб и было создано по умолчанию, сервер работает даже медленнее, чем в случае размещения СУБД на Matrix RAID-1. Зато в случае с "правильным" значением strip size в 8 Кб имеем 31% роста производительности в "проведении по партиям" по сравнению с Matrix RAID-1.

Вообще, все варианты со значением strip size от 64 Кб до 8 Кб показали прирост скорости, а наиболее оптимальным оказался вариант 16 Кб. Хотя для систем общего назначения, в которых SQL-сервер является одним из главных приложений, более предпочтительным может оказаться вариант 32 Кб.

Дело в том, что уменьшение значения strip size замедляет работу дисковой подсистемы в том случае, когда обмен данными идет очень большими блоками. Например, если вы занимаетесь видеомонтажом, то при выборе strip size лучше руководствоваться правилом "чем больше, тем лучше".


Содержание раздела