База знаний LinxCloud Services

PostgreSQL: disk performance

Введение

В данной статье предоставлена информация о производительности виртуальных машин с предустановленной БД PostgreSQL на разных типах дисков.

Тестирование проходило на ВМ с конфигурацией:

  • объем диска 100 ГБ
  • конфигурация Standard-4-8 (каждая нода кластера 4 ядра и 8 ГБ RAM).

Глоссарий:

Термин

Описание

pgbench
Встроенная в PostgreSQL утилита для benchmark СУБД
TPS
Transactions per second (метрики, которые выдает pgbench)
iowait
Время (в процентах) пока CPU ожидал окончания io request
iostat
Утилита в Linux для получения текущего среза по IO устройств
atop
Утилита для сбора всех показателей производительности системы

 

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

 

Геораспределенные диски

Сейчас невозможно создать DBaaS (ВМ с предустановленной СУБД) на дисках такого типа. Они не рекомендуются к использованию.

 

HDD Ceph диски

Диски типа HDD Ceph дают неудовлетворительный результат по производительности, поэтому мы не рекомендуем использовать данный тип дисков для создания ВМ в DBaaS, особенно для прод-контура (окружения с реальными данными и реальными пользователями).

Pgbench показывает значение TPS меньше 1, при этом диск утилизирован на 100%. iowait для CPU держится стабильно 50-90%.

Рекомендуемая конфигурация ВМ при выборе этого типа дисков:

Не выше, чем Basic 1-2 (1 CPU, 2 Gb RAM).

Вывод iostat:

 

SSD Ceph диски

SSD диски зон доступности dp1-ssd и ko1-ssd, 100 GB диск дает лимит в 3000 IO на чтение и 1500 IO на запись (QoS от Cinder).

Тестирование дисков данного типа демонстрирует удовлетворительный уровень производительности. Мы рекомендуем их к использованию для тестовых и dev-контуров.

Рекомендуемая конфигурация ВМ при выборе этого типа дисков:

Не выше, чем Basic 2-4 (2 CPU, 4 Gb RAM).

Чтение по pgbench:

transaction type: <builtin: select only>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 180 s

number of transactions actually processed: 333235

latency average =» 51.381 «ms

tps =» 1848.934518 (including «connections establishing)

tps =» 1849.269173 (excluding «connections establishing)

transaction type: <builtin: select only>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 600 s

number of transactions actually processed: 1293395

latency average =» 44.089 «ms

tps =» 2154.740370 (including «connections establishing)

tps =» 2154.835152 (excluding «connections establishing)

При бенче на чтение atop показывает средний iowait 70-80%. Полезная нагрузка на CPU 20-25%, PG потребляет около 4 ГБ RAM. Читаем 3000 IO в секунду (упираемся в qos), 25 КБ один IO в среднем, в итоге скорость около 70 МБ/сек. Запись почти не задействована.

Лог pgbench: pgbench_ssd_600_read

Чтение-запись:

transaction type: <builtin: TPC-B (sort of)>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 180 s

number of transactions actually processed: 73299

latency average =» 233.650 «ms

tps =» 406.590560 (including «connections establishing)

tps =» 406.650782 (excluding «connections establishing)

transaction type: <builtin: TPC-B (sort of)>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 600 s

number of transactions actually processed: 219609

latency average =» 259.837 «ms

tps =» 365.613804 (including «connections establishing)

tps =» 365.630913 (excluding «connections establishing)

Выше можно увидеть небольшие цифры, но достаточные как раз для случаев, где не так важна производительность. iowait в пределах 25-30%, полезная нагрузка составляет 10-15%.

Чтение в среднем составляет 600 IO в секунду и 20-30 МБ, запись в пределах от 100 до 1500 IO и 10-25 МБ в сек.

Лог pgbench: pgbench_ssd_600_rw

 

High-iops диски

Сейчас диски High-iops сегмента можно получить, только направив запрос в техническую поддержку. После его одобрения в Вашем интерфейсе панели управления Linx Cloud появятся варианты дисков dp1-high-iops и ko1-high-iops. Диск в 100 GB дает лимиты 10000 IO на чтение и 5000 на запись.

Рекомендуемая конфигурация ВМ при выборе этого типа дисков

Любая на Ваш выбор.

Чтение:

transaction type: <builtin: select only>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 180 s

number of transactions actually processed: 1205668

latency average =» 14.206 «ms

tps =» 6687.481442 (including «connections establishing)

tps =» 6688.375636 (excluding «connections establishing)

transaction type: <builtin: select only>

scaling factor: 1000

query mode: simple

number of clients: 95

number of threads: 8

duration: 600 s

number of transactions actually processed: 4073739

latency average =» 13.999 «ms

tps =» 6786.034529 (including «connections establishing)

tps =» 6786.416431 (excluding «connections establishing)

При тестировании на чтение atop показывает средний iowait 35%. Полезная нагрузка на CPU около 50%, PG потребляет около 4 ГБ RAM. Чтение составляет 10000 IO в секунду (лимит по qos), скорость около 200-230 МБ/сек. Запись в данном случае не зависит от qos.

Лог pgbench: pgbench_highiops_600_rw

Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!