У меня есть кластер серверов, каждый из которых имеет 128 ГБ или ОЗУ и 6 вращающихся дисков по 2 ТБ, выделенных для OSD BlueStore. Серверы также действуют как хосты KVM, поэтому они не предназначены для Ceph. В прошлом при использовании FileStore мы заметили, что если на сервере мало доступной памяти (например, 10–20 ГБ), то OSD на этом хосте начинают выполнять намного больше операций ввода-вывода, чем другие, что обычно замедляет работу всего кластера. Теперь с BlueStore я вижу, что каждый демон OSD резервирует около 3-4 ГБ памяти для кеширования. Я зарезервировал 5 ГБ на OSD для каждого сервера, которые не будут тратиться на виртуальные машины на всякий случай.
Мои вопросы: имеет ли значение теперь, сколько свободной памяти у хоста для производительности, и нужно ли мне упаковывать большинство виртуальных машин на хостах без OSD, как раньше? Или мне не нужно думать об этом, пока я не столкнусь с ситуацией OOM?
Я использую Ceph 14.2.0.
Linux вытеснит кеш файловой системы намного быстрее, чем страницы анонимной или общей памяти. Таким образом, из-за нехватки памяти вы теряете кеш и делаете намного больше операций ввода-вывода в секунду для дисков. Необработанный доступ к устройству не использует файлы.
https://ceph.com/community/new-luminous-bluestore/
Использование памяти
В FileStore хорошо то, что в нем использовалась обычная файловая система Linux, а это означало, что ядро отвечало за управление памятью для кэширования данных и метаданных. В частности, ядро может использовать всю доступную оперативную память в качестве кеша, а затем освободить его, как только память понадобится для чего-то еще. Поскольку BlueStore реализован в пользовательском пространстве как часть OSD, мы управляем нашим собственным кешем, и в нашем распоряжении меньше инструментов управления памятью.
Суть в том, что в BlueStore есть опция конфигурации bluestore_cache_size, которая контролирует, сколько памяти каждое OSD будет использовать для кеша BlueStore. По умолчанию это 1 ГБ для OSD на жестком диске и 3 ГБ для OSD на SSD, но вы можете установить любое значение, подходящее для вашей среды. (Дополнительную информацию см. В руководстве по настройке BlueStore.)
(Напротив, многие базы данных используют файлы плюс собственное кеширование. Но и это допустимый вариант.)
Раньше для кеш-памяти файловой системы требовалось несколько десятков ГБ. Теперь большая часть этого переместилась на анонимные страницы фиксированного размера. Вам по-прежнему нужен кеш, чтобы снизить количество операций ввода-вывода в секунду для рабочей нагрузки виртуальной машины. Может быть проще разделить хранилище и вычислительные узлы, если у вас их достаточно для практического применения.