ИТ-технологии для профессионалов

Показаны сообщения с ярлыком тест. Показать все сообщения
Показаны сообщения с ярлыком тест. Показать все сообщения

пятница, 27 марта 2015 г.

Производительность LSI MegaRAID 9361 с SSD

После обновлений микрокода эти контроллеры сильно прибавили шустрости:


Access Random RAID Ctrl cache Queue size IOps avg io time (ms) max io time (ms)
100% read 100% RAID0 off 1024 290000 0.77 7.5
67% read 100% RAID0 off 1024 195000 5.3 23
67% read 100% RAID0 off 256 195000 1.3 16
67% read 100% RAID0 off 128 190000 0.67 16
0% read 100% RAID0 off 128 96000 1.4 100
67% read 100% RAID0 on 1024 69000 14.6 21
100% read 100% RAID10 off 1024 290000 0.63 6.5
67% read 100% RAID10 off 1024 122000 8.3 84
67% read 100% RAID10 off 256 125000 2.05 20
67% read 100% RAID10 off 128 120000 1.07 18
67% read 100% RAID10 on 256 56500 4.5 15
0% read 100% RAID10 off 128 48000 2.66 18.5
67% read 100% RAID5 off 128 82000 1.56 26
67% read 100% RAID5 on 128 35000 3.7 16
0% read 100% RAID5 on 128 12500 9.8 100
0% read 100% RAID5 off 128 33000 3.9 25
0% read 0% RAID1 off 1 11657 0.085
0% read 0% RAID1 on 1 17220 0.057
0% read 0% RAID10 on 1 17200 0.057
0% read 0% RAID10 off 1 11700 0.085


Тестировался контроллер LSI MegaRAID 9361-8i (FW 24.7.0-0026), 6шт SSD Seagate 1200 800GB, подключены через 6G экспандер. Strip 256k, тестовые запросы IOmeter'a по 4к.

Краткая выжимка:
- максимальная производительность на чтении (RAID0) - 290k IOps, на записи - 96k IOps;
- включение кэша контроллера проваливает производительность в 2-3 раза;
- RAID10 практически равен RAID0 на чтении и вдвое медленнее на записи (все по канонам);
- RAID5 в среднем медленнее RAID10 в 1,5-2 раза.
 

Публикуется по результатам теста Максима Мухина.

Читать дальше ...

вторник, 22 сентября 2009 г.

Intel RAID RS2BL080 6GB и 8 SAS 15k с разными FW контроллера

Компания Intel любезно предоставила нам этот контроллер на короткое время, за которое мы тестировали его в первую очередь на SSD Intel X-25 E, но также и сделали несколько тестов на обычных SAS дисках. К сожалению контроллер был у нас не очень долго и мне не удалось посмотреть все, что хотелось, но было сделано несколько полных прогонов с дисками SAS. При этом эти два прогона проходили на разных версиях прошивки контроллера сначала это была 649 версия, затем был сделан апгрейд в 673 версию и повторены часть из этих тестов.

Сначала эти результаты остались без обработки, но сейчас выдалась минута и я их перерисовал в графики. Результаты достаточно интересные, причем они получаются интересны еще и в отношении друг-друга. Здесь я и решил их опубликовать, в сравнительном режиме одну версию прошивки и другую.

Условия теста.

Из восьми SAS Hitachi 15k 146GB делался RAID 10, поскольку контроллер двух портовый половинки зеркала располагались на разных портах. Настройки Array на контроллере – следующие:

image

Собственно все настройки по умолчанию для 10 RAID.

Тест проводился Iometer’ом, профиль в обоих случаях был одинаковый. Вся нагрузка создавалась 4-мя Worker, глубина очереди каждого составляла 32. В результате как несложно посчитать: 128.

Результаты тестов

Потоковое чтение

Версия fw 649
image

Версия fw 673
image

