Upload
ontico
View
982
Download
2
Embed Size (px)
DESCRIPTION
Доклад Александра Кирова на HighLoad++ 2014.
Citation preview
Тестируем производительность распределенных систем хранения данныхКиров АлександрParallels
О себе5+ лет в Parallels
Деятельность:
• Анализ производительности Parallels Plesk Panel
• Анализ производительности серверной виртуализации
• Program manager Parallels Cloud Storage
Чем важен доклад• Что тестировать и как? (консистентность, производительность)
• На что нужно обращать внимание в первую очередь?
• Как обойти множество подводных камней при тестировании?
• Раздаем утилиты для тестирования
Мы знаем о хранении данных
Диски подключенные в кластер
Индивидуальные диски
1TB1TB
1TB
3TB
Parallels Cloud StorageВысокая производительность• Автоматическая балансировка данных• Out-of-the-box SSD-кеширование
Масштабируемость• Легко расширяется, автоматически
масштабируется, реорганизует кластер про добавлении новых дисков/серверов
Отказоустойчивость• Автоматически управляет
отказоустойчивостью и восстановлением• Прозрачная репликация данных
File:101110011001101100
File:000111010101101010
File:111000011101001010
Как тестировать?
Определиться что хотим получить• Понять какая предполагается нагрузка на систему
• Что и сколько хотим получить от системы
Позволяет:
• Понять что действительно важно, а что нет
• Числено определить требования (IOPS, MB/s, ms)
• Понять характер нагрузки, основные сценарии
• Сколько машин работает с хранилищем
Различия сценариевФайловый
сервер
VPS хостинг
VPS кластер
=VM
Не используйте хорошо сжимаемые шаблоны данных
dd if=/dev/urandom of=/tmp/rnd_f size=1Mdd if=/tmp/rnd_f of=/dev/sda size=1M oflag=direct
Правильно:
dd if=/dev/zero of=/dev/sda size=1MСамый популярный неправильный тест:
dd if=/dev/urandom of=/dev/sda size=1MУлучшенный вариант, но по-прежнему неправильный :
Используйте большой working setПример плохого теста: iozone имеет маленький working set, поэтому меряет память
Пример как working-set влияет на результат:
Random 4K write на Adaptec RAID 71605 (12 SSD) при различном working set:
Working set Random 4K write
512 MB 100’000 IOPS
2048 MB 3’000 IOPS
Кстати, о RAID - контроллерах
Model Seq. write
LSI MegaRAID 2008M-8i 298 MB/s
MegaRAID 9271CV-8i 834 MB/s
Производительность одного диска:
Model Seq. write
LSI MegaRAID 2008M-8i 118 MB/s
MegaRAID 9271CV-8i 134 MB/s
RAID-контроллеры иногда показывают удивительные вещи, если нагружать все диски параллельно (Sum Total Throughput across all 6 devices:)
Не пренебрегайте статистикой
• Отведите не меньше минуты на проведение теста
• Лучше – дольше
• Проводите один тест несколько раз, чтобы сгладить отклонения
• Делайте паузу между тестами
Убедитесь, что сравнение честноеВсегда сравнивать только «Яблоки с Яблоками»:
• Одинаковое железо
• Одинаковая нагрузка
• Одинаковый уровень отказоустойчивости
Тестируем Sync()
• Write() и Read() – это не все операции над блочным хранилищем
• Необходимо тестировать sync()
• Операции sync() и fdatasync() требуют записи данных из кешей на диск
User application
write(),read(),…
Kernel buffer
RAID cache
disk cache
disk
File:101110011001101100
UserKernel
HWKernel
Масштабируемость Sync()/flush
Тип Входящих дисков
Кол-во Sync() / сек
1 disk 1
RAID 1 N
RAID 0 N
RAID 10 N
RAID 5/6 N
Во сколько раз массив из дисков способен сделать больше операций sync()/flush по сравнению с одним диском?
Данные должны быть сброшены на каждом диске!
Скорость одного диска
Скорость одного дискаСкорость одного диска
Скорость одного диска
Скорость одного диска
Sync() в распределенной системе
File:101110011001101100
Kernel
HW
Результат тестирования
*Parallels Cloud Storage 6.0: pstorage-5.0.1-440 ; OnApp Cloud 3.0: onapp-store-install-3.0.0-24, onapp-cp-install-3.0.0-20
Cluster: 7 nodes, 14 HDD, 1 Gbit
Как тестируем?IO workloads:• Sequential read of 16MB block• Sequential write of 16MB block• Random read of 4KB block• Random write of 4KB block + sync• Random write of 32x 4KB block + sync
Масштабируемость:• 1, 10, 21 физических серверов в кластере• 1, 4, 16 IO workloads на каждом сервере
At_io_iopsat_io_iops --read --rand -s 4K --iops -p 4 -t 60 -u 16G -S -f /pstorage/<cluster_name>/<benchmark_dir>
• Умеет покрывать все необходимые сценарии• Правильно подготавливает данные для теста• Удобная настройка working set, потоков, нагружаемых
файлов• Умеет тестирвать sync• Умеет aio/dio, cached/uncached• Через опцию “-vvv” пишет все вызовы
Результаты: Read Performance
HW: Core i5 2400, 16 GB RAM, HDD 2x2TB SATA, Intel 82574L 1Gbit, Cisco Catalyst 2960
Результаты: Write Performance
HW: Core i5 2400, 16 GB RAM, HDD 2x2TB SATA, Intel 82574L 1Gbit, Cisco Catalyst 2960
РаздаткаСкачать методологию:
Скачать at_io_iops:
http://goo.gl/aWAiVZhttp://goo.gl/dIuxLI
Консистентность
Консистентность• Строгая консистентность (англ. strict consistency)
гарантировано возвращает значение, записанное самой последней операцией "запись”
Примеры: Parallels Cloud Storage, Lustre, …
• Консистентность в конечном счете (англ. eventual consistency) гарантирует, что, в отсутствии изменений данных, в конечном счете все запросы будут возвращать последнее обновленное значение.
Примеры: DNS, Amazon S3, …
Как проверять консистентность?Решение:
• Записать данные и прочитать их
Проблемы:
• Кеши
• Распределенность системы
• Консистентность системы связана с её устойчивостью к сбоям
Чем проверять консистентность?Утилита «hw_flush_check»
Принцип работы:1. Клиент записывает данные и посылает Sync() (сбрасывает на
диск)2. По окончанию Sync(), посылает отчет аудитору3. Моделируем отключение питания 4. Когда система запустится то клиент проверит сохранились ли
данные
disk
Клиент Аудитор
РаздаткаСкачать hw_flush_check:
http://goo.gl/dIuxLI
Как железо влияет на системы хранения?
Консистентность данных на SSDТот же подход применим к тестированию железа:
SSD, RAID-контролеров, SAN
Ищите в спецификации к SSD:• Intel: Enhanced Power Loss Data Protection• Samsung: Cache Power Protection• Kingston: Power-Failure Support• OCZ: Complete Power Fail Protection
SSD не теряющие данные имеют конденсаторы
Консистентность. Выводы• SW и HW необходимо тестировать на сохранность данных• Используем для этого утилиту hw_flush_check• Не используем SSD для ноутбуков в серверах• Покупаем SSD с Power Loss Protection• Покупаем SSD с большим сроком службы (durability)
Наработка на отказ
The mean time to data loss (MTTDL) — среднее время наработки до потери данных:
MTTDL ~= 1 / T^2T – время восстановления
Вывод: Чем быстрее система восстанавливает данные, тем выше наработка на отказ
Наработка на отказ связана со скоростью восстановления данных
Как проверить?Сценарий:
1. Записать значительный объем данных
2. Отключить компонент
3. Замерить время до полного восстановления данных
Результат:
Сильно зависит от архитектуры
Время восстановления RAID
Тип Чтение с рабочих дисков Запись на новый дискRAID 0 n/a n/aRAID 1 1 Скорость 1 дискаRAID 5/6 со всех Скорость 1 дискаRAID 10 1 Скорость 1 диска
Если на диски идёт нагрузка, то время будет значительно больше
Сравнение скорости восстановления
HW: Core i5 2400, 16 GB RAM, HDD 2x2TB SATA, Intel 82574L 1Gbit, Cisco Catalyst 2960
Попробовать Parallels Cloud Storage
http://goo.gl/kdXxLF
Parallels Cloud Storage в PCS:
http://sp.parallels.com/products/pcs/
Parallels Cloud Storage для OpenVZ:
http://openvz.org/Parallels_Cloud_Storage
http://goo.gl/4MXwRa
Q&A
Киров АлександрParallels® [email protected]+7-495-783-29-77 (76244)
Appendix
CEPH
Традиционные системы храненияРезервируют всё на HW уровне:
• Дублированное питание
• Двойные «мозги»
• Дублированное подключение
• Централизованная система принятия решений
Распределенные системы храненияРезервируют всё на SW уровне:
• HW априори никогда не надежно
• Резервирование на уровне SW
• Готова к отказу любого компонента
• Не требует необычного железа• Распределенная система
принятия решений