[Документация](../../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 МБ/с