Потоковое чтение – самый понятный показатель работы внутренних алгоритмов кэширования контроллера. Видно, что в более новой версии прошивки на большом блоке скорость существенно просела, причем пик достигается на 8кб а дальше идет резкий спад. Судя по дальнейшим результатам – 8кб размер блока КЭШ контроллера и поэтому тут и достигается максимальный результат. Также хочется отметить, что считалка у контроллера очень мощная, судя по тому что на маленьком блоке результат вплотную подбирается к 90 000 IOPS.

Случайное чтение

Версия fw 649
image

Версия fw 673
image

Здесь уже КЭШ не играет большой роли и результаты близки. Нужно отметить что IOPS на маленьком блоке упал почти в 2 раза.

Потоковая запись

Версия fw 649
image

Версия fw 673
image

На записи наоборот ситуация заметно улучшилась, потоковые операции упираются в потолок около 1,4 ГБ секунду, опять же очевидно влияние КЭШ. В целом новая версия прошивки больше радует глаз, чем предыдущая.

Случайная запись

Версия fw 649
image

Версия fw 673
image

В обоих случаях результаты схожи. Новая прошивка дает определенный прирост, но он минимален.

Смешанная нагрузка – 70 запись, 30 чтение.

Версия fw 649
image

Версия fw 673
image

Как и в случайной записи, результаты приблизительно похожи.

Вывод

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

Результаты в силу того, что продукт вышел совсем недавно не представляют особенной ценности, разве что в целях сравнения с последующими версиями которые будут выходить в дальнейшем.

Читать дальше ...

пятница, 28 августа 2009 г.

Intel SSD x25-e и Intel RAID RS2BL080

Продолжая тему SSD и их работы в RAID, надо отметить что пока что (на мой взгляд) не было контроллера который давал адекватную производительность во всех ситуациях с SSD. Также большой головной болью было то, что при отключении КЭШа SSD дисков производительность системы значительно падала, тогда как его требуется выключать для создания отказоустойчивых конфигураций.

Вот и получается – хочется чтобы все работало быстро, включай КЭШ диска. Но если вдруг выключиться электричество или будет еще какой сбой, все данные находящиеся в этом КЭШе потеряются. С другой стороны выключая КЭШ мы получали просадку по производительности (подробнее можно посмотреть в предыдущем материале про SSD и контроллеры LSI).

Теперь непосредственно, что привело к написанию этого материала. Intel любезно предоставил нам в тест контроллер Intel RAID RS2BL080, который интересен тем, что он рассчитан на 6ГБ SAS (обратная совместимость с SAS 3GB и SATA присутствует), в результате чего имеет полностью переработанную архитектуру. Для начала мы решили посмотреть контроллер в работе с SSD, чтобы посмотреть на что он способен при максимально быстром back-end (дисках), результаты тестов и будут представлены ниже.

Контроллер Intel RAID RS2BL080

RS2BL080_lg
Intel RAID RS2BL080 он же LSI MegaRAID 9260-8i

Строго говоря контроллер произведен компанией LSI, Intel же OEMит их. В контроллере 8 портов 6Gb/s SATA/SAS, 512МБ памяти и процессор LSISAS2108 (6Gb/s RAID-on-Chip - 800MHz PowerPC). Выглядит вполне обычно.

Судя по маркетингу LSI максимальная пропускная способность чтения около 2,9ГБ/сек, а записи 1,8ГБ/сек.

Описание на сайте Intel.
Спецификация на сайте Intel.
Спецификация на сайте LSI.

Тесты с SSD

Было решено в первую очередь проверить две разные конфигурации:

1. 8 штук SSD Intel x25-e в RAID 5, КЭШ контроллера включен, КЭШ дисков выключен. Общий смысл данного теста был посмотреть, как себя покажет конфигурация собранная из расчета компромиссного соотношения цена/объем. Также немаловажно и то, что КЭШ дисков был отключен, в реальную работу не стоит ставить диски с включенным КЭШ, слишком велики риски потери информации.

2. 8 штук SSD Intel x25-e в RAID 10, КЭШ контроллера включен, КЭШ дисков выключен. Также было решено проверить R10 для оценки разницы в производительности относительно R5.

Ниже представлены скриншоты настроек.
Тест делался по обычной схеме с Iometer’ом.

New Bitmap ImageНастройки для теста в R5

