forked from vitalif/vitastor
114 lines
7.1 KiB
Markdown
114 lines
7.1 KiB
Markdown
[Документация](../../README-ru.md#документация) → Производительность → Пример сравнения с Ceph
|
||
|
||
-----
|
||
|
||
[Read in English](comparison1.en.md)
|
||
|
||
# Пример сравнения с Ceph
|
||
|
||
- [Описание стенда](#описание-стенда)
|
||
- [Производительность голых дисков](#производительность-голых-дисков)
|
||
- [2 реплики](#2-реплики)
|
||
- [Ceph 15.2.4 (Bluestore)](#ceph-15-2-4-bluestore)
|
||
- [Vitastor 0.4.0 (нативный драйвер fio)](#vitastor-0-4-0-нативный-драйвер-fio)
|
||
- [Vitastor 0.4.0 (NBD)](#vitastor-0-4-0-nbd)
|
||
- [EC/XOR 2+1](#ec/xor-2-1)
|
||
- [Ceph 15.2.4](#ceph-15-2-4)
|
||
- [Vitastor 0.4.0](#vitastor-0-4-0)
|
||
|
||
## Описание стенда
|
||
|
||
Железо: 4 сервера, в каждом:
|
||
- 6x SATA SSD Intel D3-4510 3.84 TB
|
||
- 2x Xeon Gold 6242 (16 cores @ 2.8 GHz)
|
||
- 384 GB RAM
|
||
- 1x 25 GbE сетевая карта (Mellanox ConnectX-4 LX), подключённая к свитчу Juniper QFX5200
|
||
|
||
Экономия энергии CPU отключена. В тестах и Vitastor, и Ceph развёрнуто по 2 OSD на 1 SSD.
|
||
|
||
Все результаты ниже относятся к случайной нагрузке 4 КБ блоками (если явно не указано обратное).
|
||
|
||
Тесты в 8 потоков проводились на 8 400GB RBD образах со всех хостов (с каждого хоста запускалось 2 процесса fio).
|
||
Это нужно потому, что в Ceph несколько RBD-клиентов, пишущих в 1 образ, очень сильно замедляются.
|
||
|
||
Настройки RocksDB и Bluestore в Ceph не менялись, единственным изменением было отключение cephx_sign_messages.
|
||
|
||
Тест на чтение в 8 потоков проводился на 1 большом образе (3.2 ТБ) со всех хостов (опять же, по 2 fio с каждого).
|
||
В Vitastor никакой разницы между 1 образом и 8-ю нет. Естественно, примерно 1/4 запросов чтения
|
||
в такой конфигурации, как и в тестах Ceph выше, обслуживалась с локальной машины. Если проводить
|
||
тест так, чтобы все операции всегда обращались к первичным OSD по сети - тест сильнее упирался
|
||
в сеть и результат составлял примерно 689000 iops.
|
||
|
||
Настройки Vitastor: `--disable_data_fsync true --immediate_commit all --flusher_count 8
|
||
--disk_alignment 4096 --journal_block_size 4096 --meta_block_size 4096
|
||
--journal_no_same_sector_overwrites true --journal_sector_buffer_count 1024
|
||
--journal_size 16777216`.
|
||
|
||
## Производительность голых дисков
|
||
|
||
- T1Q1 запись ~27000 iops (задержка ~0.037ms)
|
||
- T1Q1 чтение ~9800 iops (задержка ~0.101ms)
|
||
- T1Q32 запись ~60000 iops
|
||
- T1Q32 чтение ~81700 iops
|
||
|
||
## 2 реплики
|
||
|
||
### Ceph 15.2.4 (Bluestore)
|
||
|
||
- T1Q1 запись ~1000 iops (задержка ~1ms)
|
||
- T1Q1 чтение ~1750 iops (задержка ~0.57ms)
|
||
- T8Q64 запись ~100000 iops, потребление CPU процессами OSD около 40 ядер на каждом сервере
|
||
- T8Q64 чтение ~480000 iops, потребление CPU процессами OSD около 40 ядер на каждом сервере
|
||
|
||
Если не учитывать как обычно запредельное потребление CPU (40 ядер), не так уж и плохо для Ceph.
|
||
Данные серверы - как раз хороший пример сбалансированных Ceph-нод - 6 SATA SSD как раз
|
||
утилизируют 25-гигабитную сеть, а без 2 мощных процессоров Ceph-у бы не хватило ядер,
|
||
чтобы выдать пристойный результат.
|
||
|
||
### Vitastor 0.4.0 (нативный драйвер fio)
|
||
|
||
- T1Q1 запись: 7087 iops (задержка 0.14ms)
|
||
- T1Q1 чтение: 6838 iops (задержка 0.145ms)
|
||
- T2Q64 запись: 162000 iops, потребление CPU - 3 ядра на каждом сервере
|
||
- T8Q64 чтение: 895000 iops, потребление CPU - 4 ядра на каждом сервере
|
||
- Линейная запись (4M T1Q32): 2800 МБ/с
|
||
- Линейное чтение (4M T1Q32): 1500 МБ/с
|
||
|
||
### Vitastor 0.4.0 (NBD)
|
||
|
||
NBD расшифровывается как "сетевое блочное устройство", но на самом деле оно также
|
||
работает просто как аналог FUSE для блочных устройств, то есть, представляет собой
|
||
"блочное устройство в пространстве пользователя".
|
||
|
||
NBD - на данный момент единственный способ монтировать Vitastor ядром Linux. Его
|
||
производительность немного хуже из-за дополнительных операций копирований данных
|
||
между ядром и пространством пользователя, что, правда, в основном затрагивает линейное
|
||
чтение/запись, а не случайный доступ.
|
||
|
||
- T1Q1 запись: 6000 iops (задержка 0.166ms)
|
||
- T1Q1 чтение: 5518 iops (задержка 0.18ms)
|
||
- T1Q128 запись: 94400 iops
|
||
- T1Q128 чтение: 103000 iops
|
||
- Линейная запись (4M T1Q128): 1266 МБ/с (в сравнении с 2800 МБ/с через fio)
|
||
- Линейное чтение (4M T1Q128): 975 МБ/с (в сравнении с 1500 МБ/с через fio)
|
||
|
||
## EC/XOR 2+1
|
||
|
||
### Ceph 15.2.4
|
||
|
||
- T1Q1 запись: 730 iops (задержка ~1.37ms latency)
|
||
- T1Q1 чтение: 1500 iops с холодным кэшем метаданных (задержка ~0.66ms), 2300 iops через 2 минуты прогрева (задержка ~0.435ms)
|
||
- T4Q128 запись (4 RBD images): 45300 iops, потребление CPU - 30 ядер на каждом сервере
|
||
- T8Q64 чтение (4 RBD images): 278600 iops, потребление CPU - 40 ядер на каждом сервере
|
||
- Линейная запись (4M T1Q32): 1950 МБ/с в пустой образ, 2500 МБ/с в заполненный образ
|
||
- Линейное чтение (4M T1Q32): 2400 МБ/с
|
||
|
||
### Vitastor 0.4.0
|
||
|
||
- T1Q1 запись: 2808 iops (задержка ~0.355ms)
|
||
- T1Q1 чтение: 6190 iops (задержка ~0.16ms)
|
||
- T2Q64 запись: 85500 iops, потребление CPU - 3.4 ядра на каждом сервере
|
||
- T8Q64 чтение: 812000 iops, потребление CPU - 4.7 ядра на каждом сервере
|
||
- Линейная запись (4M T1Q32): 3200 МБ/с
|
||
- Линейное чтение (4M T1Q32): 1800 МБ/с
|