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

PG_HAZEL : анализ СУБД и инфраструктуры по результатам нагрузочного тестирования (большая ВМ)

Провести комплексный анализ результатов нагрузочного тестирования со стороны метрик производительности СУБД и операционной системы. Mix Нагрузка Восходящий тренд производительности СУБД - отсутствует Горизонтальный тренд и экспоненциальный рост ожиданий от нагрузки. Результат: Высокое значение доли ожидания IO растет и снижается с ростом нагрузки и снижением скорости. Результат: конкуренция за процессорное время практически отсутствует . Длина очереди исполнения не превышает количество ядер CPU. Результат: Частота переключений контекста снижается с ростом нагрузки. Результат: Процент времени, проводимого в ядре незначителен и существенно не растет. Результат: свопинг отсутствует Результат: свободная память менее 5% Результат: не анализируется - свопинг отсутствует Результат: не анализируется - свопинг отсутствует Результат: количество процессов растет после горизонтального тренда. Результат: Частота контекстных переключений снижается с ростом нагрузки Результат: Частота прерываний ра
Оглавление
Много ресурсов , еще не гарантируют более высокую производительности
Много ресурсов , еще не гарантируют более высокую производительности

Архивный материал - методика устарела

Начало - малая ВМ

Задача

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

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

  • CPU = 8
  • RAM = 8GB
  • Red OS Murom 7.3
  • PostgreSQL 17

Сценарий тестирования и нагрузка на СУБД

Mix

  1. Select only : 50% нагрузки
  2. Select + Update : 30% нагрузки
  3. Insert only : 15% нагрузки

Нагрузка

Ось X - тестовая итерация. Ось Y - количество сессий pgbench
Ось X - тестовая итерация. Ось Y - количество сессий pgbench

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

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

Восходящий тренд производительности СУБД - отсутствует

Ожидания СУБД

Ось X - точка наблюдения . Ось Y - ожидания СУБД
Ось X - точка наблюдения . Ось Y - ожидания СУБД

Горизонтальный тренд и экспоненциальный рост ожиданий от нагрузки.

Статистические показатели VMSTAT

Абсолютные значения vmstat
Абсолютные значения vmstat
корреляция между ожиданиями СУБД и показателями vmstat
корреляция между ожиданиями СУБД и показателями vmstat

Анализ показателей VMSTAT

Дисковая подсистема - cpu_wa ожидание IO

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

Результат: Высокое значение доли ожидания IO растет и снижается с ростом нагрузки и снижением скорости.

Признаки конкуренции за ресурсы CPU

1.Длина очереди исполнения (procs -> r)

Ось X - точка наблюдения . Ось Y - длина очереди исполнения (procs -> r)
Ось X - точка наблюдения . Ось Y - длина очереди исполнения (procs -> r)

Результат: конкуренция за процессорное время практически отсутствует . Длина очереди исполнения не превышает количество ядер CPU.

2.Частота переключений контекста (system -> cs)

Ось X - точка наблюдения . Ось Y - Частота переключений контекста (system -> cs)
Ось X - точка наблюдения . Ось Y - Частота переключений контекста (system -> cs)

Результат: Частота переключений контекста снижается с ростом нагрузки.

3. Процент времени, проводимого в ядре (cpu -> sy)

Ось X - точка наблюдения . Ось Y - Процент времени, проводимого в ядре (cpu -> sy)
Ось X - точка наблюдения . Ось Y - Процент времени, проводимого в ядре (cpu -> sy)

Результат: Процент времени, проводимого в ядре незначителен и существенно не растет.

Признаки конкуренции за ресурсы RAM

1. Высокий уровень свопинга (swapping)

-11

Результат: свопинг отсутствует

2. Низкая свободная память (менее 5% от общей RAM)

-12

Результат: свободная память менее 5%

3. Активность кэша и буферов

Результат: не анализируется - свопинг отсутствует

4. Высокая активность дисков I/O

Результат: не анализируется - свопинг отсутствует

5. Процессы в состоянии ожидания I/O

-13
Ось X - точка наблюдения . Ось Y - procs_b процессы в uninterruptible sleep (обычно ждут IO)
Ось X - точка наблюдения . Ось Y - procs_b процессы в uninterruptible sleep (обычно ждут IO)

Результат: количество процессов растет после горизонтального тренда.

6. Частота контекстных переключений и прерываний (cs (context switches) и in (interrupts))

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

Результат: Частота контекстных переключений снижается с ростом нагрузки

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

Результат: Частота прерываний растет с ростом нагрузки.

Влияние гипервизора на CPU и IO

cpu_st stolen (украдено гипервизором)

cpu_st stolen (украдено гипервизором) = 0

Влияние гипервизора на CPU - нет

Рост wa и b при стабильных bi/bo

Ось X - точка наблюдения . Ось Y - cpu_wa ожидание IO
Ось X - точка наблюдения . Ось Y - cpu_wa ожидание IO
Ось X - точка наблюдения . Ось Y - procs_b процессы в uninterruptible sleep (обычно ждут IO)
Ось X - точка наблюдения . Ось Y - procs_b процессы в uninterruptible sleep (обычно ждут IO)

Ось X - точка наблюдения . Ось Y - io_bi блоки, считанные с устройств
Ось X - точка наблюдения . Ось Y - io_bi блоки, считанные с устройств
Ось X - точка наблюдения . Ось Y -   io_bo записанные на устройства
Ось X - точка наблюдения . Ось Y - io_bo записанные на устройства

Результат: возможно влияние гипервизора на IO.