test Настройки для теста в R10

Результаты

Последовательное чтение.

Raid5

image

Raid10

image

Чрезвычайно впечатляющее начало 160 000 IOPS на чтение, эти цифры соизмеримы с характеристиками производительности дисковых систем среднего уровня. С той лишь разницей, что на дисковой системе с обычными дисками, таких цифр можно достичь только из чистого КЭШа, а здесь эти цифры получены на LUN в 200GB. Фактически этот результат показывает производительность контроллера, для сравнения LSI 84016E давал в пике около 40 000 IOPS, Adaptec 5805 около 50 000 IOPS, здесь же мы получили 160 000 IOPS на маленьком блоке. Очень круто. Руки чешутся протестировать на нем обычный SAS, чтобы понять даст ли такой контроллер роста производительности с обычными дисками.

Кстати кроме IOPS не менее интересно что контроллер достиг уже 1200 МБ/сек. У предыдущего LSI этот потолок был около 800МБ/сек.

Случайное чтение.

Raid5

 image

Raid10

image

Результат очень достойный, для полностью случайной нагрузки также отличный результат. Тот же потолок в 1200 МБ/сек, достигается здесь несколько позже чем при последовательном чтении, что в общем естественно. Для сравнения IOPS у LSI 84016E было примерно столько же, у Adaptec 5805 в Raid5 чуть больше (правда с включенным КЭШ дисков .) ).

Отличные результаты, на уровне лучших что я видел для такого количества SSD при такой нагрузке.

Последовательная запись.

Raid5

 image

Raid10

 image

Исключительные результаты, видно что контроллер работает по максимуму и вычислительной мощности ему хватает с лихвой. При всем при этом, что интересно в RAID 5 контроллер пробил планку в 1200МБ/сек и уперся уже в 1400МБ/сек. В RAID 10 такого не наблюдается, видимо по причине меньшего количества конечных дисков на которые ведется запись. Тест опять же наглядно показывает что подопытный контроллер чрезвычайно мощный.

Что интересно, так называемого, RAID 5 penalty не наблюдается. По идее мы должны были бы видеть некоторую просадку по производительности в RAID 5 , относительно RAID 10.

Случайная запись.

Raid5

 image

Raid10

image

Левая часть графиков где отражены IOPS соответствует высоким ожиданиям, динамика графиков с точностью повторяет такую в предыдущих тестах, результаты получаются лучше чем и у LSI 84016E и у Adaptec 5805. Adaptec 5805 проигрывает где то около 20% в RAID5 и около 30% в RAID10, LSI 84016E проигрывает около 20% в RAID10 результатов эквивалентных тестов в RAID5 у меня нету.

Если же смотреть на скорость на большом блоке, пожалуй стоит поумерить свои восторги, результаты получаются низкие.  Впрочем они такие же низкие как и в случае других контроллеров, судя по результатам предыдущих тестов.

Также надо отметить, что есть подозрение что такое поведение массива обязано больше не контроллеру а дискам и их собственным алгоритмам записи и выстраивания очереди. Любопытно посмотреть аналогичные результаты при включеном КЭШ дисков (собственно именно эти тесты сейчас у нас и идут).

33% чтение, 100% случайные операции.

Raid5

 image

Raid10

 image

Комментировать особенно нечего, случайная запись задает тон результатам. Они в точности повторяют динамику случайной записи.

Типовые профили

Raid5

Access
Specification
Name
IOps Read IOps Write IOps MBps Read MBps Write MBps ART (ms) ART-read (ms) ART-write (ms)
File Server 7 938,72 6 349,31 1 589,41 85,82 68,62 17,20 4,03 4,78 1,04
Web Server 15 791,47 15 791,47 0,00 242,30 242,30 0,00 2,03 2,03 0,00

Raid10

Access
Specification
Name
IOps Read IOps Write IOps MBps Read MBps Write MBps ART (ms) ART-read (ms) ART-write (ms)
File Server 17 184,08 13 750,53 3 433,55 185,72 148,68 37,04 1,86 2,02 1,21
Web Server 20 511,35 20 511,35 0,00 313,48 313,48 0,00 1,56 1,56 0,00

