Статистический анализ результатов benchmark PostgreSQL — оценка влияния bgwriter_lru_maxpages

Предыстория

В ходе аудита СУБД, поступило предложение — изменить значение параметра bgwriter_lru_maxpages

Для оценки характера влияния различных значений параметра на производительность СУБД, было проведено нагрузочное тестирование, с использованием стандартного средства pgbench:

Самый главный вопрос — как все таки влияет , в итоге, изменение параметра bgwriter_lru_maxpages на производительность СУБД ?

Получается , что по полученным результатам — установить характер и степень влияния, на производительность СУБД нет никакой возможности ?

Более того, самое неприятное, что если бы был сделан только один из проходов, то было бы принято ошибочное решение о необходимости изменения в продуктивной СУБД, потенциально способное оказать непредсказуемое и негативное влияние на производительность.

Статистический анализ результатов нагрузочного тестирования СУБД в условиях облачной инфраструктуры / Хабр (habr.com)

Задача эксперимента

Провести статистическую оценку влияние изменения параметра bgwriter_lru_maxpages на производительность СУБД при заданном характере нагрузки и инфраструктуре СУБД.

bgwriter_lru_maxpages (integer) #

Задаёт максимальное число буферов, которое сможет записать процесс фоновой записи за раунд активности. При нулевом значении фоновая запись отключается. (Учтите, что на контрольные точки, которые управляются отдельным вспомогательным процессом, это не влияет.) По умолчанию значение этого параметра — 100 буферов. Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

Postgres Pro Enterprise: Документация: 16: 19.4. Потребление ресурсов : Компания Postgres Professional

Результат эксперимента

Для определения значения производительности , которое будет принято в качестве результата , необходимо найти отрезок удовлетворяющий следующим требованиям:

  1. Распределение значений является унимодальным

  2. Распределение значений максимально приближено к нормальному.

Для оценки приближения распределения к нормальному используется оценка асимметрии и эксцесса.

Подробнее: Коэффициент асимметрии и коэффициент эксцесса (mathprofi.ru)

Статистическое значение моды в найденном отрезке и будет считаться результатом.

Реализация эксперимента

Виртуальная машина

CPU = 1

vendor_id       : GenuineIntelcpu family      : 6model           : 85model name      : Intel Xeon Processor (Skylake, IBRS, no TSX)

RAM

Mem:          718Mi

Редакция/версия СУБД

Postgres Pro (enterprise certified) 15.8.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Soft 11.4.0-1), 64-bit  

Конфигурационные параметры СУБД

  • shared_preload_libraries = 'pg_wait_sampling, pgpro_stats'

  • Остальные параметры: по умолчанию

Тестовая нагрузка — pgbench

pgbench_init_param= --no-vacuum --quiet --foreign-keys --scale=50 -i test_pgbench

pgbench_param= --protocol=extended --report-per-command --jobs=1 --client=50 --transactions=2000 test_pgbench

После каждой итерации — VACUUM ANALIZE;

Временной отрезок для сбора данных c 12:00 до 09:00.

Длительность анализируемого отрезка = 1 час.

Период медианного сглаживания показателей производительности СУБД = 1 час.

Результат эксперимента при bgwriter_lru_maxpages = 100

Производительность СУБД (сглаженные значения)

Рис.1. Производительность СУБД при bgwriter_lru_maxpages = 100

Рис. 1. Производительность СУБД при bgwriter_lru_maxpages = 100

Статистические результаты производительности СУБД

Рис.2. Статистические значения производительности СУБД при bgwriter_lru_maxpages = 100

Рис. 2. Статистические значения производительности СУБД при bgwriter_lru_maxpages = 100

Результат

Результирующий отрезок: 02.10.2024 23:57:00 — 03.10.2024 0:57:00

Рис.3. Статистические значения производительности СУБД принятые в качестве результата для bgwriter_lru_max_pages = 100

Рис. 3. Статистические значения производительности СУБД принятые в качестве результата для bgwriter_lru_max_pages = 100

Рис.4. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 100

Рис. 4. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 100

Рис.5. Гистограмма для результирующего отрезка при bgwriter_max_pages = 100

Рис. 5. Гистограмма для результирующего отрезка при bgwriter_max_pages = 100

Результат эксперимента при bgwriter_lru_maxpages = 100

4783,8156434919

Результат эксперимента при bgwriter_lru_maxpages = 800

Производительность СУБД (сглаженные значения)

Рис.6. Производительность СУБД при bgwriter_lru_maxpages = 800

Рис. 6. Производительность СУБД при bgwriter_lru_maxpages = 800

Статистические результаты производительности СУБД

Рис.7. Статистические значения производительности СУБД при bgwriter_lru_maxpages = 800

Рис. 7. Статистические значения производительности СУБД при bgwriter_lru_maxpages = 800

Результат

Результирующий отрезок: 04.10.2024 6:17:00 — 04.10.2024 7:17:00

Рис.8. Статистические значения производительности СУБД принятые в качестве результата для bgwriter_lru_max_pages = 800

Рис. 8. Статистические значения производительности СУБД принятые в качестве результата для bgwriter_lru_max_pages = 800

Рис.9. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 800

Рис. 9. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 800

Рис.10. Гистограмма для результирующего отрезка при bgwriter_max_pages = 800

Рис. 10. Гистограмма для результирующего отрезка при bgwriter_max_pages = 800

Результат эксперимента при bgwriter_lru_maxpages = 800

4687,42106682113

Итоги

  1. Разница в производительности СУБД при изменении параметра bgwriter_lru_maxpages в 8 раз составила -2,06%

  2. Для данного характера нагрузки влияние параметра bgwriter_lru_maxpages на итоговую производительность СУБД — несущественно.

  3. Для определения влияния параметра bgwriter_lru_maxpages необходимо изменить характер нагрузки на СУБД .

  4. Используемая методика будет применена для экспериментальной оценки влияния конфигурационных параметров СУБД или изменений в инфраструктура на итоговую производительность СУБД.

© Habrahabr.ru