2018-06-27 Тестирование различных способов подключения SSD для Ceph
(Новая страница: «Категория:Автоматизация развертывания площадок СМ Задача: протестировать различные…») |
м |
||
Строка 1: | Строка 1: | ||
− | |||
Задача: протестировать различные способы подключения SATA SSD (как потребительских, так и серверных) к системе для получения приличных IOPS-ов в Ceph. | Задача: протестировать различные способы подключения SATA SSD (как потребительских, так и серверных) к системе для получения приличных IOPS-ов в Ceph. | ||
Строка 105: | Строка 104: | ||
Примечания: | Примечания: | ||
<references /> | <references /> | ||
+ | {{wl-publish: 2018-06-27 18:19:47 +0300 | VitaliyFilippov }} |
Версия 18:19, 27 июня 2018
Задача: протестировать различные способы подключения SATA SSD (как потребительских, так и серверных) к системе для получения приличных IOPS-ов в Ceph.
Преамбула
Особенность Ceph — то, что вся запись (даже та, для которой никто этого явно не просит) ведётся транзакционно.
В силу этого IOPS-ы при записи мелкими блоками, то бишь при OLTP-применении, страдают. В силу этого же тестировать производительность дисков нужно обязательно с опцией fdatasync=1.
И в силу этого же полезно использовать либо SSD с энергонезависимым внутренним кэшем (называется «Расширенная защита от потери данных при отключении питания», в основном это «энтерпрайзные» модели, в данном тесте это Intel DC3500 и Intel 320), либо (гипотеза — как раз её и проверяем) подключение через RAID контроллер.
IOPS-ы при разных способах подключения различаются драматически (и упорото — по-разному). Ниже приведены некоторые результаты тестирования.
Все тесты запускались утилитой fio с параметрами: fio -ioengine=libaio -fdatasync=1 -direct=1 -invalidate=1 -name=test -bs=4k -size=10G -iodepth=16 -rw=randwrite -filename=/dev/sdX (то есть, случайная запись блоками по 4 килобайта в обход кэша ОС (direct и invalidate) и в транзакционном режиме (fdatasync)).
Протестированные виды подключения:
- Через контроллер Adaptec 6805 с ZMM (конденсатором):
- RAID volume из одного диска. В этом случае доступны две настройки: внутренний кэш диска — вкл/выкл и кэш контроллера — вкл/выкл.
- JBOD из одного диска. В этом случае доступна одна настройка: внутренний кэш диска — вкл/выкл.
- Через SATA контроллер обычной десктопной материнской платы. Доступна одна настройка: внутренний кэш диска — вкл/выкл (через утилиту hdparm -W).
Результаты тестирования
Модель SSD / Подключение | RAID,
оба кэша ВЫКЛ |
RAID,
кэш диска ВКЛ |
RAID,
кэш RAID вкл |
RAID,
оба кэша ВКЛ |
JBOD,
кэш диска выкл |
JBOD,
кэш диска вкл |
SATA,
кэш диска выкл |
SATA,
кэш диска вкл |
---|---|---|---|---|---|---|---|---|
Intel DC3500 SSDSC2BB080G4 80GB | 25000 | 7000 | 9500 | 9500 | 26000 | 5000 | 21000 | 7000 |
Intel X25-M SSDSA2M160G2GC 160GB | 1100 | 21000 | 1100 | 9000 | 1100 | 5000 | 1100 | 5000 |
Intel 320 SSDSA2CW160G3 160GB | 20000
↓ 14000[1] |
20000
↓ 14000 |
9500 | 9500 | 20000[2] | 4500 | 9500 | 8000 |
Intel 545s SSDSC2KW256G8 256GB | 1100 | 33000 | 1150 | 9000 | 1100 | то 2100,
то 700 |
1100 | то 2600,
то 800[3] |
Результаты приведены при нагрузке на один диск. Если дать параллельную нагрузку на 3 первых из списка диска, фактические iops-ы снижаются в 2 раза — в своём оптимальном режиме 12500, а во втором по оптимальности (с обоими включенными кэшами) — до 4500. Возможно, это обусловлено тем, что тестировался уже не самый новый и не самый быстрый RAID-контроллер (хотя SATA 6 GB/s вроде поддерживает).
Выводы
- Оптимальный способ подключения серверных SSD — SATA с выключенным кэшем (hdparm -W 0 /dev/sdX), либо SAS RAID контроллер с обоими отключенными кэшами (arcconf setcache 1 device 0 5 wt && arcconf setcache 1 logicaldrive 5 wt). SATA лучше, так как в этом случае поддерживается TRIM (хотя в нём серверные SSD и не нуждаются).
- Оптимальный способ подключения дешёвых настольных SSD — SAS RAID контроллер с включённым кэшем диска и выключенным (write-through) кэшем RAID-контроллера.
- При подключении через RAID контроллер и включении обоих кэшей записи IOPS-ы получается некоторая гарантированно неплохая скорость. «Гарантированная» в том смысле, что не сильно зависит от модели SSD, так как упирается в скорость работы самого контроллера.
- Способа обеспечить нормальные IOPS-ы на запись с Ceph два:
- Серверные SSD
- RAID контроллер с конденсатором. Но желательна поддержка скорости SATA 12 GB/s и хотя бы 1 Гб кэша (в противном случае контроллер сам может стать узким местом)
В целом, если немножко вдуматься, результаты не очень очевидные. Объяснение им в моём понимании такое:
- На серверных SSD внутренний кэш записи может тормозить транзакционную запись. Отсюда 7000 на DC3500.
- На дешёвых SSD внутренний кэш записи помогает транзакционной записи, но не сильно. Отсюда 2600/800 на 545s и 5000 на X25.
- На дешёвых SSD при выключенном внутреннем кэше записи скорость нетранзакционной записи сильно проседает, в итоге, даже если включить RAID-кэш — остаются тормоза, так как кэш не успевает сбрасываться на диск. Отсюда 1100 на X25 и 545s в режиме, когда включён только RAID-кэш.
- Самая большая загадка — почему дешёвые SSD быстрые в режиме Write-Through (выключенного) RAID кэша при включенном внутреннем? Ответ может быть только один — Write-Through («как бы отключённый») режим кэша тоже защищается батарейкой контроллера.
Примечания:
- ↑ Снижается до 13000-15000 iops через 3-5 Гб записанных данных
- ↑ В JBOD тот же диск почему-то не снижает скорость — х.з почему.
- ↑ процесс тестирования идёт примерно так: 25 секунд 2600 iops, потом 8 секунд 800 iops, потом опять 25 секунд 2600 iops, опять 8 секунд 800… То есть получается, что 256 Мб пишется на полной скорости, а потом 25 Мб в 3 раза медленнее. С одной стороны, это какой-то намёк на сброс кэша, но с другой — бред полный, так как в режиме НЕтранзакционной записи (без fdatasync=1) с включённым кэшем теми же 4к-блоками тот же SSD выдаёт стабильно 22000-25000 IOPS. А с выключенным 1100 iops.