В качестве сравнительной шкалы приведены результаты двух типовых тестов, отметить хочется то, что при очень высоких результатах время ответа (ART) сохраняется на рекордно низком уровне 1-4 ms. В этих же результатах видно что RAID 10 благодаря более высоким результатам на записи показывает лучшие результаты.

Выводы

Что хочется сказать в итоге, контроллер судя по этим результатам получился исключительно мощный, руки чешутся сделать тесты на 15k SAS дисках (я думаю сделаем на следующей неделе), вероятно контроллер и на них даст лучшую производительность чем его текущие конкуренты (тот же Adaptec 5805).

Касаемо текущей конфигурации на SSD, пожалуй её можно рекомендовать для любой интенсивной дисковой нагрузки. Там где будет преимущественно случайная запись большим блоком результат не будет радовать, с другой стороны это одна из самых синтетических нагрузок.

Доступность и стоимость контроллера пока не ясна, как я уже писал выше, нам он достался в единственном экземпляре и реальных цен в РФ я не видел. Судя по всему он должен быть в одной ценовой группе с Adaptec 5805 и аналогичными 8 портовыми LSI.

Читать дальше ...

вторник, 18 августа 2009 г.

IBM DS4700-70 проверка скорости работы КЭШа системы

Понятно что в любой дисковой системе, скорость работы КЭШа системы намного выше чем скорость работы дисков в этой системе. Обычно характеристик производительности дисковой системы в IOPS указываемые изготовителем в маркетинговых документов соответствуют скорости работы системы при максимально выгодной для неё нагрузке, чаще всего это последовательное чтение при удобном размере блока, близкого к размеру блока КЭШ памяти.

В информации по IBM DS 4700-70 заявленная производительность 112 000 IOPS, это я и попробую проверить в тестах. Также я буду смотреть на общее поведение системы при работе только на КЭШе.

Для такой задачи сперва было необходимо найти способ заставить систему работать только из КЭШ памяти. Как это было сделано я опишу ниже. Сначала несколько слов про схему кэш памяти в контроллере: в системе на каждый контроллер приходится по 1ГБ КЭШ памяти. По умолчанию используется полное зеркалирование КЭШ памяти контроллеров между собой, это необходимо для того чтобы в случае отказа одного контроллера система смогла переключить нагрузку на второй при этом не потеряв данные из КЭШа потерянного контроллера. У КЭШа есть две глобальные характеристики задающиеся на уровне всей системы: размер блока КЭШа и политика сброса содержимого КЭШа на диск.

Размер блока КЭШ памяти

Может выставляться значениями 4, 8, 16 кб. По умолчанию стоит по-моему 8кб. Я делал тест около полугода назад, проверяя отличия в производительности при разных значениях, у меня получилось что наилучшая скорость получается на блоке 16кб, независимо от типа нагрузки на систему. Посему в этот раз я тоже выставлю блок 16кб. Вполне вероятно, что в перспективе стоит попробовать уменьшить размер блока КЭШ и повторить тоже самое на 8кб.

Политика сброса КЭШа на диск

Когда размер данных в КЭШе превышает определенный порог он автоматически начинает скидываться на диск, пока не освободиться достаточно места в КЭШе. Эти два порога задаются в настройках системы. Если применить эти настройки к тестовой системе то это выглядит так: в ней 1ГБ КЭШ в каждом контроллере, 512МБ доступно для данных после вычета половины для зеркала.

Политика сброса КЭШ в тестовом случае выглядит так: начать сброс на диск – 95%; окончить сброс КЭШа на диск – 90%. Получается, что при заполнении 486МБ (95% от 512МБ) система начнет переписывать содержимое КЭШ на диск пока не останется заполненным 460МБ (90% от 512МБ) после этого система остановит переписывание и будет ждать того когда КЭШ опять заполнится до 486МБ.

В тестовой системе политика сброса КЭШ выбрана как описано выше, чтобы при маленьком LUN (для тестов делался LUN размером 200МБ) он мог быть полностью размещен в КЭШ и верхний порог для сброса КЭШ на диск был бы не достижим.

И еще надо уточнить один момент, в системе на политику сброса описанную выше накладывается еще политика сброса содержимого КЭШа по расписанию, с заданной частотой. Поскольку в тестовом случае это только мешает (мне было нужно свести влияние дисков к нулю) я отключил сброс КЭШа на диск по расписанию. Это делается через CLI следующей командой:

set logicalDrive ["lun2"] cacheFlushModifier= infinite ;

Такую процедуру я выполнил на обоих тестовых LUN.

Условия теста

На системе был создан массив из одного диска FC 15k 146GB, один диск выбрался специально, чтобы увидеть резкое понижение производительности если вдруг система начнет работать не через КЭШ а через диск. По большому счету тест планируется диского независимый поэтому количество значения не имеет. На массиве делалось два LUN по 200МБ, на них включался весь КЭШ, отключалось скидывание КЭШа на диск (см выше) и они назначались на разные контроллеры дисковой системы. Затем брался IOmeter и ставилась нагрузка, резульаты которой и записывались.

image 
Настройки LUN.

 

image 
Подключение дисковой системы к серверу.

 

Результаты

Чтение

image 
Последовательное

imageСлучайное

В обоих случаях на маленьком блоке цифры колеблются в районе 100 000 IOPS, случайность чтения оказывает минимальное влияние. Спад IOPS в районе 4кб блока вызван тем что сервер с нагрузкой подключен через один порт HBA, скорость у него 4ГБ. В данном случае меня это не напрягает, поскольку все цифры выше 4кб, превышают 400МБ/сек а это очень много. Поскольку график не падает, видно что система ведет себя отлично.

Надо отметить, что здесь показаны средние цифры за 5 минут работы, после проведения тестов внутренний монитор дисковой системы показал что максимальная скорость в IOPS составляла около 116 000 IOPS, то есть обещанная производителем скорость в 112 000 достигнута.

Запись

image 
Последовательная запись на одном диске

  image
Последовательная запись на двух дисках

При последовательной записи картина похожая на ожидаемую, с той лишь оговоркой, что скорость снижается на большом блоке. Я стал думать почему так и пришел к выводу, что это связанно с количеством дисков в массиве. Все же скорость около 100МБ/сек очень напоминает скорость одного диска.

Специально для того чтобы можно было понять влияние дисков на запись в кэш, был проведен второй тест, в котором в массив был добавлен еще один диск (то есть массив стал состоять из двух дисков) и проведена такая же нагрузка. На нижнем графике видно, что динамика полностью прежняя, тогда как скорость на большом блоке поднялась примерно в два раза. Поскольку в системе изменилось только количество дисков, из этого прямо следует, что алгоритмы кэширования последовательной записи связаны с физическими дисками в системе и даже имея тестовый лун объемом меньше чем доступный КЭШ и отключив сброс на диск, система все равно будет писать IO в диски, при последовательной записи.

Очень интересно что порог перехода записи в диск разный в массивах из одного и из двух дисков. Видимо система имеет заложенный алгоритм который определяет когда начинать писать КЭШ в диск исходя из критериев: какие диски включены в массив и какого объема, какой размер блока, какова последовательность нагрузки.

Логика прослеживается абсолютно четкая – если мы пишем последовательно и блоком большого объема, то диск не будет здесь узким местом, он себя должен показать лучше, чем КЭШ. Это дает максимальные результаты в нормальных средах на реальной нагрузке, все же LUN объемом 200МБ на который последовательно пишут 45ГБ за 5 минут в реальности не будет существовать.

 

После этого было проведено еще два теста: в одном проводилась последовательная запись на массив расширенный до 16 дисков, а во втором случайная запись в тех же условиях. Конфигурация LUN оставалась прежней.

image 
Последовательная запись на 16 дисков

image 
Случайная запись на 16 дисков

Динамика последовательной записи несколько сгладилась, что еще раз показало что система работает тем лучше, чем больше дисков в массиве. Системы кэширования не могут работать полностью независимо от дисков.

Поведение случайной записи получается существенно ниже чем последовательной, таким образом можно сказать что система кэширования при случайной записи наибольшим образом зависит от дисков, независимо от реального объема данных. Это сказывается даже на том, что при последовательной записи система больше ориентируется на КЭШ и в результате не достигает возможного потолка (в нашем случае 400 мб/сек), а при случайной записи система независимо от реального объема данных активно пишет их на диск и даже при полностью случайном характере нагрузки достигает потолка в 400мб/сек.

Выводы

1. Ну и собственно идеи о том, что было бы круто разместить все данные в КЭШ памяти и писать/читать из неё меня покинули, абсолютно очевидно что для последовательной записи объем КЭШа не будет играть большой роли и для достижения максимальных результатов не будет требоваться. Для случайной записи он играет еще меньшую роль.

Нужно добавить, что в ходе тестов было сделано несколько прицельных прогонов в которых я отключал зеркалирование КЭШ чтобы сориентироваться насколько это будет сильно влиять на производительность. Так вот влияние было порядка 2-3%, таким образом ответ на вопрос “снижает ли зеркалирование производительность?” – отрицательный. По результатам же этого теста можно сказать, что при нагрузках преимущественно записи длительное время, размер КЭШ не будет выполнять ключевую роль для общей производительности. Также нужно не забывать, что отключая зераклирование КЭШа мы теряем отказоустойчивость системы.

2. Система показала свою полную адекватность с точки зрения максимальной производительности работы из КЭШа, цифры заявлены в маркетинге – получены, остальные результаты выглядят реалистично.

 

Ну и в результате интересно посмотреть в подобном тесте влияние настроек блока КЭШа системы, в максимально нагружающей его конфигурации – 2 LUN по 200МБ на 16 дисках.

Читать дальше ...

вторник, 4 августа 2009 г.

SSD intel x25-E и MegaRAID SAS 84016E

Intel любезно предоставил в тестирование контроллер MegaRAID SAS 84016E чтобы попробовать как на нем заработают SSD, в результате было сделано 2 теста с разными настройками контроллера. в обоих тестах использовались 8 дисков подключенных по 4 в первые два канала контроллера. В обоих случаях диски собирались в RAID 10. Чем отличались тесты? В первом случае тест делался с включенным КЭШем контроллера, во втором с выключенным. Надо отметить что в своих результатах Intel получает наилучшие результаты именно с выключенным КЭШем. Также надо отметить, что Intel рекомендует вместе с отключением КЭШа контроллера включать КЭШ дисков. Также наоборот, при включении КЭШа контроллера – выключать кэш дисков.

Для тестирования была взята платформа как и до этого в тестах с adaptec только вместо контроллера adaptec в неё включался контроллер MegaRAID SAS 84016E. Как уже писалось выше в контроллер включалось по 4 SSD в первый и второй канал. Диски включались напрямую, без корзин.

Настройки контроллера – первый случай:

image

КЭШ контроллера включен. КЭШ дисков выключен.

image

КЭШ контроллера отключен. КЭШ дисков включен. Рекомендации Intel.

Какие получились результаты.

Последовательное чтение

Кэш включен

image

Кэш выключен

image

Уже привычная по Adaptec и предыдущему тестированию картина странных всплесков и падений. Динамика скорости примерно одинаковая. Потолок в который уперлась скорость в обоих случаях – 845МБ/сек. В случае включенного КЭШа скорее всего просадки вызваны особенностями контроллера, видимо работа идет блоками по 16кб, поэтому после достижения размера блока этого размера скорость работы контроллера с КЭШем перестает быть узким местом. Откуда взялся скачек на блоке в 2кб в случае включенного КЭШа – ума не приложу. Может быть какие то дополнительные внутренние оптимизации.

Последовательная запись

Кэш включен

image

Кэш выключен

image

При последовательной записи КЭШ наоборот начинает играть роль, видимо такой результат связан с его алгоритмом работы на запись. Рост производительности при включенном КЭШе идет до блока в 16кб, что скорее всего связано с размером блока КЭШа. Почему абсолютные цифры при последовательной записи (в случае включенного КЭШа) выше чем при последовательном чтении, неясно. Можно предположить что контроллер лучше справляется с алгоритмами кэширования записи, нежели чем с упреждающим чтением.

