Изменения

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

1343 байта добавлено, 11:53, 15 января 2019
Нет описания правки
# Если запись крупная, то она сразу отправляется на диск. Потом Sync.))). и потом тоже обновляем метаданные. Sync.
И ещё всё это приправлено тредами, блокировками…Все мы знаем, что наиболее оптимальный способ написания любых i/o приложений — nginx-подобный — «one thread per core + zero-copy». А тут OSD при старте сразу создаёт ~50 потоков, из которых при записи постоянно активны как минимум 4.
То есть получается, что есть как бы журнал, есть данные и есть метаданные. И ещё если мелкие записи то есть очередь отложенной записи (в той же бд, но отдельная), её сначала надо писать, а потом сбрасывать и очищать. В итоге получается на 1 входящую транзакцию штук 5 реальных транзакций.
Итого WA = 4.16 (4926/1183), а sync-ов опять больше, чем запросов записи.
 
Теоретически 1 запись 4кб блока должна представляться как просто запись 4кб блока + обновление максимум одного сектора в журнале БД (обновление 1 блока в списке блоков объекта всяко не должно занимать больше 512 байт). Если бы так и было — WA было бы 1.125. Однако в Bluestore WA находится на уровне 3-5. Предположительные причины:
#* отсутствие собственного механизма журналирования
#* хранение блоков, занимаемых объектом, не в виде дерева extent-ов (как это обычно делается во всех файловых системах), а в виде одного-нескольких ключей в RocksDB
== DPDK и SPDK ==