Введение
Тяжёлое и неблагодарное это занятие — тестирование RAID-контроллеров. Конечно, несколько спасает ситуацию то, что процесс тестирования достаточно неплохо автоматизируется, но все же временные затраты получаются крайне высоки. Причины просты: тестов много и идут они долго, плюс количество получаемых «циферок», мягко говоря, велико. Как бы то ни было, за прошедшие полгода через наши руки прошли шесть SAS RAID-контроллеров последнего поколения, по одному от каждого крупного производителя и мы не можем удержаться от того, чтобы не «столкнуть их лбами» в одной сводной статье. Тем более, что сейчас на рынке контроллеров образовалось некоторое затишье: существующие модели достаточно успешно справляются с нагрузками, шина PCI-Express вытеснила с рынка PCI-X, а смена интерфейсов накопителей закончилась полной и безоговорочной победой последовательного SAS (и совместимого с ним SATA) над параллельными SCSI и PATA. Конечно, на горизонте уже маячит SAS 2.0, с увеличенной с 3 ГБит/с до 6 Гбит/с пропускной способностью, но пока еще он только в перспективе, а у производителей контроллеров выдалось время для некоторой передышки. Конечно, они не тратят его даром — с завидной регулярностью все они выпускают обновления прошивок, убирая из них досадные недоработки и увеличивая производительность. Сразу оговоримся: мы будем сравнивать контроллеры именно с теми прошивками, которые были самыми свежими на момент попадания контроллеров в наши руки. Это, возможно, не очень корректно, поскольку ставит последних «гостей» в несколько более выгодное положение, но честное слово, у нас нет возможности одновременно протестировать сразу шесть контроллеров.
Прежде, чем начать сравнивать контроллеры, хотелось бы сперва объяснить, а каких, собственно, результатов мы от них ожидаем. В первую очередь, конечно же, стабильности работы и максимальных результатов, желательно предсказуемых. К сожалению, стабильность работы относится к крайне тяжело проверяемым величинам — если на нашем тестовом стенде все контроллеры работали без проблем, то в сети можно встретить нарекания, в большинстве случаев связанные с проблемностью некоторых сочетаний определенных моделей контроллеров и дисков. К сожалению, мы не в силах проверить все возможные варианты — руководствуйтесь официальными документами о совместимости или... или действуйте на свой страх и риск. Конечно, это будет слабым утешением тем, кому «не повезет», но все же: современные контроллеры подвержены необъяснимым «глюкам» в гораздо меньшей степени, чем их предшественники. Что же касается производительности контроллеров, то в данном случае есть несколько пунктов, которые хочется оговорить особо, поскольку мы стараемся с регулярностью обращать на них внимание.
Проще всего говорить о массивах RAID0 — это самый простой для контроллеров вариант, в нем необходимо лишь корректно справляться с нагрузкой, и показывать максимальные скорости в линейном чтении и совершать как можно больше операций в секунду при случайном характере обращений. Отдельной строкой идут многопоточные нагрузки и операции с файлами. Как показывает практика, все контроллеры теряют скорость на нескольких потоках, но имеет большое значение то, насколько велико это снижение. Особенно сложной для контроллеров является ситуация, когда запросы идут с минимальной глубиной очереди — большинство контроллеров в таких, казалось бы, щадящих условиях демонстрирует неожиданно низкие скорости. Рядом стоит проблема скоростей, достигнутых на реальных файлах — как правило, они заметно ниже тех, что мы видим в синтетических тестах. Порой, доходит до абсурда — один и тот же файл или набор файлов контроллер может записать быстрее, чем считать. Конечно, в этом есть определенная заслуга буферной памяти контроллеров, выросшей до внушительных объемов в 256, а то и 512 МБ, но все же — все наши тестовые нагрузки рассчитаны по объему таким образом, что поместиться в кэш целиком они не могут. Так что ответственными за такие экзерсисы с производительностью все же стоит считать алгоритмы прошивок.
Несколько более сложными для контроллеров являются массивы с использованием зеркальных пар: RAID1, RAID10 и RAID1E. Кстати, если вы не знакомы с последним из них, то рекомендуем
восполнить этот пробел. Для них остаются в силе все те моменты, о которых мы только что говорили и добавляется несколько своих, крайне характерных именно для массивов с зеркалированием.
В первую очередь это умение контроллера читать данные сразу с обоих дисков в зеркальных парах. На одном из дисков головка всегда будет находиться чуть ближе к искомому сектору, а значит данные с него поступят чуть быстрее. В результате, контроллер, в совершенстве владеющий этой технологией имеет заметное превосходство на случайном чтении: его массив RAID10 с точки зрения производительности, не вырождается в RAID0 из вдвое меньшего числа дисков, а вполне способен бороться с RAID0 из такого же числа дисков (а порой и обгонять его).
Второй характерной особенностью, которую мы всегда отмечаем, является умение (или отсутствие такового) распараллеливать линейную нагрузку чтения на два диска зеркальной пары. Если в случае достаточно длительного последовательного чтения не просто одновременно и «симметрично» читать с обоих дисков, а каждый четный запрос отправлять на один диск, а нечетный — на другой, то мы имеем великолепную возможность получить ощутимую прибавку в скорости линейного чтения. Обычно, размер этой прибавки весьма сильно зависит не только от размера файла, но и от того, блоками какого размера идут запросы. Естественно, что нам крайне хотелось бы, чтобы прибавка была побольше, а требуемый размер блоков — поменьше.
Наконец, третьей характерной особенностью является умение распараллеливать многопоточную нагрузку на разные диски в зеркальных парах. Если контроллер сумел распознать характер нагрузки, то есть определить, что с него читают, допустим, два линейных потока, то для него крайне желательно направить каждый поток на один отдельный диск из зеркальной пары. Думаю, не стоит подробно расписывать, что это способно дать весьма значительный прирост производительности.
Что же в итоге? Массивы с зеркалированием не так уж и просты — алгоритмы контроллера должны эффективно уметь распознавать характер нагрузки и применять соответствующие оптимизации, чтобы целиком и полностью удовлетворить наши запросы. И не стоит считать, что мы хотим чересчур много — все эти алгоритмы существуют уже около десяти лет, появившись еще на ATA-контроллерах с крайне слабыми, по современным меркам, процессорами.
Наконец, массивы с вращающейся контрольной суммой RAID5 и RAID6. С одной стороны, последнему поколению контроллеров стало значительно проще с ними справляться — используемые в них современные высокомощные процессоры достаточно легко справляются с расчетом контрольных сумм, даже если их не одна, как в RAID5, а две как в RAID6. С другой — гораздо острее стали чувствоваться недостатки алгоритмов — если раньше они скрывались на фоне недостаточной скорости расчета XOR, то теперь вышли на первый план. А ведь именно эти типы массивов становятся все более востребованными — мало кто согласен терять половину дисковой емкости на организацию массивов с зеркалированием, при этом объемы информации, требующей защищенного от сбоев хранения, растут просто-таки лавинообразно. Популярность же RAID6 вызвана достаточно простыми причинами. Современные массивы достигают просто потрясающих объемов — даже если не брать совсем уж новые диски, никто не мешает построить 30-ТБ массив из, допустим,
дисков Seagate ST31000640SS с SAS-интерфейсом. И если один из дисков такого массива приходит в неисправность, то восстановление такого массива занимает вовсе не несколько часов, а несколько (а то и десятки) дней. И чтобы не рисковать в это время информацией (а степень риска в таком случае достаточно велика), применяют не RAID5, а именно RAID6, способный перенести выход из строя не одного, а сразу двух дисков. Да, скорость падает катастрофически, но все же, зачастую это оказывается более подходящим вариантом, чем использование массивов с зеркалированием, поскольку их полезная емкость при том же количестве дисков почти вдвое меньше.
И прежде чем закончить это затянувшееся вступление, хотелось бы ответить на достаточно популярный вопрос: «А стоят ли эти контроллеры такого внимания, если можно пойти и взять твердотельные накопители SSD на флеш-памяти, демонстрирующие потрясающую производительность?» Да, стоят. Стоимость хранения информации на дисках пока еще в разы (точнее, на порядок) ниже, чем на SSD. Опять же, объемы SSD пока еще весьма невелики, так что брать их для серьезной системы придется несколько, а в таком случае их лучше подключать через те же самые RAID-контроллеры. Да и в вопросе производительности не все так просто — если на чтении многоканальные (да-да, самое время вопрошающим задуматься о том, как образуется эта самая многоканальность) SSD заведомо лучше любого массива дисков, то вот на записи дисковые массивы пока не собираются отступать на второй план. А в сочетании с тем, что SSD имеют ограниченное количество операций перезаписи, это приводит к тому, что дисковую подсистему, способную справиться с большим количеством запросов на запись, строить лучше все же на RAID-массиве из SAS-дисков. И дешевле, и надежней.
Участники тестирования
Итак, встречайте героев сегодняшнего обзора:
3ware 9690SA-8I с единым пакетом 9.5.1
Adaptec RAID ASR-5805 с прошивкой 5.2.0 build 16116 и драйверами 5.2.0.15728
Areca ARC-1680ix-16 с прошивкой 1.46 и драйверами 20.0.14
HighPoint RocketRAID HPT4320 с прошивкой 1.2.12.11 и драйверами 1.2.19.4
LSI MegaRAID SAS 8708EM2 с прошивкой 9.1.1-0013 и драйверами 2.20.0.32
Promise SuperTrak EX8650 с прошивкой SR1 1.04 и драйверами SR1
При желании, по ссылкам вы можете увидеть подробный обзор по каждому контроллеру, поэтому здесь мы ограничимся лишь краткими общими словами. Все больше заметно стремление производителей к унифицированности — они стараются выпускать контроллеры крупными сериями с единым дизайном, отличающимися, по большому счету, лишь количеством портов, объемом памяти да частотой процессора. Впрочем, последняя различается не сильно — четыре из представленных здесь шести моделей используют двуядерный процессор Intel IOP81348: в контроллерах Areca, Adaptec и HighPoint стоит версия с частотой 1,2 ГГц, а в Promise — 800-МГц вариант. Компании 3Ware и LSI пока придерживаются собственных разработок: в контроллере 3ware стоит AMCC Power PC405CR с частотой 266 МГц, а в LSI — LSISAS1078 (также с архитектурой PowerPC), работающий на 500 МГц.
Внушительное снижение стоимости оперативной памяти вызвало закономерный рост буферной памяти на контроллерах. Так, 128 МБ у нас присутствует лишь у LSI, у HighPoint и Promise ее уже 256 МБ, а у остальных и вовсе 512 МБ.
Более того, в контроллере Areca память не впаяна, а установлена отдельной планкой. Упустить такой шанс мы не могли — этот контроллер дважды прошел все тесты: с базовым объемом памяти 512 МБ и с установленным 2-ГБ модулем. Право слово, результаты получились крайне неожиданные.
Все контроллеры поддерживают подавляющее большинство наиболее популярных типов массивов, в том числе и двухуровневых, например RAID50. Конечно, можно тщательно поискать разницу, и найти, что кто-то умеет RAID3, а кто-то не знает о существовании RAID1E, но это сложно засчитать за серьезные различия, поскольку интересно лишь крайне узкому кругу пользователей. Так же у всех шести испытуемых в наличии по серьезному набору драйверов под различные операционные системы. Каждый из них может похвастаться и достаточно развитой системой управления, наблюдения и настройки из-под операционной системы. Все эти системы используют сетевые протоколы, обеспечивая взаимодействие не только с локальными, но и с удаленными, то есть находящимися на других машинах, контроллерами. Кстати, именно наличие уже существующей инфраструктуры зачастую определяет выбор марки контроллера при создании очередной подсистемы: гораздо удобнее иметь удобное и логичное централизованное управление, чем поддерживать одновременно оборудование нескольких марок.
Все перечисленные контроллеры поддерживают установку батареи питания кэша (BBU) — мы вам крайне рекомендуем всегда пользоваться ей. Поверьте, ее стоимость гораздо ниже стоимости хранящейся на массиве информации, которую вы рискуете потерять в случае любого перебоя с питанием при включенной отложенной записи. Что же происходит с производительностью при отключении отложенной записи вы можете увидеть на примере результатов Promise. В этом контроллере невозможно активировать отложенную запись, если нет батареи, а последняя на наших задворках вселенной за прошедшие полгода так и не появилась. Да, это ставит контроллер в заведомо проигрышное положение, но что поделать.
Методика тестирования
Во время тестирования использовались следующие программы:
IOMeter версии 2003.02.15;
WinBench версии 99 2.0;
FC-Test версии 1.0;
Тестовая система была следующей:
корпус Intel SC5200;
системная плата Intel SE7520BD2;
два процессора Intel Xeon 2,8 ГГц на 800-МГц системной шине;
2 х 512 МБ регистровой памяти DDR PC3200 ЕСС
жесткий диск IBM DTLA-307015 объемом 15 ГБ в качестве системного диска;
видеокарта — встроенное видео ATI Rage XL
операционная система Microsoft Windows 2000 Professional SP4
Kонтроллеры во время тестов устанавливались в слот PCI-Express x8 на материнской плате. Для тестирования использовались жесткие диски Fujitsu MBA3073RC, установленные в штатные салазки корпуса SC5200 и закрепленные в них четырьмя винтами за нижнюю грань. Все контроллеры тестировались с использованием восьми жестких дисков в следующих режимах:
RAID0;
RAID10;
RAID5;
RAID6;
К сожалению, нам пришлось отложить в сторону результаты на массивах из четырех дисков а также показатели деградировавших массивов — данных и без того будет преизряднейше.
Размер страйпа на массивах всех типов задавался равным 64 кБ.
IOMeter: Database
Как всегда, начнем с, пожалуй, наиболее интересного с точки зрения нагрузки на контроллер, теста — "Database", с помощью которого мы выясняем способность контроллеров работать с потоками запросов на чтение и запись 8-кБ блоков данных со случайной адресацией. В ходе тестирования происходит последовательное изменение процентного соотношения запросов на запись от нуля до ста процентов (с шагом 10 %) от общего количества запросов и увеличение глубины очереди команд от 1 до 256.
Численные результаты измерений здесь и далее вы можете, при желании, найти в предыдущих статьях, посвященных подробным обзорам каждого контроллера, мы же будем работать лишь с графиками и диаграммами.
Итак, минимальная нагрузка, то есть глубина очереди запросов равна единице.
Казалось бы, ну откуда может взяться различимая разница в RAID0, на самой простой нагрузке? Ответ прост — отложенная запись. Если на чтении все массивы очень схожи, то при большом количестве запросов на запись выигрывать будет тот, кто сумеет быстрее и больше «спрятать» в буферной памяти, а потом по-быстрому «раскидать» это по дискам. В данной категории абсолютным лидером становится Adaptec, а в проигравшие уходят LSI и Promise.
Схожую картину мы наблюдаем и в случае RAID10 — все те же лидеры и проигравшие в зоне нагрузок с большой долей запросов на запись. Особо плохо себя чувствует LSI — откровенно пасуя перед чистой записью.
Однако, появилась разница и на чтении — причиной тому является та самая выборка более удачного диска в зеркальных парах. В данном случае заведомо лучше других оказался HighPoint. В случае чистого чтения великолепен еще и LSI, но он хуже справляется со смешанными нагрузками.
А вот и пошли массивы с вращающейся четностью. Одно дело записать одиночный блок в случае массивов RAID0 и RAID10, и совсем другое — при использовании RAID5, ведь каждая операция записи на деле превращается в чтение двух блоков, две операции XOR и две же операции записи. Явно лучше других это испытание проходит Adaptec. Неплох и контроллер 3ware в случае чистой записи, но на смешанных нагрузках он заметно уступает конкурентам. А вот аутсайдерами стали HighPoint, у которого явные проблемы с кэшированием запросов и Promise, начисто лишенный отложенной записи. Катастрофическое падение производительности у последнего сложно не заметить.
Точно такую же ситуацию мы наблюдаем и в RAID6, лишь уменьшились абсолютные значения, но вот поведение контроллеров осталось тем же, что и в RAID5. Добавление в алгоритм расчета второй контрольной суммы и ее запись снижает скорость, но уже не вносит радикальных изменений, поскольку мощности процессоров вполне хватает.
Но мы упустили из поля зрения поведение контроллера Areca с 2 ГБ установленной памяти. Впрочем, это и немудрено — его результаты практически точно во всех случаях повторяют данные, полученные с 512 МБ памяти. Так что же, рекордов скорости не будет?
Но давайте увеличим нагрузку до 16 запросов в очереди.
В RAID0 контроллеры демонстрируют поразительное единодушие — четыре графика практически сливаются. Но Adaptec явно выделяется своей более эффективной отложенной записью. И списать это на больший объем памяти невозможно — у 3ware и Areca ее как минимум не меньше (да, дополнительные 1,5 ГБ снова себя никак не проявляют), а у последней еще и процессор точно такой же.
В проигравшие снова ушли LSI и Promise, но стоит отметить, что проигрыш не так уж и велик.
Ух ты, какое разнообразие характеров дают разнообразные сочетания алгоритмов отложенной записи, переупорядочивания запросов и выборки лучшего диска. На записи снова «впереди планеты всей» Adaptec — этот контроллер явно вознамерился доказать, что у него лучшая отложенная запись. А вот LSI на записи откровенно плох — у него явные проблемы с кешированием. И вряд ли это можно оправдать минимальным, среди присутствующих, объемом памяти.
Зато тот же самый LSI успешно борется с HighPoint и 3ware за медаль «отличное чтение с зеркальных массивов». Обратите внимание, насколько велик отрыв этих трех массивов от конкурентов.
Одни контроллеры для записи, другие для чтения — планирование подсистемы сервера крайне неплохо начинать с определения характера будущей нагрузки. Впрочем, универсалом в данном случае можно назвать 3ware — его результаты стабильно хороши во всем диапазоне.
Наличие очереди позволяет контроллерам в той или иной мере успешно кэшировать запросы или выполнять несколько действий одновременно. Насколько успешно? По-разному: Adaptec держится молодцом, а вот HighPoint справляется с записью почти в два раза хуже (заметьте, при точно таком же процессоре), но хотя бы уже не провально, как это было в случае минимальной глубины очереди. Ну и можно только посочувствовать Promise — без отложенной записи ему приходится крайне тяжко.
И снова схожую ситуацию мы видим в случае RAID6. Правда, появился один интересный момент: при всей своей великолепной записи Adaptec в случае подавляющего превосходства запросов на чтение проигрывает всем остальным. Закономерность или случайность — посмотрим на тяжелых нагрузках.
К сожалению, практически нечего говорить о 2-ГБ варианте Areca — увеличенный объем памяти себя не проявляет вообще никак. Странное, крайне странное поведение.
С тяжелыми нагрузками все контроллеры успешно справились, но каждый по-своему. Adaptec по-прежнему успешно демонстрирует лучшие способности по записи, 3ware захватил лидерство на чтении, а Areca аккуратно влез между ними на смешанных нагрузках, продемонстрировав, пожалуй, наиболее уравновешенное поведение.
Забавно, но схожая расстановка сил сложилась и в случае массивов RAID10. Стан лидеров остался вообще без изменений, а из остальных выделился LSI. Причем, не в лучшую сторону — его проблемы с записью на тяжелой нагрузке выразились в очень серьезное падение производительности на всех нагрузках, где есть операции записи.
Огромная глубина очереди явилась спасительной для Promise — на таких глубинах очереди часть сортировки запросов происходит еще в драйвере до поступления в контроллер, что позволило контроллеру подтянуть свои результаты до уровня HighPoint.
Adaptec по-прежнему лидирует на записи... и снова, как в случае RAID6 с глубиной в 16 запросов, не так уж и хорош при подавляющем превосходстве чтения. Видимо, это действительно особенность его работы — все силы брошены на запись.
В случае RAID6 лидеры опять все те же, а вот в явные аутсайдеры спустился HighPoint — видимо, что-то с алгоритмами у него все же не в порядке, где-то в них есть серьезные и беспричинные затраты ресурсов.
IOMeter: Disk Response Time
Для измерения времени отклика мы в течении десяти минут при помощи IOMeter отправляем на накопитель поток запросов на чтение или запись блоков данных по 512 байт при глубине очереди исходящих запросов, равной единице. Количество запросов, обработанных накопителем, превышает шестьдесят тысяч, так что мы получаем устоявшееся время отклика накопителя, не зависящее от объема буферной памяти.
Время отклика на чтении — довольно забавная величина. С одной стороны, она очень кратко характеризует производительность дисковой подсистемы, вынести только на основании нее какое-либо суждение практически невозможно. А с другой — именно эта величина характеризует скорость реакции накопителя, то, насколько быстро он отзовется на запрос и позволит системе использовать полученные данные. В случае RAID-массивов эта величина в первую очередь зависит от времени отклика используемых накопителей. Но, как не сложно видеть, от контроллера она тоже зависит: борящиеся за звание лучших 3ware и Areca немного, но все же выигрывают у остальных — их отрыв от худшего (которым стал Promise) составляет около половины миллисекунды. Казалось бы, какие мелочи, но как их сложно получить, эти самые 0,5 мс выигрыша, в случае, когда время отклика меньше 7 мс. Как не крути, а 8 % выигрыша эти два контроллера записали на свой счет.
Отдельных слов заслуживают успехи HighPoint и LSI на массивах с использованием зеркалирования. За счет крайне эффективного выбора «удачного» диска в парах эти контроллеры сумели отыграть еще по одной миллисекунде. Великолепный результат, отличные алгоритмы — всем остальным производителям явно стоит обратить внимание на эти достижения. Обычно, именно массивы RAID10 используются для хранения баз данных и если ваша база не умещается целиком в оперативную память сервера, то не стоит пренебрегать столь приятной возможностью улучшить ее производительность.
В случае времени отклика при записи лидера было достаточно легко предсказать — им закономерно стал Adaptec, на протяжении всего теста «IOMeter:Database» демонстрировавший великолепную производительность на записи. Понемногу, но на всех массивах именно этот контроллер выигрывает у равных по классу конкурентов.
Откровенно печалят результаты HighPoint и Promise на массивах RAID5 и RAID6 — проблемы с отложенной записью у первого видны невооруженным взглядом, а ее отсутствие у второго вылилось в чудовищное (более, чем на порядок!) увеличение времени отклика.
Любопытно выглядят результаты Areca с 2 ГБ памяти: в трех случаях они опять повторяют значения, полученные с 512 МБ, но вот в RAID6 2 ГБ смотрятся уже заметно выигрышнее. Возможно, контроллеру просто не хватает нагрузки, чтобы полноценно использовать эти самые 2 ГБ — с определенной точки зрения, контроллеры у нас работают в щадящем режиме, на каждый диск приходится по отдельному каналу данных, экспандеры не используются. Возможно, что мы бы увидели всю мощь 2 ГБ памяти в тех случаях, когда на каждом канале висит по несколько дисков и пропускной способности 3 Гбит/с на всех не хватает (поверьте, ситуация вовсе не умозрительная — именно такое и происходит в тех случаях, когда на один внешний разъем вешается полка с двумя десятками дисков). Но увы, у нас нет возможности проверить наше предположение, а пока 2 ГБ себя никак не проявляют.
IOMeter: Random Read & Write
Оценим теперь зависимости производительности контроллеров в режимах чтения и записи с произвольной адресацией от размера используемого блока данных.
Результаты, полученные при работе со случайной адресацией данных, мы рассматриваем в двух вариантах. На блоках малого размера строятся зависимости количества операций в секунду от размера используемого блока. А на больших блоках вместо количества операций в качестве критерия производительности используется скорость, измеренная в Мегабайтах в секунду. Такой подход позволяет оценить работу массивов сразу в двух типичных случаях нагрузки: работа малыми блоками характерна для баз данных и для нее более важно количество операций в секунду, чем привычная скорость; а вот работа большими и очень большими блоками близка к реальной работе с файлами малых размеров и здесь уже на первый план выходит именно скорость в привычных мегабайтах в секунду.
Начнем с чтения.
Хорошо идут, плотненько! Да, в RAID0 особой разницы ожидать и не приходится. И все же, Areca и 3ware справляются с небольшими запросами чуть лучше остальных.
В RAID10 свое неоспоримое преимущество демонстрируют LSI и HighPoint — великолепные алгоритмы чтения с зеркальных пар этих контроллеров не оставляют конкурентам никаких шансов. Среди остальных же чуть лучшими результатами выделяется 3ware, причем его выигрыш растет с увеличением размера используемых блоков.
В случае массивов RAID5 и RAID6 все контроллеры снова легли плотной группой — оптимизировать, в общем-то, нечего, знай выхватывай информацию поочередно с дисков, а про контрольные суммы можно и не вспоминать.
На больших блоках даже в случае RAID0 начинает появляться заметная разница — сказывается влияние линейных скоростей и упреждающего чтения. В результате лидерство захватывает LSI, а чуть позади держится 3ware. С определением проигравших все сложнее — на блоках, размером несколько мегабайт, неудачно выступают HighPoint и Areca, но потом они очень бодро набирают скорость, в результате уверенно обгоняя Promise и Adaptec.
Areca снова преподносит сюрпризы: с 512 МБ памяти она читает быстрее, чем с 2 ГБ. У нас есть лишь одно предположение: возросший объем кэша увеличил задержки на поиск в нем, что и вызвало этот эффект. Мы не претендуем на истину, но других объяснений мы попросту не видим.
На массивах RAID10 при чтении сравнительно больших блоков выбор удачного диска уже не является выигрышной стратегией и в итоге мы видим смену лидеров. На первое место выбрался 3ware, следом за которым пристроился LSI.
Откровенно разочаровывает Areca — в обоих случаях она показывает откровенно малообъяснимое снижение скорости. Видимо, и в ее прошивке есть недоработки, и именно их мы сейчас видим.
Расстановка сил в RAID5 повторяет виденное в RAID0, что, в общем, и неудивительно.
Не сильно она меняется и в RAID6, разве что Adaptec несколько выпадает на очень больших блоках из общей картины, недостаточно быстро набирая скорость.
Перейдем к операциям записи со случайной адресацией.
А здесь уже в чистом виде работает запись. Причем, судя по всему, выигрывает тот, кто держит одновременно большее количество линий кэширования. В итоге первое место за явным преимуществом достается Adaptec — он упорно настаивает, что его запись лучшая вот уже не первый тест. В явные проигравшие ушли LSI и Promise.
Интересно, что Areca с 2 ГБ снова проигрывает аналогу с меньшей памятью (какой там выигрыш из-за большего объема, что вы). Неужели и это вызвано усложнившимся поиском в памяти?
Мда, похоже, что про лидера на записи можно уже и не говорить. А вот о проигравших — еще как стоит. Если низкий результат Promise можно объяснить отсутствием у него отложенной записи, то вот какими недоработками вызвано столь серьезное падение производительности у LSI в RAID10 — нам неизвестно.
В массивах RAID5 и RAID6 контроллеры ведут себя крайне схоже. Откровенно лидирует на малых блоках Adaptec, следом за которым с внушительным отставанием идет 3ware. У последнего мы видим интересную особенность: на блоках по 512 байт его производительность ниже, чем на 2-кБ блоках — видимо, в данном случае мы видим именно что предел производительности своеобразной архитектуры этого контроллера. Впрочем, эти особенности не идут ни в какое сравнение с проблемами HighPoint и Promise. HighPoint не в силах справиться с записью очень мелких блоков — при снижении размера блока ниже 32 кБ его производительность очень заметно падает. Процессор у него такой же, как и у Adaptec — дело явно не в его мощности. Контроллеру Promise еще хуже — без отложенной записи он просто захлебывается под потоком мелких запросов.
На записи больших блоков мы видим великолепное разнообразие характеров. В первую очередь, хочется отметить проблемы Adaptec — насколько великолепно этот контроллер справлялся с потоком мелких блоков со случайной адресацией, настолько же плохо ему далась запись больших блоков. Такое впечатление, что у него стоит ограничитель скорости на 120 МБ/с. Полностью схожий с ним по характеристикам Areca, напротив, вырывается на первое место. При этом тот же самый Areca с 2 ГБ памяти уже заметно хуже, и, кажется, тоже нашел свой ограничитель...
Наконец, LSI и Promise демонстрируют малообъяснимое, зато синхронное снижение скорости на 512-кБ блоках. При этом если Promise потом, с увеличением блока, вовсю стремится догнать лидеров, то LSI ведет себя излишне скромно. Почему эти контроллеры испытывают проблемы с записью полных страйпов (на восьми дисках по 64 кБ мы как раз и набираем 512 кБ) нам абсолютно непонятно.
На записи в RAID10 таких серьезных проблем нет уже ни у кого, разве что Promise снова демонстрирует некоторое снижение скорости в той же области. Лидерует снова Areca, причем на этот раз — синхронно, в обоих вариантах.
А на массивах с записью контрольных сумм перед нами опять разброд и шатания, хотя и не настолько сильные. Снова в непонятные барьеры уперлись Adaptec и Areca c 2 ГБ памяти, а в случае RAID6 к ним присоединился еще и LSI. Заметно хуже «успешных» контроллеров (которые, кстати, идут плотной группой) проходит тест Promise. Запись больших блоков дает ему возможность работать полными страйпами, что несколько выправляет ситуацию с отсутствием у него отложенной записи (напомню, что при записывании полного страйпа контрольная сумма рассчитывается лишь один раз на весь страйп, что резко снижает накладные расходы), но все же не в силах дотянуть его производительность до уровня остальных.
IOMeter: Sequential Read & Write
Оценим способности контроллеров в последовательных операциях. В данном тесте на накопители подается поток запросов с глубиной очереди команд, равной четырем. Раз в минуту размер блока данных увеличивается. В итоге мы получаем возможность проследить зависимость линейных скоростей чтения и записи массивов от размеров используемых блоков данных и оценить максимальные достижимые скорости.
Максимальную скорость чтения в RAID0 все контроллеры, кроме 3ware (на результатах которого явно сказались особенности архитектуры), продемонстрировали на одном уровне. Но вот достигли они ее на блоках разного размера: Ставшие лидерами Areca и HighPoint вышли на нее уже на 16-кБ блоках, LSI потребовался размер уже 64 кБ, Adaptec — 128 кБ, а Promise и вовсе 512 кБ (полный страйп из восьми дисков по 64 кБ).
Линейное чтение с RAID10 наглядно демонстрирует умения контроллеров распараллеливать чтение на два диска в зеркальных парах. Идеальное поведение продемонстрировать не смог никто, но явно лучше и быстрее остальных в этом тесте Areca (кстати, заметьте, что с 2 ГБ памяти, что с 512 МБ — мы снова видим одинаковые результаты). Ей же снова принадлежит и лидерство по скорости чтения блоками малых размеров. Неплохо ведут себя еще и Adaptec и HighPoint, но последний слишком уж требователен к размеру блока. А вот Promise, LSI и 3ware в данном тесте откровенно разочаровывают.
Не меняется расстановка сил и при чтении с массивов RAID5 и RAID6 — насколько хорошо Adaptec справлялся со случайной записью, настолько Areca и HighPoint великолепно ведут себя на линейном чтении.
Откровенно разочаровывает 3ware — у него и максимальная скорость ниже, чем у остальных, и на малых блоках скорость невысока. И на очень больших — явные проблемы.
На записи в RAID0 в лидеры выходит HighPoint. Areca держится близко, но все же чуть хуже. Причем, только вариант с 512 МБ памяти — 2-ГБ вариант неожиданно потерял скорость вообще. Что с ним случилось и почему мы не в силах даже предполагать. Впрочем, такие же проблемы постигли Adaptec — он крайне медленно пишет, словно у нас не массив, а одиночный диск.
Те же проблемы у Areca c 2 ГБ памяти и на записи в RAID10. А вот Adaptec ведет себя странно — он лучший из «середнячков» на малых блоках, при этом лучший в абсолютном зачете по максимальной скорости, и при всем при этом страдает от малообъяснимого провала скорости на 128-кБ блоках. По сумме впечатлений лучше остальных выглядит Areca c 512 МБ — у нее отличные результаты на малых блоках и очень стабильная и достаточно высокая скорость на больших. А вот HighPoint от нее снова отстал — у него проблемы на блоках большого размера.
В RAID5 успешная линейная запись далась немногим — радуют глаз лишь Areca (причем лишь с базовым объемом памяти, у 2 ГБ опять внушительные проблемы) да HighPoint. LSI и 3ware просто заметно отстают от лидеров, у Adaptec снова какие-то проблемы, ну а про Promise и говорить нечего — хоть какая-то ощутимая скорость у него появляется лишь на блоках 128 кБ и выше.
В RAID6 ситуация во многом напоминает RAID5, так что назовем лишь основные отличия. Areca успешно работает уже в обоих вариантах, HighPoint неожиданно теряет скорость на больших блоках, там же появляются очень серьезные проблемы у LSI. У Adaptec и Promise все по-прежнему печально. Но если крайне низкие результаты Promise точно объясняются отсутствующей отложенной записью, то что случилось с Adaptec — загадка.
IOMeter: Multi-thread Read & Write
Данный тест позволяет оценить поведение контроллеров при многопоточной нагрузке. В ходе него эмулируется ситуация, когда с накопителем работает от одного до четырех приложений, причем количество запросов от них изменяется от одного до восьми, а адресные пространства каждого приложения, роли которых выполняют worker-ы в "IOMeter", не пересекаются.
Как всегда, в качестве наиболее показательных и интересных мы рассмотрим диаграммы записи и чтения для ситуаций с глубиной очереди в один запрос. Именно такая ситуация обычно и складывается в реальных условиях. Особую интригу дает то, что, как показывают наши наблюдения, далеко не все контроллеры способны на минимальной глубине очереди продемонстрировать максимальную скорость.
В RAID0 явно лучше других на чтении одного потока выглядят Areca и HighPoint — их потери минимальной глубины очереди минимальны, чего не скажешь об остальных. Adaptec и LSI демонстрируют лишь около половины максимальной возможной на них скорости, а Promise и 3ware и вовсе лишь четверть.
Увеличение числа потоков до двух, трех и четырех наглядно показывает, что на двух потоках все контроллеры заметно теряют в скорости, а вот в дальнейшем разительных изменений уже не происходит. В целом же победителем из этого теста выходит Areca — на всех нагрузках этот контроллер демонстрирует максимальные скорости. А вот компаниям Promise и 3ware явно стоит исправлять ситуацию — скорости их моделей слишком малы.
На одиночном потоке в RAID10 расстановка сил такая же, как и в RAID0, только превосходство Areca над остальными заметно гораздо сильнее, поскольку он лучше справляется с попеременным чтением с зеркальных пар. Этому же контроллеру снова гораздо лучше других удается чтение нескольких потоков. Причем обратите внимание, насколько контроллер быстрее читает два потока — вот оно, эффективное разделение потоков на разные диски в зеркалах.
Из остальных приличными результатами выделяются лишь Adaptec (к сожалению, лишь при двух потоках) и HighPoint на трех и четырех потоках чтения.
Чтение с массивов RAID5 и RAID6 проходит весьма схоже: с одним потоком лучше других справляются Areca и HighPoint. С несколькими потоками чуть лучше других справляется HighPoint, но в целом все массивы ведут себя неплохо, за исключением Promise и 3ware, снова демонстрирующих весьма невысокие скорости.
С записью на RAID0 картина не менее забавная: с одной стороны, мультипоточная запись проще, поскольку ее заметно облегчают механизмы отложенной записи. С другой, как не сложно видеть, даже запись одного потока при минимальной глубине очереди не для всех является простой нагрузкой. О действительно высоких скоростях можно гооврить лишь у Areca и HighPoint. Причем только Areca сохраняет столь же высокую скорость (и даже чуть больше) на нескольких потоках. А вот расстраивают низкими результатами нас уже три контроллера: к Promise (причины его низких результатов на записи уже завязли в зубах) присоединились Adaptec и LSI.
Все в порядке у Areca со скоростью и в случае записи на RAID10. на этом же типе массивов исправился и Adaptec — при нескольких потоках он успшно соревнуется с Areca за звание лидера. В числе проигравших этот тест снова LSI и Promise.
И снова мы видим схожее поведение контроллеров на массивах RAID5 и RAID6. При одном потоке на запись сильно лучше остальных выглядят Areca и HighPoint, но при увеличении числа потоков Areca остается в лидерах в гордом одиночестве. Любопытно, что на этот раз версия с 2 ГБ памяти сильно отличается. Жаль только, что не в лучшую сторону — ее скорость на всех нагрузках более чем в два раза ниже. Все же, странное поведение демонстрирует Areca при увеличении набортной памяти, такое впечатление, что она на такие ее объемы попросту не рассчитана.
Что же касается результатов Promise, лишенного отложенной записи, то они на такой нагрузке смехотворно малы.
IOMeter: Webserver, Fileserver и Workstation
В данной группе тестов накопители тестируются под нагрузками, характерными для серверов и рабочих станций.
Напомню, что в "Webserver" и "Fileserver" эмулируется работа накопителя в соответствующих серверах, в то время как в "Workstation" мы имитируем работу накопителя в режиме типичной нагрузки для рабочей станции, с ограничением максимальной глубины очереди в 32 запроса. Естественно, что "Webserver" и "Fileserver" — не более чем собирательные названия; первый будет весьма схоже эмулировать нагрузку любого сервера, работающего, фактически, только с запросами на чтение, а второй — сервера с преобладанием запросов на чтение, но при этом с определенной, заметно отличной от нуля долей запросов на запись.
Чтобы не засорять статью совсем уж безумным количеством графиков, в этом разделе мы их все выложили на
отдельную страницу, а говорить будем на основе диаграмм.
С нагрузкой, состоящей исключительно из запросов (преимущественно случайных) на чтение подавляющее большинство массивов справляется одинаково хорошо — разница составляет лишь 5 %. Причем тип массива особой роли не играет — RAID6 работает так же быстро, как и RAID0. Но есть одно весомое исключение: явно большей производительностью отличаются массивы RAID10 на тех контроллерах, которые умеют очень эффективно искать «удачный» диск в зеркальных парах, то есть на 3ware, HighPoint и LSI.
Появление в нагрузке запросов на запись приводит уже к заметному разнообразию в результатах. Во-первых, RAID5 и RAID6 начинают заметно отставать от RAID0 и RAID10. Во-вторых, начинают сказываться индивидуальные особенности контроллеров. Так, в RAID10 по-прежнему лучшими являются 3ware и HighPoint (причины «выпадения из обоймы» LSI просты, достаточно посмотреть на график — у этого контроллера с определенной глубины очереди перестает расти производительность). Как и следовало ожидать, Promise гораздо хуже остальных справляется с массивами с записью контрольных сумм. На этих же массивах обозначилось и отставание HighPoint от остальных.
Схожая ситуация наблюдается и в «Workstation», но ее еще больше обостряет большее количество запросов на запись и весьма разнящаяся картина запросов в нагрузке. В итоге в RAID0 лидерство захватывает Areca. В RAID10 по-прежнему HighPoint и 3ware заведомо лучше других. Ну а в RAID5 и RAID6 отставание HighPoint и Promise приобретает очень значительные размеры.
Та же самая нагрузка, но запущенная на массивах, ограниченных лишь 32 Гб объема (используются лишь самые быстрые зоны на дисках, время отклика минимально), ощутимо меняет расстановку сил. Так, в RAID0 появились явные отстающие — ими стали LSI и Promise. В RAID10 уменьшилось до минимума преимущество 3ware и HighPoint — выбор удачного диска уже практически не важен, ведь отклик везде минимален. Зато появился отстающий — им снова стал Promise. В случае RAID5 и RAID6 общая производительность возросла, но отставание HighPoint и Promise никуда не делось.
FC-Test
Завершает нашу сегодняшнюю программу тестирования FileCopy Test. На накопителе создается два раздела по 32 ГБ, размечаемые на двух этапах тестирования сначала в NTFS, а затем в FAT32, после чего на разделе создается определенный набор файлов, считывается, копируется в пределах раздела и копируется с раздела на раздел. Время всех этих операций фиксируется. Напомним, что наборы "Windows" и "Programs" включают в себя большое количество мелких файлов, а для остальных трех паттернов ("MP3", "ISO" и "Install") характерно меньшее количество файлов более крупного размера, причем в "ISO" используются самые большие файлы.
Не забывайте, что тест копирования не только говорит о скорости копирования в пределах одного накопителя, но и позволяет судить о его поведении под сложной нагрузкой. Фактически, во время копирования накопитель одновременно работает с двумя потоками, причем один из них на чтение, а второй на запись.
Мы будем подробно рассматривать лишь значения, достигнутые на наборах файлов"Install", "ISO" и "Programs" в NTFS, являющихся более характерными для обычного использования массивов. Остальные результаты, вы, при желании, как всегда можете узнать в таблицах, имеющихся в статьях по каждому отдельному контроллеру
Запись набора файлов «Install» можно четко разделить на два случая. На массивах RAID0 и RAID10 выигрывают Areca и Adaptec, а в проигравших помимо вполне ожидаемо Promise оказывается LSI.
На массивах RAID5 и RAID6 пару Adaptec по лидерству составляет уже 3ware. LSI уже не так уж и плох, зато Promise откровенно беспомощен.
Обратите внимание, с файлами Areca c 2 ГБ памяти справляется сильно хуже исходного контроллера. Чудеса да и только.
С записью больших файлов Areca справляется явно лучше других в RAID0 и RAID10, а вот на массивах с контрольной суммой с ней успешно спорит HighPoint. Во всех случаях, кроме RAID0 лишь сожаление вызывают результаты Adaptec и LSI — они слишком малы. Ну а про Promise мы и вовсе молчим — в тесте на запись у него шансов нет.
А вот с записью файлов все справляются примерно одинаково. Причем одинаково медленно — обратите внимание, насколько заметно падает скорость записи при уменьшении размеров файлов.
Чтение смешанного набора «Install» в подавляющем большинстве случаев чуть лучше удается контроллерам LSI и HighPoint. Что же касается отстающих, то ими стали 3ware и Promise (и здесь ему уже не оправдаться отсутствующей отложенной записью).
На больших файлах откровенно «зажигает» Areca — даже идущий следом за ней HighPoint сложно назвать ее конкурентом. Особенно примечательны результаты в RAID10, где Areca наглядно демонстрирует, зачем надо уметь попеременно читать с дисков.
А вот отстающие все те же — 3ware и Promise, да и LSI выглядит откровенно слабым при чтении с RAID10 (расплата за отличную выборку удачного диска?).
Те же проигравшие у нас и на мелких файлах. А вот лидеры новые: за первое место борются LSI и HighPoint.
При копировании смешанного набора «Install» на трех из типов массивов явно лидирует группа из Adaptec, HighPoint и LSI. А вот в RAID10 LSI выбывает из лидеров, зато туда входит, выбиваясь сразу на первое место, Areca. Проигравший же во всех случаях один — страдающий от отсутствия отложенной записи Promise.
На больших файлах лидеров всего два: HighPoint и Areca. Последняя гораздо быстрее в RAID10, зато чуть отстает на остальных массивах. Остальные этим контроллерам, честно говоря, слабые конкуренты.
Копирование мелких файлов в «Programs» всем контроллерам дается достаточно тяжело. Хотя чуть лучше других выглядят, пожалуй, LSI и Adaptec.
Подведение итогов
Пожалуй, основным итогом этого тестирования будет довольна банальная мысль: идеала не существует. У всех контроллеров есть свои достоинства и недостатки, так что лучше всего исходить из того, что некоторые контроллеры лучше подходят под определенные нагрузки, чем другие. Главное — не забывать, что прошивки способны порой разительно изменить поведение контроллеров. Мы же сейчас раздадим награды и выскажем мнение, руководствуясь исключительно впечатлениями от того, что продемонстрировали контроллеры на текущих прошивках.
Пожалуй, наилучшие ощущения о себе оставили Adaptec RAID ASR-5805 и Areca-1680x-16. Именно эти две модели наиболее стабильно проходили тесты и у них меньше всего крупных недоработок в прошивках. В целом, Adaptec чуть лучше подходит для организации баз данных, в то время как Areca более удачно справляется с многопоточными операциями и работой с файлами. В любом случае, оба они являются вполне достойными представителями современных контроллеров. Любопытно, но построены они, фактически, на очень схожих платформах — у них одинаковый процессор и равный объем оперативной памяти.
Да, Areca позволяет сменить память и увеличить ее объем, но наше тестирование не показало никакого положительного эффекта от этого действия, скорее наоборот — версия с 2 ГБ часто оказывалась чуть хуже. Впрочем, повторимся: возможно, что 2 ГБ продемонстрируют себя в полной мере, при подключении контроллер дисков через экспандеры, когда пропускной способности интерфейса будет уже не в полной мере хватать для всех дисков.
Несколько неоднозначное впечатление оставили о себе 3ware 9690SA-8I и HighPoint RocketRAID HPT4320. Первый был бы весьма неплохим контроллером, но его изрядно портят низкие результаты при работе с файлами, так что на наш взгляд его стезя — базы данных, где он отлично проявит себя как сбалансированное и мощное устройство. У второго прекрасные алгоритмы работы с RAID10 и очень неплохая запись, но он все же имеет слишком много проблем с массивами с записью контрольных сумм. Хочется надеяться, что в последующих прошивках они будут решены, и в перспективе выбор хороших контроллеров станет на одну модель больше.
Что касается LSI MegaRAID SAS 8708EM2 и Promise SuperTrak EX8650, то в своем текущем виде они разочаровывают. Конечно, Promise был у нас на тестах в несколько заведомо худших условиях из-за неработающей отложенной записи, но все же и на чтении у него зачастую слишком низкие результаты по сравнению с конкурентами. А у LSI попросту слишком много недоработок, хотя работа с мелкими файлами и великолепная выборка удачного диска в зеркальных парах впечатляют. Но прошивки выпускаются, а значит шансы есть у всех. Опять же, повторимся: во многих случаях наличие уже существующей инфраструктуры из работающих контроллеров какой-либо фирмы имеет гораздо большее значение, чем производительность, если только последняя не страдает совсем уж непоправимым образом.
Другие материалы по данной теме
Тестирование SAS RAID-контроллера Areca ARC-1680ix-16
Тестирование SAS RAID-контроллера HighPoint RocketRAID HPT4320
Тестирование SAS RAID-контроллера LSI MegaRAID SAS 8708EM2
Тестирование SAS RAID-контроллера Adaptec RAID ASR-5805
Тестирование SAS RAID-контроллера 3ware 9690SA-8I
Тестирование SAS RAID-контроллера Promise SuperTrak EX8650