Статистический анализ результатов 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
Результат эксперимента
Для определения значения производительности , которое будет принято в качестве результата , необходимо найти отрезок удовлетворяющий следующим требованиям:
Распределение значений является унимодальным
Распределение значений максимально приближено к нормальному.
Для оценки приближения распределения к нормальному используется оценка асимметрии и эксцесса.
Подробнее: Коэффициент асимметрии и коэффициент эксцесса (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
Статистические результаты производительности СУБД
Рис. 2. Статистические значения производительности СУБД при bgwriter_lru_maxpages = 100
Результат
Результирующий отрезок: 02.10.2024 23:57:00 — 03.10.2024 0:57:00
Рис. 3. Статистические значения производительности СУБД принятые в качестве результата для bgwriter_lru_max_pages = 100
Рис. 4. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 100
Рис. 5. Гистограмма для результирующего отрезка при bgwriter_max_pages = 100
Результат эксперимента при bgwriter_lru_maxpages = 100
4783,8156434919
Результат эксперимента при bgwriter_lru_maxpages = 800
Производительность СУБД (сглаженные значения)
Рис. 6. Производительность СУБД при 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
Рис. 9. Частотная таблица производительности СУБД для результирующего отрезка при bgwriter_max_pages = 800
Рис. 10. Гистограмма для результирующего отрезка при bgwriter_max_pages = 800
Результат эксперимента при bgwriter_lru_maxpages = 800
4687,42106682113
Итоги
Разница в производительности СУБД при изменении параметра bgwriter_lru_maxpages в 8 раз составила -2,06%
Для данного характера нагрузки влияние параметра bgwriter_lru_maxpages на итоговую производительность СУБД — несущественно.
Для определения влияния параметра bgwriter_lru_maxpages необходимо изменить характер нагрузки на СУБД .
Используемая методика будет применена для экспериментальной оценки влияния конфигурационных параметров СУБД или изменений в инфраструктура на итоговую производительность СУБД.