[Документация](../../README-ru.md#документация) → Производительность → Теоретическая максимальная производительность Vitastor ----- [Read in English](theoretical.en.md) # Теоретическая максимальная производительность Vitastor При использовании репликации: - Задержка чтения в 1 поток (T1Q1): 1 сетевой RTT + 1 чтение с диска. - Запись+fsync в 1 поток: - С мгновенным сбросом: 2 RTT + 1 запись. - С отложенным ("ленивым") сбросом: 4 RTT + 1 запись + 1 fsync. - Параллельное чтение: сумма IOPS всех дисков либо производительность сети, если в сеть упрётся раньше. - Параллельная запись: сумма IOPS всех дисков / число реплик / WA либо производительность сети, если в сеть упрётся раньше. При использовании кодов коррекции ошибок (EC): - Задержка чтения в 1 поток (T1Q1): 1.5 RTT + 1 чтение. - Запись+fsync в 1 поток: - С мгновенным сбросом: 3.5 RTT + 1 чтение + 2 записи. - С отложенным ("ленивым") сбросом: 5.5 RTT + 1 чтение + 2 записи + 2 fsync. - Под 0.5 на самом деле подразумевается (k-1)/k, где k - число дисков данных, что означает, что дополнительное обращение по сети не нужно, когда операция чтения обслуживается локально. - Параллельное чтение: сумма IOPS всех дисков либо производительность сети, если в сеть упрётся раньше. - Параллельная запись: сумма IOPS всех дисков / общее число дисков данных и чётности / WA либо производительность сети, если в сеть упрётся раньше. Примечание: IOPS дисков в данном случае надо брать в смешанном режиме чтения/записи в пропорции, аналогичной формулам выше. WA (мультипликатор записи) для 4 КБ блоков в Vitastor обычно составляет 3-5: 1. Запись метаданных в журнал 2. Запись блока данных в журнал 3. Запись метаданных в БД 4. Ещё одна запись метаданных в журнал при использовании EC 5. Запись блока данных на диск данных Если вы найдёте SSD, хорошо работающий с 512-байтными блоками данных (Optane?), то 1, 3 и 4 можно снизить до 512 байт (1/8 от размера данных) и получить WA всего 2.375. Если реализовать поддержку NVDIMM, то WA можно, условно говоря, ликвидировать вообще - все дополнительные операции записи смогут обслуживаться DRAM памятью. Но для этого необходим тестовый кластер с NVDIMM - пишите, если готовы предоставить такой для тестов. Кроме того, WA снижается при использовании отложенного/ленивого сброса при параллельной нагрузке, т.к. блоки журнала записываются на диск только когда они заполняются или явным образом запрашивается fsync. ## На практике На практике, используя тесты fio со страницы [Понимание сути производительности систем хранения](understanding.ru.md), нормальную TCP-сеть, хорошие серверные SSD/NVMe, при отключённом энергосбережении процессоров вы можете рассчитывать на: - От 5000 IOPS в 1 поток (T1Q1) и на чтение, и на запись при использовании репликации (задержка до 0.2мс) - От 5000 IOPS в 1 поток (T1Q1) на чтение и 2200 IOPS в 1 поток на запись при использовании EC (задержка до 0.45мс) - От 80000 IOPS на чтение в параллельном режиме на 1 ядро, от 30000 IOPS на запись на 1 ядро (на 1 OSD) - Скорость параллельного линейного чтения и записи, равная меньшему значению из скорости дисков или сети Худшие результаты означают, что у вас либо медленные диски, либо медленная сеть, либо что-то неправильно настроено. Зафиксированный на данный момент рекорд задержки: - 9668 IOPS (0.103 мс задержка) в 1 поток (T1Q1) на запись с TCP и NVMe при использовании репликации - 9143 IOPS (0.109 мс задержка) в 1 поток (T1Q1) на чтение с TCP и NVMe при использовании репликации