Описание стенда
Железо: 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 % |