Изменения

Перейти к: навигация, поиск

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

8 байтов добавлено, 16:09, 15 июля 2019
Нет описания правки
Причём даже не до конца понятно, что конкретно там тормозит — такое ощущение, что всё целиком. Выявить какие-то «горячие точки» при профилировании трудно, просто при записи выполняется много всякой C++ной мелочи, которая суммарно отъедает достаточно много времени. Одно горячее место — вычисление цифровых подписей пакетов (включено по умолчанию, можно отключить), другое — сериализация/десериализация (код обрабатывает каждое поле пакета, чуть ли не каждый байт, отдельным вызовом функции). Дальше идут уже malloc-и, которых тоже происходят тонны. Причём всё это происходит в несколько потоков. На это ещё навёрнута какая-то странная смесь буферизованного и прямого I/O.
RocksDB не виновата — её я пробовал бенчить , она быстрая, ~8000 транзакций в секунду на NVMe в 1 поток она даёт и даже в 256 потоков масштабируется до ~120000 tpsв 256 потоков. На той же NVMe Ceph OSD даёт только 10-20 тысяч iops даже во много потоков.
Сеть тоже не виновата — её я пробовал бенчить с помощью nbd (network block device). При прямом доступе диск выдаёт 50000 iops, при пробросе диска с одного сервера на другой через nbd — 8000 iops. То есть, добавленная latency сети — примерно 0.1ms. Это не много.

Навигация