Изменения

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

2925 байтов добавлено, 18:47, 10 ноября 2018
Нет описания правки
* Лайфхак для очень быстрых дисков: несколько OSD на одном диске.
* Гипотетический монстр производительности в вакууме: мощные процы, Intel NVMe, Infiniband или Intel 25-40GbE, SPDK/DPDK.
 
== Картина маслом «Тормозящий кэш» ==
 
Дано: 3 компа с 3x 7200rpm SATA HDD (в одном 4x HDD, но не суть важно), с 1 SSD (десктопным) под систему и ceph-mon и с 1 SSD (старым, но серверным) под журналы. Не самая быстрая 10-гигабитная сеть — флуд пингом средний RTT (задержка) 0.098ms. Развёрнут Ceph + OpenNebula с KVM. Диски под Ceph форматируются в Bluestore утилитой ceph-volume (используют LVM). Диски виртуалок лежат в обычном реплицированном ceph pool с size=3.
 
Создаём Debian-виртуалку, ставим fio, запускаем в ней тест на задержку транзакционной случайной записи: {{cmd|1=fio -ioengine=libaio -size=10G -sync=1 -direct=1 -name=test -bs=4k -iodepth=1 -rw=randwrite -runtime=60 -filename=./testfile}} (или можно не случайной, тогда rw=write, но результат идентичный).
 
# Настройки по умолчанию — все кэши дисков включены (везде <tt>hdparm -W 1</tt>, в <tt>/sys/block/*/queue/write_cache</tt> везде <tt>write back</tt>) — Ж О П А, iops=59, avg lat = 16.88ms
# Отключаю кэш записи SSD с журналами: <tt>hdparm -W 0 /dev/sdb</tt> — остаётся Ж О П А, iops=58, avg lat = 16.99ms
# Всем LVM-девайсам отключаю кэш записи: <tt>for i in /sys/block/dm-*; do echo write through > $i/queue/write_cache; done`</tt> — А Ф И Г Е Т Ь, iops=584, avg lat = 1.7ms
# Обратно включаю кэш SSDшке с журналами: <tt>hdparm -W 1 /dev/sdb</tt> — остаётся iops=582, avg lat = 1.7ms
# Откручиваю все отключения кэшей LVM: <tt>for i in /sys/block/dm-*; do echo write back > $i/queue/write_cache; done</tt> — обратно жопа, 57 iops, avg lat = 17.2ms
# Опять отключаю кэш журнальным LVM-девайсам: <tt>for i in `ls /dev/ceph-journals/lvol*`; do j=readlink $i; echo write through > /sys/block/${j##../}/queue/write_cache; done</tt> — никакого улучшения, всё та же жопа
# Отключаю кэш HDD LVM-разделам (<tt>for i in `ls /dev/ceph-*/osd-block*`; do j=readlink $i; echo write through > /sys/block/${j##../}/queue/write_cache; done</tt>) — бинго, iops=603, avg lat = 1.65ms
 
Виртуалку, в которой тестировал — даже не перезапускал между тестами.
 
Картина маслом — «тормозящий кэш» (c).
 
{{NoteBox|Мораль — отключайте write_cache LVM-девайсам}}
== DPDK и SPDK ==