vitastor/docs/performance/theoretical.ru.md

5.7 KiB
Raw Blame History

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


Read in English

Теоретическая максимальная производительность 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 со страницы Понимание сути производительности систем хранения, нормальную 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 при использовании репликации