Введение
В данной статье предоставлена информация о производительности виртуальных машин с предустановленной БД 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