Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Настройка bgwriter'а  [new]
Безенчук
Member

Откуда:
Сообщений: 22
После прочтения статей о настройке bgwriter, казалось, что всё просто и понятно:
- уменьшаешь bgwriter_delay - процесс фоновой записи меньше отдыхает между периодами активности;
- увеличиваешь bgwriter_lru_maxpages - больше грязных буферов записывается за один проход.
В итоге оптимальные настройки bgwriter должны уменьшить количество буферов, которые серверные процессы вынуждены сбрасывать на диск самостоятельно. Однако у меня, после уменьшения в 4 раза bgwriter_delay и двукратного увеличения bgwriter_lru_maxpages, всё вышло наоборот: по данным pg_stat_bgwriter (после сброса статистики) наибольшее число буферов записано именно backend'ами. Настройки checkpointer не трогал. Почему так вышло? Настройка bgwriter вроде бы должна позволять ему записывать на диск больше буферов, но в итоге выходит, что серверным процессам всё равно недостаточно страниц для своих дел.
Версия - PostgreSQL 11.6.
28 май 21, 21:46    [22328691]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук,

Попробуйте параметры на максимум выкрутить и посмотреть будет ли результат... некоторые workloads так устроены что backend writes будут что ни делай. Некоторые таки решаются через bgwriter. Самое эффективное ставить bgwriter_delay на минимум и далее регулировать нагрузку от bgwriter через bgwriter_lru_maxpages.

PS: на почти любой системе кроме совсем калькулятора или readonly базы - выставление предельно аггресивных настроек bgwriter - единственное рабочее решение.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
31 май 21, 05:46    [22329084]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Maxim Boguk, спасибо!

Однако, вызывает интерес вот ещё какой разрез: до того, как я поменял настройки bgwriter, его статистика показывала, что на долю backend'ов приходится меньше записанных буферов, чем на checkpointer+bgwriter. Когда я перенастроил bgwriter, позволив ему записывать больше - вышло обратное: backend'ы стали лидерами по записанным буферам. Может ли это быть связано с тем, что autovacuum был подстроен для более интенсивного функционирования?
31 май 21, 12:25    [22329247]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
Maxim Boguk, спасибо!

Однако, вызывает интерес вот ещё какой разрез: до того, как я поменял настройки bgwriter, его статистика показывала, что на долю backend'ов приходится меньше записанных буферов, чем на checkpointer+bgwriter. Когда я перенастроил bgwriter, позволив ему записывать больше - вышло обратное: backend'ы стали лидерами по записанным буферам. Может ли это быть связано с тем, что autovacuum был подстроен для более интенсивного функционирования?


Скорее всего именно с этим и связано.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
31 май 21, 14:28    [22329347]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Безенчук
Member

Откуда:
Сообщений: 22
В тему настроек возник ещё один вопрос: если checkpointer бодро рапортует в лог следующим образом: "checkpoint complete: wrote 131743 buffers (25.1%)", значит ли это, что в данный момент грязными буферами было занято 25,1% от объёма shared_buffers?
31 май 21, 18:03    [22329478]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
В тему настроек возник ещё один вопрос: если checkpointer бодро рапортует в лог следующим образом: "checkpoint complete: wrote 131743 buffers (25.1%)", значит ли это, что в данный момент грязными буферами было занято 25,1% от объёма shared_buffers?


точнее даже так
"пока checkpoint обоходил последовательно все shared buffers он нашел 25.1% из них грязными"
(что не совсем тоже что "в данный момент грязными буферами было занято").
Система то динамическая.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
31 май 21, 20:06    [22329547]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Спасибо за уточнение!
Но в целом можно сказать, что при текущей нагрузке на базу (грязные буферы занимают четверть всего объёма shared_buffers) значение этого параметра подобрано с запасом?
31 май 21, 23:18    [22329601]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
Спасибо за уточнение!
Но в целом можно сказать, что при текущей нагрузке на базу (грязные буферы занимают четверть всего объёма shared_buffers) значение этого параметра подобрано с запасом?


настройка bgwriter не очень связанна с тем сколько dirty на checkpoint получается.
я бы тупо на максимум бы его настройки выкрутил и успокоился.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
31 май 21, 23:21    [22329602]     Ответить | Цитировать Сообщить модератору
 Re: Настройка bgwriter'а  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1312
Maxim Boguk
Безенчук
В тему настроек возник ещё один вопрос: если checkpointer бодро рапортует в лог следующим образом: "checkpoint complete: wrote 131743 buffers (25.1%)", значит ли это, что в данный момент грязными буферами было занято 25,1% от объёма shared_buffers?


точнее даже так
"пока checkpoint обоходил последовательно все shared buffers он нашел 25.1% из них грязными"

https://github.com/postgres/postgres/blob/REL_13_STABLE/src/backend/storage/buffer/bufmgr.c#L2012
И более того: это только то что писал сам чекпойнтер. Найти мог больше, но если их к моменту прохода цикла кто-то уже записал - не считаем в этом счётчике.
1 июн 21, 11:41    [22329741]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить