Тестирование производительности системы хранения данных
Часть 1. Дисковая подсистема
В современных информационных инфраструктурах типа "облаков" или крупных вычислительных кластеров значительное влияние на общую производительность и качество работы оказывает подсистема хранения данных. В отличие от вычислительной мощности и объемов памяти, наращиваемых путем добавления серверов в инфраструктуру - хранилище значительно сложнее поддается масштабированию, что заставляет особенно тщательно подходить к подбору его конфигурации.
Массирование применение технологий виртуализации и широкое распространение SSD-носителей создали одновременно и новые потребности и новые возможности в области построения систем хранения данных. Как следствие - в последнее время появился ряд новых способов организации системы хранения данных, в которых активно применяются нетривиальные подходы, такие как многоуровневое кэширование, гетерогенные носители, виртуализация системы хранения. Их поведение под разной нагрузкой не всегда прогнозируемо и оценка эффективности прменения того или иного решения требует расширенного тестирования.
Архитектура систем хранения
Традиционные системы хранения
DAS (direct attached storage) - хранилище с прямым подключением. Обычно представляет из себя RAID-контроллер к которому подключаются корзины с дисками. Корзины могут быть как встроенными непосредственно в сервер, так и в дополнительное шасси со своим источником питания.
SAN (storage area network) - сеть хранения данных (СХД). Это один или несколько дисковых массивов с собственными RAID-контроллерами (зачастую дублированными) и дополнительными дисковыми полками, объединенных с помощью сетевого оборудования. Наиболее распространены специализированные оптоволоконные сети с протоколом FC и сети на базе Ethernet c протоколом iSCSI. В небольших СХД возможно использование протокола SAS. Доступ к СХД со стороны серверов осуществляется посредством специальных адаптеров (HBA - host bus adapter). HBA не является RAID-контроллером. В случае использования протокола iSCSI роль HBA может выполнять обычная сетевая карта.
NAS (network attached storage) - хранилище, подключаемое по сети. Фактически - это файл-сервер, интегрированный с DAS или SAN.
Системы хранения, основанные на трансляции адресов
NetApp ZFS
В стремлении избежать недостатков, присущих традиционным RAID-алгоритмам, в компании NetApp изобрели WAFL (Write Anywhere File Layout) - систему рзмещения данных по дискам, объединяющую функции файловой системы, менеджера томов и механизма защиты данных с помощью контрольных сумм. Аналогичную технологию предложила фирма Sun позднее поглощенная Oracle в своей файловой системе ZFS.
Помимо избавления от проблем с производительности при случайном доступе на запись эти технологии позволяют
Виртуализаторы (IBM SAN Volume Controller, quadstor) - это программные (или программно-аппаратные) надстройки над существующими системами хранения. Основная возможность - представление множества устройств хранения как единого виртуального хранилища, которое возможно более гибко распределять между потребителями. Поскольку в основе работы виртуализаторов в той или иной степени лежит механизм трансляции адресов - эта технология позволяетвыполнять дедупликацию данных.
С массированным применением технологий виртуализации для десктопной информаструктуры (VDI - virtual desktop infrastructure) к системам хранения данных появилось новое требование - эффективно поддерживать большие количества слаборазличающихся наборов данных (образы виртуальных машин в основном являются многочисленными копиями операционной системы).
SSD
Кластерные системы
Для высокопроизводительный вычислительных систем и систем, ориентированных на обработку транзакций более важной характеристикой производительности является латентность, т.е.время ожидания реакции на запрос. Предыдущие способы организации СХД используют хорошо масштабируемые, но относительно медленные интерфейсы между приложением, потребляющим данные и собственно дисками. Для специализированных кластерных СХД характерно использование дисковых массивов на основе SSD, прямое подключение массивов к вычислительным узлам с помощью стандартных HBA или HBA, обеспечивающих связность самого кластера (например Infiniband) и использование специализированных файловых систем для объединения емкости нескольких массивов в единое пространство.
Общепринятые методики тестирования.
В области тестирования ханилищ данных отраслевым, всем признанным стандартом является бенчмарк SPC (Storage Performance Council), в частности SPC-1, который оценивает производительность системы в IOPS - количестве операций ввода-вывода в секунду. Результаты независимых тестов оборудования различных производителей регулярно публикуются на сайте SPC http://www.storageperformance.org/results/benchmark_results_spc1. К сожалению инструментарий для проведения тестов SPC доступен только членам данной организации, что делает практически невозможным повторение теста или оценку влияния на производительность системы конфигурации СХД или других элементов инфраструктуры.
Поскольку производительность сильно зависит как от конкретной конфигурвции, так и от характера нагрузки - существует потребность в тестах, которые может запустить конечный пользователь. Одним из таких средств тестирования производительности является утилита IOMeter, первоначально разработанная Intel, а затем переданная open source-сообществу. Подробно работа с IOMeter описана, например, на http://itband.ru/2010/01/iometer
IOMeter является синтетическим тестом, позволяющим гибко варьировать профиль создаваемой нагрузки: можно менять размер блоков ввода-вывода, характер доступа (случайный или последовательный), количество параллельных операций, а также комбинировать различные профили, имитируя нагрузку, хараткерную для реальных приложений. Возможно проведение распределенного тестирования, когда нагрузка генерируется сразу несколькими машинами, что позволяет приблизить условия теста к реальному информационному пространству.
В поставку IOMeter входят типовые вырожденные тесты, например
- случайное чтение блоков по 4 Кб
- последовательное чтение блоков по 4 Кб
- случайная запись блоков по 4 Кб
- последовательная запись блоков по 4 Кб
Также доступны (например на сайте http://docs.aboutnetapp.ru/iometer2.icf) тестовые паттерны Intel и StorageReview, предназначенные для создания нагрузки, характерной для некоторых реальных применений.
- NFS-сервер
- сервер БД
- web-сервер
Результаты тестирования большого количества оборудования c помощью IOMeter и данных паттернов, опубликованы в сети (http://www.fcenter.ru/hwbase/?). Причем тестируются как отдельные накопители, так и дисковые массивы. Тестирование с помощью IOMeter часто используют при написании обзоров нового оборудования (например http://www.storagereview.com/synology_ds1512_nas_review )
тестируемые системы
В нашем распоряжении оказались
1) одиночный диск SATA
2) одиночный диск SAS 10000rpm 300Gb
3) одиночный диск SSD 30Gb
4) дисковый массив RAID0 из трех дисков SAS 15000rpm созданный средствами контроллера, интегрированного в материнскую плату
5) дисковый массив SAN архитектуры FC-SAS (диски подключаются к хранилищу по SAS, хранилище подключается к хосту по FC) Sun 2540 c 5 SAS-дисками, объединенными в RAID5
6) дисковый массив SAN архитектуры FC-SATA (диски подключаются к хранилищу по SATA, хранилище подключается к хосту по FC) IBM 3400 c 10 SATA-дисками, объединенными в RAID6
7) сетевое хранилище NAS Synology c 5 SATA-дисками, объединенными в RAID5
методика тестирования
а что же мы на самом деле тестируем? связку сеть-ОС-файловая система - аппаратура хранилища
IOMeter позволяет работать с диском либо напрямую, как с блочным устройством, либо производя ввод-вывод в файл iobw.tst, размещаемый поверх файловой системы.
Первый режим более актуален для тестирования собственно дисковых устройств, поскольку операции ввода-вывода проходят минимальное количество промежуточных подсистем (кешей, планировщиков ввода-вывода итд). С помощью второго -
Команда сброса кеша на клиенте
while [ a = a ]; do echo 1 > /proc/sys/vm/drop_caches ;sleep 5; done
А что нас на самом деле интересует? производительность в пакетном режиме и комфорт в интерактивном
исследование профилей нагрузки
Новая таблица - IOMeter 1.1.0 rc 1
Диск | 10GB | 4krr | 4krw | 4ksr | 4ksw | nfs | db | web |
SATA
|
86-99 | 170-186 | 22905 (93) - 25376 (107) | 14232 (58) - 19192 (78) | 95-97 | 104-108 | 90-93 | |
SAS
|
||||||||
SSD
|
26404-27262 | 26679-28761 | 28625-29298 | 26754-28368 | 25631-27161 | 27668-27986 | 26244-26466 | |
77.5
|
||||||||
77.5 nfs
|
718-25891 | 1141-1107 | 23492 (96) - 28763 (117) | 138--209 | 1228-2196 | 1153-2962 | 1829-9454 | |
70.6
|
478-483 | 571-565 | 35482 (145) - 35842 (146) | 22376 (91) - 19939 (81) | 356-441 | 427-440 | 399-392 | |
70.6 nfs
|
27114 (111) - 27753 (113) | 422-351 | 20001 (82) - 28787 (117) | 90-90 | 850-697 | 643-652 | 998-930 | |
77.6
|
113-741(300) | 1732-2073 | 13060 (53) - 13162 (54) | 17371 (71) - 17683 () | 109-298 | 116-246 | 104-378 | |
77.6 nfs
|
270-268 | 171-188 | 23114 (94) - 20033 (82) | 693-704 | 190-181 | 166-133 | 141-151 | |
zfs over R5
|
404-420 | 296-288 | 23303 (95) - 25947 (106) | 269-310 | 292-264 | 276-303 | 317-371 | |
zfs over RZ
|
55m/s | |||||||
77.5nfs drc | 97-98 | 1826-3464 | 1225-1223 | 1050-1229 | 89-89 | 107-107 | 83 | |
77.6nfs drc | 10837 | |||||||
70.6nfs drc | ||||||||
zfs over R5 nfs drc | 191-165 | 2377-2435 | 3181-3091 | 1078-1090 | 154-169 | 184-181 | 164-134 | |
Старая таблица
Диск | Создание 10Gb файла для IOmeter, MB/sec |
NFS server pattern IOPS |
Database pattern IOPS |
WEB server pattern IOPS |
4Kb random read IOPS |
4Kb random write IOPS |
4kb sequential read IOPS |
4kb sequential write IOPS |
Одиночный SAS 10000rpm 300Gb - прямой доступ | 317 | =218 | 211-213 | =229 | 234-235 | 187-188 | 2619-3187 | =165 |
Одиночный SATA - прямой доступ | 62 | 88-89 | 97-107 | 93 | 94-96 | =157 | ||
Одиночный SSD (старый) - прямой доступ (win) |
55 | 291-300 | 195-198 | 2000-2002 | 2397-2403 | 83-97 | 13092-13114 | =12412 |
Одиночный SSD (старый) - прямой доступ (lin) | 32 | 213-430 | 146-308 | 1240-1407 | 1620-1636 2548- |
56-71 | 2379-3459 25164- |
4734-6396 |
Аппаратный RAID0 из 3х SAS - прямой доступ | 129 | 2123-2158 | 1434-1441 | 8991-8731 | 10076-10139 | 542-578 | 10706-11007 | 9622-9720 |
Аппаратный RAID0 из 3х SAS - NFS доступ | 70 | 897-902 | 537-538 | 4442-4492 | 8628-8812 | 186-187 | 8545-8584 | =187 ??? |
Аппаратный* RAID5 из 5x SAS - прямой доступ | 78 | 558-600 | 407-601 | 544-609 | 424-523 ??? | 683-698 | 42628-42722 | 22667-23321 |
Аппаратный* RAID5 из 5х SAS - NFS доступ | 31 | 257-278 | 189-200 | 612-765 | 4592-5240 | =75 | 8855-8910 | 121-125 ??? |
Аппаратный* RAID6 из 10х SATA - прямой доступ | 140 | |||||||
Аппаратный* RAID6 из 10х SATA - NFS доступ | 32 | 185-244 | 203 | 206 | 556 | 229 | ||
Аппаратный RAID6 из 10х SATA - прямой доступ | 278-280 | 231-239 | 349-362 | =132 ??? | 744-753 | 13621-18745 | 17254-17703 | |
Аппаратный RAID6 из 10х SATA - NFS доступ | 32 | 242-259 | 176-196 | 286-320 | 517-2611(5500) | 186-191 | 5097-5866 | 665-674 |
Synology RAID5 из 5x SATA (async) - NFS доступ | 83 | 294-298 | 275-288 | 284-291 | 352-505 | 972-975 | 5086-5468 | 5258-5274 |
Synology RAID5 из 5x SATA (sync) - NFS доступ | 79 | 153-155 | =134 | 269-271 | 460-558 | 73-79 | 5587 |
96-99 |