Изменения

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

355 байтов убрано, 20:42, 12 ноября 2018
Нет описания правки
Ну а потом журнал просто потихоньку чистим. А у них так не получается — у них rocksdb, данные и метаданные в логически разных местах, а журналирование — фактически отдельная транзакция.
Вот простой эксперимент: «кластер» из 2 SSD, по 4 OSD на SSD, дефолтные SSD-настройки. Делаю strace одной из 4-х osd на одной из двух SSD во время запуска теста fio в 1 поток на 60 секунд (на эту осд пришлось по perf counter-ам 2711 запросов):. 
<pre>
root@m2:~# grep -P ceph daemon osd.0 perf dump | jq 'io_submit.*= \dosd.op +$.osd.subop' osd0-trace.txt |wc 8997 99233 21734498698root@m2:~# grep -P 'io_submit.*iov_len=4096.*= \d+$(' osd0-trace.txt |wc-l 8997 99233 217344910854root@m2:~# grep -P 'pwriteio_submit\(.*iov_len= \d+$4096' osd0-trace.txt |wc-l 6832 63379 100056510854root@m2:~# grep -P 'sync.*= pwritev\d+$(' osd0-trace.txt |wc-l 27266 177045 14328385436root@m2:~# grep -P 'pwritesync.*= 4096$\(' osd0-trace.txt |wc-l 1709 16195 24655721716root@m2:~# grep -P 'pwritepwritev.*= 81924096$' osd0-trace.txt |wc-l 4945 45518 7266623110root@m2:~# grep -P 'pwritepwritev.*= 122888192$' osd0-trace.txt |wc-l 168 1566 257462285root@m2:~# grep -P 'pwritepwritev.*= 1638412288$' osd0-trace.txt |wc-l 10 100 160041
</pre>
То есть эта тварь на 2711 8698 запросов записи сделала 15829 16290 записей и ещё 27266 21716 (!!!) синков! (sync_file_range и fdatasync)
Из общего числа 10706 записей были размером 4кб, 4945 — 8кб, 168 — 12кб и 10 — 16кб. Итого Write Amplification с SSD-настройками = 212.14!!! Правда, в то же время по данным iostat WA лишь около 414 — не так уж и плохо. ГдеНо fsync-то по пути спасает линукс и объединяет ов просто море — больше, чем запросов записи, что ли...:)
== DPDK и SPDK ==