Задача

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

Реализация

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

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 час.

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

Ожидаемый результат

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

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

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

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

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

Алгоритм определения унимодальности гистограммы и расчет коэффициентов симметрии и эксцесса - вне данной статьи , в процессе разработки и уточнения .

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

В качестве изменяемого параметра выбран параметр настройки фонового процесса СУБД : bgwriter_lru_maxpages.

Эксперимент 1. bgwriter_lru_maxpages = 100

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

Рис.1. Производительность СУБД при bgwriter_lru_maxpages = 100
Рис.1. Производительность СУБД при bgwriter_lru_maxpages = 100
Рис.1.1 Не сглаженные данные производительности СУБД при bgwriter_lru_max_pages = 100
Рис.1.1 Не сглаженные данные производительности СУБД при bgwriter_lru_max_pages = 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

Эксперимент 2. bgwriter_lru_maxpages = 800

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

Рис.6. Производительность СУБД при bgwriter_lru_maxpages = 800
Рис.6. Производительность СУБД при bgwriter_lru_maxpages = 800
Рис.6.1. Не сглаженные данные производительности СУБД при bgwiter_lru_max_pages = 800
Рис.6.1. Не сглаженные данные производительности СУБД при bgwiter_lru_max_pages = 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. Используемая методика статистического анализа впрлне может применяться для экспериментальной оценки влияния других конфигурационных параметров СУБД и/или изменений в инфраструктуре на итоговую производительность СУБД.

  5. Следующая задача - определение признаков достижения граничных условий влияния параметра конфигурации СУБД на производительность СУБД при постоянной нагрузке.

Комментарии (6)


  1. ky0
    04.10.2024 08:39

    О, господи - если менять настройки СУБД, оказывается, это на что-то влияет!

    Ждём серию прорывных статей "а что, если мы поменяем сразу несколько параметров?!"


    1. Gromilo
      04.10.2024 08:39

      Не понял иронии, в результате-то не влияет.


      1. ky0
        04.10.2024 08:39
        +2

        Ну, вы посмотрите весь пласт материалов этого товарища в динамике. В двух словах, он берёт какие-то параметры, крутит их, гоняет pgbench, и потом, поправив капитанскую шляпу, говорит - "вот, что получилось". Иногда, как сейчас, ничего особо не меняется.


      1. GlukKazan
        04.10.2024 08:39

        если это не узкое место, почему должно влиять?


        1. rinace Автор
          04.10.2024 08:39

          Статья не про параметр bgwriter_lru_maxpages вообще то.

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

          Это лишь метод, конкретный параметр и его влияние - просто для примера. Вполне можно было в тексте статьи изменить "bgwriter_lru_maxpages" на "параметр X". Смысл статьи бы не изменился.

          P.S. В следующей статье, наверное так и сделаю.


          1. GlukKazan
            04.10.2024 08:39
            +1

            Слышали такую поговорку: "Дорога ложка к обеду"? Влияние изменения параметра может очень сильно зависеть от того в каких условиях функционирует база (от значений других параметров, железа, характера и особенностей нагрузки, пятен на Солнце и т.п.). В связи с этим, полезность метода изложенного в статье от меня ускользает.