2004 г.
Эффективность встроенных 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 лучше руководствоваться правилом "чем больше, тем лучше".
Почему нужно возиться с SQL
Почему мы выбрали для тестирования SQL вариант работы "1С:Предприятия 8.0"? Ведь система может работать, например, и в файл-серверном варианте. Дело в том, что "1С:Предприятие" версии 8 с выделенным SQL-сервером работает гораздо быстрее, чем в файловом варианте. При уже упоминавшемся первом обзоре LGA775 (К+П № Х, стр. ХХ) время выполнения "проведения по партиям" и запроса в отчете "взаиморасчеты с комитентами" составили 1095 с и 119 с соответственно. Это в файловом варианте. Сравните с показателями 36 с и 32 с — наилучшими в SQL-системе. Ради тридцатикратного прироста производительности можно и повозиться.
P. S.
Хотя наш интерес в этом тестировании был искренним и чисто познавательным, подсказки о том, какой именно режим будет оптимальным, все же были. Хотя их поиском мы занялись позже. При создании раздела RAID-0 внизу экрана высвечивается такая информация:
Что называется, читайте инструкцию, она рулез. Кроме того, запрос в Google "strip size производительность" уже на первом экране среди прочего мусора выдает следующую ссылку:
в руководствах по Tuning Oracle говорят о striping factor.
По их руководствам stripe size =striping factor*Block size(Cylinder).
А типичный striping factor — 32 блока.
Следовательно, если принять Block size= 512|1024 bytes (зависит от модели и производителя): stripe size =32 *512|1024 =16|32 Kb.
Попадание 100%. Именно эти размеры и оказались оптимальными. Oracle и MSSQL — это, конечно, разные СУБД, но физика процесса одинакова везде.
Matrix storage против внешнего Serial ATA RAID-контроллера
Мы намеренно не делали сравнение внешнего и внутреннего RAID-контроллеров основной темой статьи. Дело в том, что эти контроллеры довольно сильно отличаются по функциональности — как ни странно это звучит на первый взгляд.
Технология Matrix Storage очень гибкая. Мало того что она позволяет создавать на двух HDD разделы RAID разных типов — она еще дает возможность достаточно просто использовать различные размеры strip size. Для внешних Serial ATA RAID-контроллеров, как правило, существуют определенные ограничения: например, не для всех strip size раздел может быть загрузочным.
Зато внешние Serial ATA RAID-контроллеры обычно имеют средства для миграции, позволяющие "зазеркалить" существующий HDD или, что сложнее, преобразовать его (естественно, добавив еще один HDD) в RAID-0.
Недостатком Matrix Storage также можно признать довольно большую (до 12%) загрузку ЦПУ.
В нашем случае в качестве "оппонента" ICH6R был выбран Adaptec 1210SA. Неплохой контроллер с очень хорошим софтом, работающим почти под всеми ОС и поставляемый в исходниках.
Но в случае с Adaptec 1210SA загрузочным для Windows может быть только раздел RAID-0 со strip size 64 Кб. И именно с этим показателем и проводились измерения с HDD Maxtor MaXLine III. Результаты ниже.
1С:Предприятие 8.0 SQL
1С:Предприятие файловая БД
Внешний Serial ATA RAID-контроллер совсем незначительно опережает Matrix Storage в файловом варианте — и довольно ощутимо (на 16%) в варианте SQL. Хотя с оптимальным значением strip size Matrix RAID-0 работает быстрее (см. основную статью).
Таким образом, внешний Serial ATA RAID-контроллер более предпочтителен для серверов или ПК, на которых есть выделенные RAID-массивы под конкретные задачи. Но если у вас только два HDD — однозначно лучше использовать Matrix Storage. И надежность получите, и практически ту же производительность.
Что такое stripe
stripe — непрерывная последовательность дисковых блоков. stripe может быть размером с один дисковый блок, но может состоять и из тысяч.
Устройства RAID разделяют содержащие их разделы дисков на страйпы; различные уровни RAID различаются в способе организации страйпов и в том, как размещаются на них данные. Взаимодействие между размером stripe, типичными размерами файлов в системе и их положением на диске — все это определяет общую производительность подсистемы RAID.
В RAID-0 компоненты разделов делятся на страйпы и затем чередуются. В результате получаем один большой виртуальный раздел. Такой подход не предполагает избыточности и снижает общую надежность: отказ одного диска уничтожит весь раздел.
Влияние замены HDD на производительность
Помимо "образцового" Maxtor MaXLine III 250 Гб, который обычно используется в наших тестированиях, у нас была возможность опробовать пару винчестеров ST3160827AS (160 Гб, 7200 оборотов в минуту, среднее время доступа 8,5 мс; интерфейс Serial ATA, буфер 8 Мб).
Мы обратили внимание на эти HDD, так как они тоже поддерживают NCQ (native command queuing). У "образцового" Maxtor MaXLine III 250 Гб другой объем несколько большее время доступа (9,3 мс — это хуже) и больший кэш (16 Мб, это лучше). Подбором strip size здесь мы уже не занимались, хотя и сделали два измерения для 64 и 32 Кб. Результаты ниже.
HDD от Seagate чуть опережает Maxtor. Можно сделать вывод, что время доступа при работе с деловыми приложениями имеет большее значение, чем больший кэш.