Случайное чтение

Кэш включен

image

Кэш выключен

image

Картина схожа, поскольку все операции на 100% случайны контроллер не может вмешаться алгоритмами упреждающего чтения. Верхняя граница та же 845МБ/сек.

Случайная запись

Кэш включен

image

Кэш выключен

image

Поскольку процедура полностью случайная, КЭШ контроллера никак не может повлиять на результат, видны схожие результаты в обоих случаях. Причем результаты записи большим блоком идут очень медленно, результаты требуют разъяснения от производителя. Не очень ясно какие настройки выбраны не корректно. На маленьком блоке результат без КЭШа контроллера предсказуемо лучше.

Запись/чтение 67/33 – 100% случайные

Кэш включен

image

Кэш выключен

image

Данный результат повторяет результат случайной смешанной нагрузки из теста выше. По понятным причинам запись тянет за собой вниз и чтение.

Выводы

Нельзя сделать однозначный вывод по результатам теста, поскольку цифры и динамика их изменения не похожа на аналогичные результаты HDD (опять же обычные результаты можно посмотреть в предыдущем материале про SAS и SSD на Adaptec). Можно точно сказать, что пока что результат не оправдывает ожидания, есть подозрение что при отключенном КЭШе нужно попробовать поставить размер блока массива больше чем 256КБ, к примеру те же 1024КБ в случае Adaptec это давало наилучший результат. Сейчас доделываются результаты R0 из 8xssd при размере блока 256КБ и отключенном КЭШе контроллера, я думаю следующим этапом мы попробуем прогнать тест в той же конфигурации только с отключенным КЭШем дисков, выберем наилучший результат и в такой конфигурации повторим тест с максимальным размером блока. Возможно это даст ответ на то насколько сильно влияет кэширование самих дисков на результат и насколько повлияет изменение размера блока в большую сторону на уровне всего массива.

Читать дальше ...

четверг, 23 июля 2009 г.

IBM DS3400 размер блока массива R10 и размер блока кэша системы

Вопрос который меня давно интересовал – как в цифрах будет влиять изменение размера сегмента райда на производительность на разных размерах блока нагрузки.

Что такое вообще размер сегмента, segment size в терминологии IBM? В DS3000/4000 это размер данных, который должен быть записан на диск или прочитан с диска, перед тем, как система продолжит запись/чтение на следующий диск.

Учитывая, что тест IOmeter делается на RAW пространстве фрагментации файлов нету и получается, что при тесте на запись, на каждый диск должно попасть количество данных равное размеру сегмента райда перед тем как начнется запись на следующий диск. Такая же ситуация будет происходить и с чтением.

В чистой теории максимальная производительность достигается тогда, когда размер страйпа диска максимально приближен к размеру IO которым система создающая нагрузку взаимодействует с самой системой. С другой стороны все рекомендации производителей дисковых систем сводятся к тому, что нужно выбирать размер страйпа для массива по умолчанию, что фактически означает прямую зависимость оптимизации кода прошивки контроллера под конкретный размер страйпа массива. В 3400 системе по умолчанию это 128кб, для медиа контента (большие файлы) предлагается блок 256кб. Вообще размер этого самого страйпа может меняться шагами 16-32-64-128-256-512 кб.

В руководстве IBM дает только 2 принципиальных рекомендации по размеру сегмента:
1. Для маленького IO размер сегмента массива должен быть равен или больше, чем размер IO.
2. Размер IO не обязательно должен совпадать с размером сегмента для достижения максимальной производительности.

Около полугода назад я ставил тест при повышении размера страйпа с 32 до 512 кб и замерами производительности и был изрядно удивлен тем, что на любом типе нагрузки максимальная скорость достигалась на размере сегмента 128 или 256 кб, даже на самых маленьких размерах IO. Сейчас я проделывал туже операцию на DS3400 сконцентрировавшись на 2-х размерах сегмента: 128кб (по умолчанию) и 256кб (предлагается системой для медиа нагрузки). Также я менял размер блока кэша системы с 4кб (по умолчанию) на 16кб, это максимальное значение для данной системы.

