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

PG_EXPECTO(1/3) : влияние vm.vfs_cache_pressure на производительность PostgreSQL при нагрузке, имитирующей OLAP.

Существует дефицит специализированных исследований по тонкой настройке ОС для СУБД. Настоящая работа заполняет этот пробел, предлагая экспериментальный анализ влияния параметра vm.vfs_cache_pressure в Linux на производительность PostgreSQL под синтетической OLAP-нагрузкой. Глоссарий терминов | Postgres DBA | Дзен GitHub - Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL Отсутствие специализированных исследований: Поиск в научных базах данных (Google Scholar, IEEE Xplore) и технических блогах по запросам "vfs_cache_pressure PostgreSQL performance", "Linux kernel tuning for database workload" не выявил работ, фокусирующихся на экспериментальном изучении данного конкретного взаимодействия. Основная масса материалов предлагает общие советы или рассматривает настройку памяти PostgreSQL в отрыве от тонких параметров ОС. Оценить влияние изменения параметра vm.vfs_cache_pressure на производительность СУБД и инфраструктуры при синтет
Оглавление

Существует дефицит специализированных исследований по тонкой настройке ОС для СУБД. Настоящая работа заполняет этот пробел, предлагая экспериментальный анализ влияния параметра vm.vfs_cache_pressure в Linux на производительность PostgreSQL под синтетической OLAP-нагрузкой.

PostgreSQL и ядро Linux: поиск оптимального взаимодействия.
PostgreSQL и ядро Linux: поиск оптимального взаимодействия.

Глоссарий терминов | Postgres DBA | Дзен

GitHub - Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL

Предпосылка к исследованию

Отсутствие специализированных исследований: Поиск в научных базах данных (Google Scholar, IEEE Xplore) и технических блогах по запросам "vfs_cache_pressure PostgreSQL performance", "Linux kernel tuning for database workload" не выявил работ, фокусирующихся на экспериментальном изучении данного конкретного взаимодействия. Основная масса материалов предлагает общие советы или рассматривает настройку памяти PostgreSQL в отрыве от тонких параметров ОС.

Задача

Оценить влияние изменения параметра vm.vfs_cache_pressure на производительность СУБД и инфраструктуры при синтетической нагрузке, имитирующей OLAP.

Часть 2 - Анализ паттернов производительности инфраструктуры

Часть 3 - Анализ производительности подсистемы IO для файловой системы /data

Часть 1 - Общая постановка исследования и результаты производительности СУБД и инфраструктуры.

Тестовые сценарии

--OLAP -- scenario1.sql -- 5.2 CREATE OR REPLACE FUNCTION scenario1() RETURNS integer AS $$ DECLARE  test_rec record ; BEGIN WITH branch_summary AS (   SELECT    b.bid,    COUNT(a.aid) as account_count,    SUM(a.abalance) as total_balance,    AVG(a.abalance) as avg_balance   FROM pgbench_branches b   LEFT JOIN pgbench_accounts a ON b.bid = a.bid   GROUP BY b.bid ), transaction_summary AS…
Postgres DBA20 января
-- scenario2.sql -- INSERT -- 5.2 CREATE OR REPLACE FUNCTION scenario2() RETURNS integer AS $$ BEGIN --------------------------------------------------- --СЦЕНАРИЙ 3 - INSERT ONLY -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -- ТОЛЬКО ДЛЯ scale = 685 -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INSERT INTO pgbench_history ( tid, bid, aid, delta, mtime ) VALUES ( floor(random…
Postgres DBA20 января
-- scenario3.sql -- UPDATE -- 5.2 CREATE OR REPLACE FUNCTION scenario3() RETURNS integer AS $$ DECLARE  current_aid bigint ;  current_delta bigint ; BEGIN -- Генерация случайного сдвига   current_delta := (ROUND(RANDOM())::BIGINT) * 10 + 1; -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -- ТОЛЬКО ДЛЯ scale = 685 -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   -- Атомарный выбор…
Postgres DBA20 января

Веса сценариев

scenario1 = 0.7

scenario2 = 0.2

scenario3 = 0.1

Тестовая среда, инструменты и конфигурация СУБД:

Параметры инфраструктуры

vm.dirty_expire_centisecs=3000

vm.dirty_ratio=30

vm.dirty_background_ratio=10

vm.swappiness=10

read_ahead_kb=4096

Параметры СУБД

shared_buffers = '4GB'
effective_cache_size = '6GB'
work_mem = '32MB'
postgresql.auto.conf # Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. track_io_timing = 'on' listen_addresses = '0.0.0.0' logging_collector = 'on' log_directory = '/log/pg_log' log_destination = 'stderr' log_rotation_size = '0' log_rotation_age = '1d' log_filename = '2sdba-s-tpg12.postgresql-%u.log' log_line_prefix = '%m| %d| %a| %u| %h| %p| %e| ' log…
Postgres DBA21 января

Нагрузка на СУБД в ходе экспериментов

-2

Отношение прочитанных блоков shared_buffers к измененным блокам shared_buffers (OLAP):

  • vm.vfs_cache_pressure = 100 : 177.98
  • vm.vfs_cache_pressure = 50 : 184.26
  • vm.vfs_cache_pressure = 150 : 172.22

Корреляционный анализ ожиданий СУБД

-3

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

-4

Медианные значения операционной скорости:

  • vm.vfs_cache_pressure = 100 : 15 154 (baseline)
  • vm.vfs_cache_pressure = 50 : 16 185 (-11.27%)
  • vm.vfs_cache_pressure = 150 : 15 095 (+8.65%)

Ожидания типа IO

-5

Медианные значения ожиданий типа IO:

  • vm.vfs_cache_pressure = 100 : 16 716 (baseline)
  • vm.vfs_cache_pressure = 50 : 19 411 (+16,12%)
  • vm.vfs_cache_pressure = 150 : 16 762 (+0,27%)

Ожидания типа LWLock

-6

Медианные значения ожиданий типа LWLock:

  • vm.vfs_cache_pressure = 100 : 178(baseline)
  • vm.vfs_cache_pressure = 50 : 113 (-36,52%)
  • vm.vfs_cache_pressure = 150 : 167 (-6,46%)

Производительность подсистемы IO (IOPS) файловой системы /data

-7

Медианные значения IOPS:

  • vm.vfs_cache_pressure = 100 : 3 502(baseline)
  • vm.vfs_cache_pressure = 50 : 3 479(-0,66%)
  • vm.vfs_cache_pressure = 150 : 3 582 (+2,28%)

Пропускная способность подсистемы IO (MB/s) файловой системы /data

-8

Медианные значения MB/s:

  • vm.vfs_cache_pressure = 100 : 125(baseline)
  • vm.vfs_cache_pressure = 50 : 103(-17,60%)
  • vm.vfs_cache_pressure = 150 : 135 (+8,00%)

Итог

Таким образом, исследование демонстрирует сложный и нелинейный характер влияния низкоуровневых параметров ОС на производительность СУБД высокого уровня. Полученные данные подчеркивают важность комплексного подхода к тюнингу, учитывающего взаимодействие всех компонентов стека: от ядра Linux до внутренних структур PostgreSQL.