Предыстория
В ходе аудита СУБД, поступило предложение — изменить значение параметра bgwriter_lru_maxpages
Для оценки характера влияния различных значений параметра на производительность СУБД, было проведено нагрузочное тестирование, с использованием стандартного средства pgbench:
…
Самый главный вопрос — как все таки влияет , в итоге, изменение параметра bgwriter_lru_maxpages на производительность СУБД ?
Получается , что по полученным результатам — установить характер и степень влияния, на производительность СУБД нет никакой возможности ?
Более того, самое неприятное, что если бы был сделан только один из проходов, то было бы принято ошибочное решение о необходимости изменения в продуктивной СУБД, потенциально способное оказать непредсказуемое и негативное влияние на производительность.
Задача эксперимента
Провести статистическую оценку влияние изменения параметра bgwriter_lru_maxpages на производительность СУБД при заданном характере нагрузки и инфраструктуре СУБД.
bgwriter_lru_maxpages
(integer
) #Задаёт максимальное число буферов, которое сможет записать процесс фоновой записи за раунд активности. При нулевом значении фоновая запись отключается. (Учтите, что на контрольные точки, которые управляются отдельным вспомогательным процессом, это не влияет.) По умолчанию значение этого параметра — 100 буферов. Задать этот параметр можно только в
postgresql.conf
или в командной строке при запуске сервера.
Результат эксперимента
Для определения значения производительности , которое будет принято в качестве результата , необходимо найти отрезок удовлетворяющий следующим требованиям:
-
Распределение значений является унимодальным
-
Распределение значений максимально приближено к нормальному.
Для оценки приближения распределения к нормальному используется оценка асимметрии и эксцесса.
Подробнее: Коэффициент асимметрии и коэффициент эксцесса (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
Производительность СУБД (сглаженные значения)
Статистические результаты производительности СУБД
Результат
Результирующий отрезок: 02.10.2024 23:57:00 — 03.10.2024 0:57:00
Результат эксперимента при bgwriter_lru_maxpages = 100
4783,8156434919
Результат эксперимента при bgwriter_lru_maxpages = 800
Производительность СУБД (сглаженные значения)
Статистические результаты производительности СУБД
Результат
Результирующий отрезок: 04.10.2024 6:17:00 — 04.10.2024 7:17:00
Результат эксперимента при bgwriter_lru_maxpages = 800
4687,42106682113
Итоги
-
Разница в производительности СУБД при изменении параметра bgwriter_lru_maxpages в 8 раз составила -2,06%
-
Для данного характера нагрузки влияние параметра bgwriter_lru_maxpages на итоговую производительность СУБД — несущественно.
-
Для определения влияния параметра bgwriter_lru_maxpages необходимо изменить характер нагрузки на СУБД .
-
Используемая методика будет применена для экспериментальной оценки влияния других конфигурационных параметров СУБД и/или изменений в инфраструктуре на итоговую производительность СУБД.
ссылка на оригинал статьи https://habr.com/ru/articles/848134/
Добавить комментарий