2018-06-27 Тестирование различных способов подключения SSD для Ceph

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м
Строка 111: Строка 111:
 
* На дешёвых SSD при выключенном внутреннем кэше записи скорость '''не'''транзакционной записи сильно проседает, в итоге, даже если включить RAID-кэш — остаются тормоза, так как кэш не успевает сбрасываться на диск. Отсюда 1100 на X25 и 545s в режиме, когда включён только RAID-кэш.
 
* На дешёвых SSD при выключенном внутреннем кэше записи скорость '''не'''транзакционной записи сильно проседает, в итоге, даже если включить RAID-кэш — остаются тормоза, так как кэш не успевает сбрасываться на диск. Отсюда 1100 на X25 и 545s в режиме, когда включён только RAID-кэш.
 
* Самая большая загадка — почему дешёвые SSD быстрые в режиме Write-Through (выключенного) RAID кэша при включенном внутреннем? Ответ может быть только один — в Write-Through («как бы отключённом») режиме кэша контроллер тоже игнорирует запросы fsync. Остаётся только надеяться, что «Write-Through» фактически означает «записать в кэш, подтвердить запись и сразу передать на диск» — в этом случае при отключении питания данные всё-таки останутся в кэше и при следующем включении доедут до назначения. А вот если WT означает «пишем мимо кэша», то это просто отключение транзакционности и при отключении питания данные, скорее всего, повредятся.
 
* Самая большая загадка — почему дешёвые SSD быстрые в режиме Write-Through (выключенного) RAID кэша при включенном внутреннем? Ответ может быть только один — в Write-Through («как бы отключённом») режиме кэша контроллер тоже игнорирует запросы fsync. Остаётся только надеяться, что «Write-Through» фактически означает «записать в кэш, подтвердить запись и сразу передать на диск» — в этом случае при отключении питания данные всё-таки останутся в кэше и при следующем включении доедут до назначения. А вот если WT означает «пишем мимо кэша», то это просто отключение транзакционности и при отключении питания данные, скорее всего, повредятся.
 +
** Простой тест записи (пишем во весь опор 2 Гб, делаем fsync и дёргаем питание), как ни странно, пройден, так что, может, там и нормально всё.
  
 
Примечания:
 
Примечания:
 
<references />
 
<references />
 
{{wl-publish: 2018-06-27 18:19:47 +0300 | VitaliyFilippov }}
 
{{wl-publish: 2018-06-27 18:19:47 +0300 | VitaliyFilippov }}

Версия 17:11, 28 июня 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,

кэш диска вкл

Без

fdatasync

Intel DC3500 SSDSC2BB080G4 80GB 25000 7000 9500 9500 26000 5000 21000 7000 26000
Intel X25-M SSDSA2M160G2GC 160GB 1100 21000 1100 9000 1100 5000 1100 5000 21000
Intel 320 SSDSA2CW160G3 160GB 20000

↓ 14000[1]

20000

↓ 14000

9500 9500 20000[2] 4500 9500 8000 20000
Intel 545s SSDSC2KW256G8 256GB 1100 33000 1150 9000 1100 то 2100,

то 700

1100 то 2600,

то 800[3]

33000

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

21000-26000 можно воспринимать как одинаковые цифры, так как скорость запись на один и тот же SSD на самом деле может варьироваться от теста к тесту и чтобы её установить точно, нужно более расширенное и долгое тестирование с представлением результатов в виде графиков.

Результаты приведены при нагрузке на один диск. Если дать параллельную нагрузку на 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 и не нуждаются), а RAID-контроллер точно не может быть узким местом.
  • Оптимальный способ подключения дешёвых настольных 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 («как бы отключённом») режиме кэша контроллер тоже игнорирует запросы fsync. Остаётся только надеяться, что «Write-Through» фактически означает «записать в кэш, подтвердить запись и сразу передать на диск» — в этом случае при отключении питания данные всё-таки останутся в кэше и при следующем включении доедут до назначения. А вот если WT означает «пишем мимо кэша», то это просто отключение транзакционности и при отключении питания данные, скорее всего, повредятся.
    • Простой тест записи (пишем во весь опор 2 Гб, делаем fsync и дёргаем питание), как ни странно, пройден, так что, может, там и нормально всё.

Примечания:

  1. Снижается до 13000-15000 iops через 3-5 Гб записанных данных
  2. В JBOD тот же диск почему-то не снижает скорость — х.з почему.
  3. процесс тестирования идёт примерно так: 25 секунд 2600 iops, потом 8 секунд 800 iops, потом опять 25 секунд 2600 iops, опять 8 секунд 800… То есть получается, что 256 Мб пишется на полной скорости, а потом 25 Мб в 3 раза медленнее. С одной стороны, это какой-то намёк на сброс кэша, но с другой — бред полный, так как в режиме НЕтранзакционной записи (без fdatasync=1) с включённым кэшем теми же 4к-блоками тот же SSD выдаёт стабильно 22000-25000 IOPS. А с выключенным 1100 iops.