Существует дефицит специализированных исследований по тонкой настройке ОС для СУБД. Настоящая работа заполняет этот пробел, предлагая экспериментальный анализ влияния параметра vm.vfs_cache_pressure в Linux на производительность PostgreSQL под синтетической OLAP-нагрузкой.
Глоссарий терминов | Postgres DBA | Дзен
Предпосылка к исследованию
Отсутствие специализированных исследований: Поиск в научных базах данных (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 - Общая постановка исследования и результаты производительности СУБД и инфраструктуры.
Тестовые сценарии
Веса сценариев
scenario1 = 0.7
scenario2 = 0.2
scenario3 = 0.1
Тестовая среда, инструменты и конфигурация СУБД:
- СУБД: PostgreSQL 17
- Тестовая база данных: pgbench (10GB, простая структура)
- CPU = 8
- RAM = 8GB
Параметры инфраструктуры
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'
Нагрузка на СУБД в ходе экспериментов
Отношение прочитанных блоков 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
Корреляционный анализ ожиданий СУБД
Операционная скорость
Медианные значения операционной скорости:
- 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
Медианные значения ожиданий типа 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
Медианные значения ожиданий типа 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
Медианные значения 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
Медианные значения 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.