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

Железо: 3 сервера, в каждом:

  • 8x NVMe Samsung PM9A3 1.92 TB
  • 2x Xeon Gold 6342 (24 ядра @ 2.8 GHz)
  • 256 GB RAM
  • Двухпортовая 25 GbE сетевая карта Mellanox ConnectX-4 LX с поддержкой RoCEv2
  • Подключение к 2 коммутаторам Mellanox SN2010 в MLAG

Примечания

Версия Vitastor 1.3.1.

Тесты проводились с самих серверов хранения - по 4 клиента fio с каждого из 3 серверов.

Тестировался один большой образ размером 3 ТБ со всех хостов - создавать отдельные образы для тестов в Vitastor необязательно, т.к. в Vitastor нет замедления при записи в один узел несколькими клиентами.

Экономия энергии CPU отключена. На каждый NVMe создавалось 4 OSD. Контрольные суммы не включались. Тесты с контрольными суммами будут проведены позднее. Тогда же будет протестирована более новая версия Vitastor, и результаты будут обновлены.

Конфигурация CPU стенда неоптимальна из-за NUMA - двухпроцессорных серверов лучше избегать. Особенно это проявлялось во время тестов с RDMA - выражалось это в потреблении 100% одного ядра CPU одним процессом ksoftirqd и работой одного из двух сетевых портов на скорости 3-5 ГБит/с вместо 25 ГБит/с - предположительно, из-за “непопаданий” RFS (Receive Flow Steering) на нужные ядра. Решить эту проблему во время проведения тестов не получилось. Было перепробовано множество различных настроек, но в итоге тесты проведены с настройками по умолчанию, т.к. улучшения добиться не удалось.

Производительность голых дисков

  • Линейная запись ~1000-2000 МБ/с, в зависимости от состояния сборщика мусора диска
  • Линейное чтение ~3300 МБ/с
  • T1Q1 запись ~60000 iops (задержка ~0.015ms)
  • T1Q1 чтение ~14700 iops (задержка ~0.066ms)
  • T1Q16 запись ~180000 iops
  • T1Q16 чтение ~120000 iops
  • T1Q32 запись ~180000 iops
  • T1Q32 чтение ~195000 iops
  • T1Q128 запись ~180000 iops
  • T1Q128 чтение ~195000 iops
  • T4Q128 запись ~525000 iops
  • T4Q128 чтение ~750000 iops

Из данных цифр очевидно, что при наличии более быстрой сети результаты были бы значительно лучше, так как в диски тест, очевидно, не упирался. Например, теоретический предел по линейному чтению для 24 таких дисков был бы около 79.2 ГБайт/с, то есть, 633 гигабита в секунду. Реальная скорость чтения (и случайного, и линейного) Vitastor составила примерно 16 ГБайт/с, то есть 130 гигабит в секунду. При этом следует заметить, что этот результат всё равно значительно лучше пропускной способности сети отдельно взятого узла - что тоже вполне логично, так как тест выполнялся со всех трёх узлов.

2 реплики

TCP RDMA
Линейное чтение (4M T6 Q16) 13.13 ГБ/с 16.25 ГБ/с
Линейная запись (4M T6 Q16) 8.16 ГБ/с 7.88 ГБ/с
Чтение 4k T1 Q1 8745 iops 10252 iops
Запись 4k T1 Q1 8097 iops 11488 iops
Чтение 4k T12 Q128 1305936 iops 4265861 iops
Запись 4k T12 Q128 660490 iops 1384033 iops

Потребление CPU OSD на 1 диск:

TCP RDMA
Линейное чтение (4M T6 Q16) 29.7 % 29.8 %
Линейная запись (4M T6 Q16) 84.4 % 33.2 %
Чтение 4k T12 Q128 98.4 % 119.1 %
Запись 4k T12 Q128 173.4 % 175.9 %

Потребление CPU на 1 клиента (fio):

TCP RDMA
Линейное чтение (4M T6 Q16) 100 % 85.2 %
Линейная запись (4M T6 Q16) 55.8 % 48.8 %
Чтение 4k T12 Q128 99.9 % 96 %
Запись 4k T12 Q128 71.6 % 48.5 %

3 реплики

TCP RDMA
Линейное чтение (4M T6 Q16) 13.98 ГБ/с 16.54 ГБ/с
Линейная запись (4M T6 Q16) 5.38 ГБ/с 5.7 ГБ/с
Чтение 4k T1 Q1 8969 iops 9980 iops
Запись 4k T1 Q1 8126 iops 11672 iops
Чтение 4k T12 Q128 1358818 iops 4279088 iops
Запись 4k T12 Q128 433890 iops 993506 iops

Потребление CPU OSD на 1 диск:

TCP RDMA
Линейное чтение (4M T6 Q16) 24.9 % 25.4 %
Линейная запись (4M T6 Q16) 99.3 % 38.4 %
Чтение 4k T12 Q128 95.3 % 111.7 %
Запись 4k T12 Q128 173 % 194 %

Потребление CPU на 1 клиента (fio):

TCP RDMA
Линейное чтение (4M T6 Q16) 99.9 % 85.8 %
Линейная запись (4M T6 Q16) 38.9 % 38.1 %
Чтение 4k T12 Q128 100 % 96.1 %
Запись 4k T12 Q128 51.6 % 41.9 %

EC 2+1

TCP RDMA
Линейное чтение (4M T6 Q16) 10.07 ГБ/с 11.43 ГБ/с
Линейная запись (4M T6 Q16) 7.74 ГБ/с 8.32 ГБ/с
Чтение 4k T1 Q1 7408 iops 8891 iops
Запись 4k T1 Q1 3525 iops 4903 iops
Чтение 4k T12 Q128 1216496 iops 2552765 iops
Запись 4k T12 Q128 278110 iops 821261 iops

Потребление CPU OSD на 1 диск:

TCP RDMA
Линейное чтение (4M T6 Q16) 68.6 % 33.6 %
Линейная запись (4M T6 Q16) 108.3 % 50.2 %
Чтение 4k T12 Q128 138.1 % 97.9 %
Запись 4k T12 Q128 168.7 % 188.5 %

Потребление CPU на 1 клиента (fio):

TCP RDMA
Линейное чтение (4M T6 Q16) 88.2 % 52.4 %
Линейная запись (4M T6 Q16) 51.8 % 46.8 %
Чтение 4k T12 Q128 99.7 % 61.3 %
Запись 4k T12 Q128 35.1 % 31.3 %