Изменения

Производительность Ceph

3104 байта добавлено, 21:27, 8 августа 2018
м
Нет описания правки
== Производительность случайной записи ==
{{NoteWarning}} Сначала плохая новость.!
Важная особенность Ceph — ''вся запись, даже та, для которой никто этого явно не просит, ведётся транзакционно''. То есть, никакая операция записи не завершается, пока она не записана в журналы всех OSD и не сделан fsync() диска. Так сделано, чтобы предотвращать RAID WRITE HOLE-подобные ситуации рассинхронизации данных между репликами при отключении питания, потере сети и т.п…
Сама запись на устройство и репликация с других OSD происходит отложенно и асинхронно, но какая разница — она все равно тормозит создаёт дополнительную нагрузку на устройства и притормаживает последующие запросы.
Это Всё это приводит к тому, что типичная настольная SSD-шка при обычном использовании выдаёт 20000 iops на запись, а в Ceph — Ceph выдаёт '''неприлично низкие IOPS-ы''' — обычно от 500 до 2000. И это при том, то есть минимум на порядок меньшечто при обычном тестировании почти любая SSD выдаёт > 20000 iops. Всё съедают запросы синхронизации. В более старом filestore Даже самый паршивый китайский noname выдаёт не менее 10000 iops-ов чуть . NVMe легко выжимает 150000 и больше, чем в bluestore, так как он реже делает fsync. Но filestore — не выход, так как, например, снапшоты там работают со скоростью снапшотов LVM [очень медленно]стоит начать использовать fsync… и та же NVMe выдаёт 600 iops (на 2.5 порядка меньше).
Однако есть и хорошая новость!{{Note}} Старый FileStore выдаёт чуть больше iops-ов на плохих дисках, чем bluestore, так как он реже делает fsync. Но это не значит, что надо его использовать — по остальным параметрам он устарел. Например, снапшоты там работают со скоростью снапшотов LVM (очень медленно).
Инженерная мысль придумала такое чудоВ общем, как SSDчтобы понять, сколько у вас будет IOPS-шки ов на запись в Ceph, диски под него нужно тестировать с опцией fio '''fsync=1'''. Или fdatasync=1, если тестируете поверх ФС. Или можно sync=1 iodepth=1, эффект обычно почти тот же, что от fsync=1. Разница между опциями (суперсм. man fio)конденсаторами:* fsync=1 синхронизирует данные и метаданные тестируемого файла после каждой операции записи. Именно так работает BlueStore. Именно поэтому мы будем использовать именно эту опцию.* fdatasync=1 синхронизирует только данные (но не метаданные) тестируемого файла после каждой операции записи. Следовательно, которые позволяют успеть сбросить кэш во флеш-память от fsync=1 при потере питания — тестировании блочного устройства отличий нет.* sync=1 использует синхронный ввод/вывод, то есть, каждая операция начинается после завершения предыдущей. Но штука в том, что почти все движки fio при этом открывают файл с O_SYNC. А вот O_SYNC уже означает, что каждая операция записи внутри сопровождается аналогом fsync. Но при этом если iodepth > 1, то в очередь диска до синхронизации «пролезает» несколько операций и просто игнорировать запросы IOPS-ы растут, тест перестаёт быть эквивалентным записи с fsync=1.
== Конденсаторы в официальных описаниях SSD-шек обычно называются «enhanced/advanced power loss protection». Этой характеристикой часто обладают «серверные» SSD — но не все. Например, в Intel DC S3100 конденсаторов нет, а в Intel DC S4600 есть.! ==
Отсюда вытекает несколько ВАЖНЫХ вещей:Нас спасёт такое чудо инженерной мысли, как '''SSD с конденсаторами''' (точнее, обычно суперконденсаторами — ионисторами).
* Чтобы понятьКонденсаторы работают фактически как встроенный в SSD ИБП и позволяют SSD успеть сбросить кэш во флеш-память при потере питания. Таким образом кэш становится «энергонезависимым» — и таким образом SSD может просто игнорировать запросы fsync, сколько у вас будет так как точно знает, что данные из кэша в любом случае доедут до постоянной памяти. При этом '''IOPS-ов на записьы транзакционной записи становятся равны IOPS-ами нетранзакционной'''. Конденсаторы в официальных описаниях SSD-шек обычно называются «enhanced/advanced power loss protection». Этой характеристикой обладают почти только «серверные» SSD, да и то не все. Например, в Intel DC S3100 конденсаторов нет, а в Intel DC S4600 есть. То есть, диски под Ceph нужно тестировать с опцией fsync=1следует закупать '''только''' такие SSD… …Даже если рассматривать NVMe. Или fdatasync=1NVMe без конденсаторов хуже, если тестируете поверх ФСчем SATA с. Или можно sync =1 iodepth=1, эффект обычно почти тот же, что от fsyncПример теста == 3 ноды по 3 SATA 7200rpm HDD, 10 гигабит ethernet. Ceph 13.2.1, bluestorerados bench EC-пула в 1/16/64/128 потоков:* Лучше SATA Журналы на HDD: 40/100/350/450 iops* Журналы вынесены на старые серверные SSD с конденсаторами(выдающие 22000 iops каждая): 170/620/720/940 iops Итого при высокопараллельной нагрузке быстрее в 2 раза, чем NVMe без. Обычная NVMeпри низкопараллельной в 4-шка будет точно так же тормозить при синхронизации6 раз.