Изменения

м
Нет описания правки
Результаты приведены при нагрузке на один диск. Если дать параллельную нагрузку на 3 первых из списка диска, фактические iops-ы снижаются в 2 раза — в своём оптимальном режиме 12500, а во втором по оптимальности (с обоими включенными кэшами) — до 4500. Возможно, это обусловлено тем, что тестировался уже не самый новый и не самый быстрый RAID-контроллер (хотя SATA 6 GB/s вроде поддерживает).
 
== Умозаключения ==
 
В целом, если немножко вдуматься, результаты не очень очевидные. Объяснение им в моём понимании такое:
* На серверных SSD внутренний кэш записи может тормозить транзакционную запись. Отсюда 7000 на DC3500.
* На дешёвых SSD внутренний кэш записи помогает транзакционной записи, но не сильно. Отсюда 2600/800 на 545s и 5000 на X25. Либо, возможно, кроме волатильного кэша у них есть ещё и неволатильный (например, маленькая область SLC флеш памяти) и при отключении кэша отключаются оба, а при включении и fsync «отключается» только волатильный.
* На дешёвых SSD при выключенном внутреннем кэше записи скорость '''не'''транзакционной записи очень сильно проседает (до скорости транзакционной), в итоге, даже если включить RAID-кэш — остаются тормоза, так как кэш не успевает сбрасываться на диск. Отсюда 1100 на X25 и 545s в режиме, когда включён только RAID-кэш.
* Самая большая загадка — почему дешёвые SSD быстрые в режиме Write-Through (выключенного) RAID кэша при включенном внутреннем? Ответ может быть только один — в Write-Through («как бы отключённом») режиме кэша RAID контроллер тоже игнорирует запросы fsync. Остаётся только надеяться, что «Write-Through» фактически означает «записать в кэш, подтвердить запись и сразу передать на диск» — в этом случае при отключении питания данные всё-таки останутся в кэше и при следующем включении доедут до назначения. А вот если WT означает «пишем мимо кэша», то это просто отключение транзакционности и при отключении питания данные, скорее всего, повредятся. Чтобы проверить, как оно в реальности, проведены дополнительные тесты:
** Простой тест записи пройден. Тест такой: пишем с максимальной скоростью 2 Гб, делаем fsync, выдёргиваем питание, включаем и проверяем, что все 2 гб записались.
** Более сложный тест записи тоже пройден. Тест такой: запускаем на машине программу, который пишет по 1 случайному блоку в случайное место на диске, после каждой записи делает fsync и рапортует по сети второй машине, что только что записала. В процессе записи выдёргиваем питание, потом включаем обратно, копируем лог на тестируемую машину и проверяем, что все данные записались. По сути, программа изображает из себя СУБД, а проверка — то, что все закоммиченные транзакции записаны на диск. Скрипты, которыми тестировал: http://yourcmc.ru/git/vitalif/fsync-check
** Вывод: по-видимому, Write-Through кэш тоже защищён батарейкой, а значит, RAID контроллеры можно использовать.
== Выводы ==
** Серверные 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 и дёргаем питание), как ни странно, пройден, так что, может, там и нормально всё.
Примечания:
<references />
{{wl-publish: 2018-06-27 18:19:47 +0300 | VitaliyFilippov }}