Изменения

Перейти к: навигация, поиск

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

3038 байтов добавлено, 13:01, 14 февраля 2019
Нет описания правки
* Для SAS и NVMe включайте blk-mq (ну или юзайте свежие ядра, в районе 4.18 оно включается по умолчанию). Но для SATA blk-mq обычно бесполезен или почти бесполезен.
* Фактическая глубина очереди, используемая Ceph OSD при случайной записи, редко больше 10 (посмотреть можно при работе утилитой {{cmd|iostat -xmt 1}}).
 
== Процессоры ==
 
* На SSD Ceph ОЧЕНЬ СИЛЬНО упирается в процессор. Можно сказать, что процессор — основной bottleneck.
* Как сказано в презентации Ника Фиска — Ceph is a Software-Defined Storage '''and every piece of Ceph «Software»''' will run faster with every GHz of CPU frequency.
* Кроме частоты, на серверных процессорах часто наличествует NUMA (Non-Uniform Memory Access). То есть, часть памяти и оборудования доступна процессору напрямую, а часть — только через другой процессор.
* Для максимизации производительности конфигураций с NUMA лучше избегать, а процессорам с бОльшим числом ядер и меньшей частотой лучше предпочитать бОльшую частоту и меньшее число ядер…
* …но в пределах разумного, так как даже один OSD на серверном SSD под нагрузкой может спокойно выжрать на 100 % ядер 6.
* Под частотой подразумевается номинальная частота, а не Turbo Boost, так как оный работает только
* Рекомендации по привязке OSD к отдельным CPU (taskset), можно сказать, неактуальны, так как Ceph OSD сильно многопоточные — при записи постоянно активно как минимум 4 потока, и ограничение их несколькими ядрами сильно урезает производительность.
* Есть два параметра, которые регулируют число рабочих потоков OSD — osd_op_num_shards и osd_op_num_threads_per_shard…
* …Но менять их бесполезно, поднять производительность таким образом не получается абсолютно, дефолтные значения (1x5 на HDD и 2x8 на SSD) оптимальны.
* Есть одна мера, которая помогает поднять производительность сразу раза в 2: отключение экономии энергии процессором:
** <tt>cpupower idle-set -D 1</tt> — отключает C-States
** <tt>for i in {0..63}; do cpufreq-set -c $i -g performance; done</tt> (вместо 63 подставьте своё число ядер минус 1) — отключение снижение частоты через множитель
* После этих двух команд процессор начинает греться как ПЕЧ, но iops-ы увеличиваются сразу раза в 2
== Оценка производительности кластера ==

Навигация