Найти в Дзене
Postgres DBA

PG_HAZEL : Влияние на производительность и характерные ожидания СУБД увеличения shared_buffers c 25 до 50% от размера RAM.

Провести качественный и количественный анализ влияния увеличения параметра shared_buffers .
Оглавление
Только сравнив показатели в гонке , можно делать выводы.
Только сравнив показатели в гонке , можно делать выводы.

Постановка задачи

Провести качественный и количественный анализ влияния увеличения параметра shared_buffers .

Сравнительные эксперименты

  1. Эксперимент-1 : shared_buffers = 25% RAM
  2. Эксперимент-2 : shared_buffers = 40% RAM
  3. Эксперимент-3 : shared_buffers = 50% RAM

Конфигурация виртуальной машины

  • CPU = 200
  • RAM = 1TB
  • Postgres Pro (enterprise certified) 15.10.1

Сценарий нагрузочного тестирования

  • Минимальная нагрузка : 5 сессий
  • Максимальная нагрузка : 181 сессия
  • Сценарий : "Mix" ("Select only" + "Select + Update" + "Insert only" + "CPU Load").

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

Операционная скорость

Ось X - точка наблюдения. Ось Y - операционная скорость.
Ось X - точка наблюдения. Ось Y - операционная скорость.

Разница в скорости : shared_buffers=25% vs shared_buffers = 40%

  • Минимальная разница : -2%
  • Максимальная разница : 22%
  • Средняя разница : 6%
Ось X - точка наблюдения. Ось Y - относительная разница скорости
Ось X - точка наблюдения. Ось Y - относительная разница скорости

Разница в скорости : shared_buffers=40% vs shared_buffers = 50%

  • Минимальная разница : -12%
  • Максимальная разница : -0.08%
  • Средняя разница : -7%
Ось X - точка наблюдения. Ось Y - относительная разница скорости
Ось X - точка наблюдения. Ось Y - относительная разница скорости

Разница в скорости : shared_buffers=25% vs shared_buffers = 50%

  • Минимальная разница : -10%
  • Максимальная разница : 9%
  • Средняя разница : -1%
-5

Влияние shared_buffers на операционную скорость:

  1. Наибольший прирост скорости по сравнению со значением по умолчанию(25%RAM) до 22%, достигнут при значении shared_buffers = 40% RAM
  2. Увеличение размера shared_buffers свыше 40% не дало прироста скорости СУБД.

Ожидания СУБД типа IO

Ось X - точка наблюдения. Ось Y - ожидания типа IO.
Ось X - точка наблюдения. Ось Y - ожидания типа IO.

Разница в количестве ожиданий IO : shared_buffers=25% vs shared_buffers = 40%

  • Минимальная разница : -10%
  • Максимальная разница : 5%
  • Средняя разница : 0.1%
-7

Разница в количестве ожиданий IO : shared_buffers=40% vs shared_buffers = 50%

  • Минимальная разница : -10%
  • Максимальная разница : 13%
  • Средняя разница : 4%
-8

Разница в количестве ожиданий IO : shared_buffers=25% vs shared_buffers = 50%

  • Минимальная разница : -15%
  • Максимальная разница : 11%
  • Средняя разница : 4%
-9

Влияние shared_buffers на количество ожиданий IO:

  1. Среднее количество ожиданий типа IO, при значении shared_buffers = 40% , по сравнению со значением по умолчанию(25%RAM) практически не изменилось
  2. Увеличение размера shared_buffers свыше 40% ведет к снижению ожиданий типа IO.

Ожидания СУБД типа LWLock

Ось X - точка наблюдения. Ось Y - ожидания типа LWLock.
Ось X - точка наблюдения. Ось Y - ожидания типа LWLock.

Разница в количестве ожиданий LWLock : shared_buffers=25% vs shared_buffers = 40%

  • Минимальная разница : -80%
  • Максимальная разница : 36%
  • Средняя разница : -21%
-11

Разница в количестве ожиданий LWLock : shared_buffers=40% vs shared_buffers = 50%

  • Минимальная разница : -25%
  • Максимальная разница : 100%
  • Средняя разница : 14%
-12

Разница в количестве ожиданий LWLock : shared_buffers=25% vs shared_buffers = 50%

  • Минимальная разница : -80%
  • Максимальная разница : 76%
  • Средняя разница : -10%
-13

Влияние shared_buffers на количество ожиданий LWLock:

  1. Среднее количество ожиданий типа LWLock , при значении shared_buffers = 40% , по сравнению со значением по умолчанию(25%RAM) уменьшилось до 21%.
  2. Увеличение размера shared_buffers свыше 40% ведет к снижению ожиданий типа LWLock .

Итог

  1. Для данной конфигурации ВМ при данном сценарии нагрузки наиболее оптимальное значение параметра shared_buffers = 40% RAM (400GB).