Изменения

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

2469 байтов добавлено, 12:28, 6 августа 2019
Нет описания правки
== Пример теста от Micron ==
Пример самолётного сетапа от Micron с процами по полляма (2x Xeon GoldPlatinum 8168), 1002x100-гбит сетью (точнее 2x2x100, так как 2 карты по 2 порта) и 10x топовыми NVMe (с конденсаторами, ага) в каждом узле, 4 узла, репликация 2x: https://www.micron.com/resource-details/30c00464-e089-479c-8469-5ecb02cfe06f
Всего 350000 iops на запись в пике на весь кластер, при 100 % загрузке CPU. Казалось бы, довольно много, но если поделить 350000/40 osd — получится 8750 иопс на 1 osd. С учётом репликации на диски нагрузка двойная, выходит, 17500 иопс. Ок, журналы тоже удваивают нагрузку, итого — 35000 iops на запись смог выжать ceph из одной NVMe… которая сама по спеке может 260000 иопс в одиночку. Вот такой вот overhead.
UPD: Поправка: <s>в чём микрон неправ — они не использовали SPDK и DPDK. Есть большая вероятность, что в их случае выигрыш мог быть в несколько раз.</s> Нет, это бессмысленно.
 
=== Апдейт ===
 
https://www.micron.com/-/media/client/global/documents/products/other-documents/micron_9300_and_red_hat_ceph_reference_architecture.pdf
 
NVMe обновились до Micron 9300 (максимальной ёмкости 12.8 ТБ). iops-ов такие диски дают даже не 260 тыс., а 310 тыс. Всё остальное осталось прежним. 477029 iops на запись в пике при 100 клиентах (то есть каждому всего по 4770 иопс). При 10 клиентах только 294000 iops — то есть на 1 клиента 29400 иопс.
 
Почему стало лучше? Предположительно, благодаря тюнингу. По сравнению с прошлым тестом они:
* отключили чексуммы мессенджера (ms_crc_data=false) и чексуммы блюстора (bluestore_csum_type=none)
* сделали 64x4 MB memtable и merge=32 вместо стандартных 4x64 и merge=2 — это увеличивает WA, но делает compaction-ы быстрее: <tt>bluestore_rocksdb_options = compression=kNoCompression,max_write_buffer_number=64,min_write_buffer_number_to_merge=32,recycle_log_file_num=64,compaction_style=kCompactionStyleLevel,write_buffer_size=4MB,target_file_size_base=4MB,max_background_compactions=64,level0_file_num_compaction_trigger=64,level0_slowdown_writes_trigger=128,level0_stop_writes_trigger=256,max_bytes_for_level_base=6GB,compaction_threads=32,flusher_threads=8,compaction_readahead_size=2MB</tt>
* выдали 14 гб RAM каждому OSD
* osd_max_pg_log_entries=osd_min_pg_log_entries=osd_pg_log_dups_tracked=osd_pg_log_trim_min = 10 (хз, по-моему, ничего не даёт)
 
Также надо отметить, что:
* cephx у них уже был отключён. В этот раз зачем-то добавили и отключение подписей — видимо, читали мою статью. Но это нафиг не надо, при отключенном cephx подписи можно уже не отключать.
* debug objecter = 0/0 и вообще отключенные дебаги у них тоже уже были
* с prefer_deferred_size и min_alloc_size они, видимо, не игрались (а зря)
== Модели ==