Изменения

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

41 байт добавлено, 20:59, 8 августа 2018
м
Нет описания правки
* IOPS-ы случайной записи: {{Cmd|1=fio -ioengine=libaio -fdatasync=1 -direct=1 -invalidate=1 -name=test -bs=4k -iodepth=16 -rw=randwrite -runtime=60 -filename=/dev/sdX}}
«А почему так мало..." - мало…» — см.ниже.
После сборки Ceph можно тестировать так:
* IOPS через rados bench в режиме, соответствующем RBD (4 Кб блоки в 4 Мб объектах) и 16 одновременно запущенных виртуалок:<br /> {{Cmd|1=rados bench -p ваш_пул -t 16 -b 4096 -o $((4096*1024)) 60 write}}
* Цифру 16 можно менять, скажем, от 1 до 128 (1 - 1 — 4 - 16 - 64 - — 16 — 64 — 128), чтобы понять, как меняются IOPS-ы при разной степени параллелизма* Тем же самым fio через ioengine=rbd (здесь fdatasync не нужен): {{Cmd|1=fio -ioengine=rbd -direct=1 -invalidate=1 -name=test -bs=4k -iodepth=16 -rw=randwrite -pool=rpool_hdd -runtime=60 -rbdname=testimg}} * В несколько потоков - потоков — добавить к fio опцию `-jobs=N`* Можно тестировать и fio изнутри виртуалки, НО в этом случае помните, что параллельной нагрузки она не создаст - создаст — qemu rbd драйвер работает в один поток. Соответственно вы, скорее всего, не увидите 100100 % утилизации дисков на хостах.
* Производительность может отличаться на заполненном и незаполненном RBD-образе
{{Note}} Сначала плохая новость.
Важная особенность Ceph — Ceph — вся запись, даже та, для которой никто этого явно не просит, ведётся транзакционно. То есть, никакая операция записи не завершается, пока она не записана в журналы всех OSD и не сделан fsync() диска. Так сделано, чтобы предотвращать RAID WRITE HOLE-подобные ситуации рассинхронизации данных между репликами при отключении питания, потере сети и т.п...п…
Сама запись на устройство и репликация с других OSD происходит отложенно и асинхронно, но какая разница — разница — она все равно тормозит последующие запросы.
Это приводит к тому, что типичная настольная SSD-шка при обычном использовании выдаёт 20000 iops на запись, а в Ceph — Ceph — обычно от 500 до 2000, то есть минимум на порядок меньше. Всё съедают запросы синхронизации. В более старом filestore iops-ов чуть больше, чем в bluestore, т.к. так как он реже делает fsync. Но filestore — filestore — не выход, так как, например, снапшоты там работают со скоростью снапшотов LVM [очень медленно].
Однако есть и хорошая новость!
Инженерная мысль придумала такое чудо, как SSD-шки с (супер)конденсаторами, которые позволяют успеть сбросить кэш во флеш-память при потере питания — питания — и просто игнорировать запросы fsync.
Конденсаторы в официальных описаниях SSD-шек обычно называются "enhanced«enhanced/advanced power loss protection"protection». Этой характеристикой часто обладают "серверные" SSD - «серверные» SSD — но не все. Например, в Intel DC S3100 конденсаторов нет, а в Intel DC S4600 есть.
Отсюда вытекает несколько ВАЖНЫХ вещей: