Изменения

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

422 байта добавлено, 22:05, 4 октября 2019
Нет описания правки
== Настройка виртуалок и ФС ==
* С дефолтными опциями qemu подключает RBD, увы, криво.* Криво — это значит, что а) используется медленная эмуляция lsi-контроллера б) используется режим с кэшированием чтения, но без кэширования записи.* Опция cache диска Кэш в qemu автоматически включает/выключает регулируется опцией, собственно, cache. Бывает <не указано>, writethrough, writeback, none, unsafe, directsync. С RBD эта опция регулирует работу rbd cache в , т.е. кэша на стороне клиентской библиотеке библиотеки Ceph (librbd).* Но cache=unsafe и cache=directsync с RBD не работаютработает, операции записи всё равно ждут подтверждения. А writethrough, <не указано> и directsync, по сути, эквивалентны.
* RBD cache сильно помогает на HDD, но на SSD-кластере наоборот вносит заметное торможение. Что-то там сделано с блокировками, что-то там однопоточное, всё это оптимизируют, но пока не оптимизировали.
* Поэтому юзать надо writeback (для HDD) или none (для SSD).
* Есть следующие способы эмуляции дисков: lsi (самый медленный), virtio-scsi (достаточно быстрый), virtio (самый быстрый, но до QEMU 4.0 не умеет TRIM). Вообще virtio-scsi умеет multiqueue и поэтому на быстром хранилище должен быть быстрее virtio — но в случае с Ceph multiqueue, по-видимому, значения не имеет.
* А ещё тормозит файловая система! Конкретно, если у вас не включена опция lazytime, то при каждой мелкой записи ФС обновляет mtime, то есть время модификации inode-а. Так как это метаданные, а ФС журналируемые — это изменение журналируется. Из-за этого при тесте <tt>fio -sync=1 -iodepth=1 -direct=1</tt> поверх ФС без lazytime iops-ы уменьшаются в 3-4 раза.