Simplified distributed block storage with strong consistency, like in Ceph
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

7.1 KiB

Документация → Производительность → Пример сравнения с Ceph


Read in English

Пример сравнения с Ceph

Описание стенда

Железо: 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 МБ/с