Управление размером кэша производится на уровне всей системы целиком и в DS3400 делается из консольной строки.

Тесты проводились на 2-х контроллерной системе DS3400 подключенной через FC свитч к 1 портовому FC HBA на сервере который создавал рабочую нагрузку. В каждом контроллере системы стоит по 512МБ кэша. Ниже представлены диаграммы на которых видно влияние тех или иных настроек на производительность системы.

Последовательное чтение

image image

image image

image image

image image

Из результатов видно, что изменяемые характеристики не имею сильного влияния на производительность, ясно видно что система быстро доходит до порога 400 мб/сек, ограничения сервера с одним HBA адаптером и перестает расти. На меньших скоростях видно, что в точке, где размер IO совпадает с размером блока кэша достигает повышение производительности относительно соседних результатов.

Последовательная запись

image image

image image

image image

image image

На графиках ясно виден результат рекомендации IBM “сегмент больше или равен IO” только сильнее это видно не на сегменте массива, а на размере блока кэша. Наглядно видно насколько выше результаты система дает, когда работает с кэшем нежели чем с дисковой емкостью. Наилучший результат получается в случае кэш-16кб, сегмент 256кб.

Случайное чтение

image image

image image

image image

image image

Также, как и в последовательном чтении, видно, что изменяемые настройки практически не влияют на производительность системы. можно отметить что в конфигурации 16кб кэш блок, 256кб сегмент система быстрее всего доходит до потолка интерфейса в 400МБ, при этом не теряя в производительности на маленьком блоке.

Случайная запись

image image

image image

image image

image image

Видно, что на маленьком блоке IO значения практически не влияют на IOPS, а на большом чуть быстрее оказывается 16кб блок кэша, 256кб размер сегмента.

Смешанная нагрузка (33% чтение), 100% случайная

image image

image image

image image

image image

В смешанной нагрузке запись, как более медленная операция, всегда тянет за собой и чтение, таким образом результаты получаются очень похожи на тест с полностью случайной записью. Видно что на маленьком блоке IO скорость работы систем одинаковая, при большом блоке IO – системы с размером сегмента массива чуть выигрывают.

Какие можно сделать выводы?

1. я думаю что в любом случае стоит ставить размер блока кэша системы в 16кб. Поскольку система DS3000 не обладает таким уж быстрым контроллером и не предполагает того, что на неё будут падать десятки тысячи мелких IO в секунду от какой нибудь высоконагруженной БД, кэш будет использоваться нерационально не так уж и часто. Синтетические тесты показывают, что и на маленьком размере блока система не проседает. Изменение размера блока  кэша на DS3000 делается командой “set storageSubsystem cacheBlockSize= XX KB;”, где ХХ – размер нового блока. Процедура выполняется мгновенно и применяется ко всей системе.

2. Скорее всего рационально использовать размер сегмента не в 128Кб, по умолчанию, а в 256кб. Я думаю что при реальной нагрузке это как минимум не снизит производительность работы, но вероятно и повысит её в определенных ситуациях. Скорее всего размер сегмента в 128кб по умолчанию сложился исторически с ранних версий прошивок системы.
Изменение размера сегмента для уже созданного луна возможно из командной строки, командой “set logicalDrive  ["logicalDriveName"] segmentSize= XX KB ;”, нужно учитывать, что процедура выполняется тем медленее, чем больше размер LUN’а к которой она применяется и чем больше система нагружена, процесс запросто может идти несколько часов. При этом процедура не отменяема и относится к монопольным, и если к примеру в момент перестройки понадобиться переконфигурить еще что ни будь, это не удастся сделать до окончания изменения размера сегмента. Процедура не прерывает доступ к информации в момент своей работы.

Книжка по теме:
http://www.redbooks.ibm.com/abstracts/sg246363.html?Open - DS4000 Best Practices and Performance Tuning Guide

Читать дальше ...