Re: per backend I/O statistics
От | Nazir Bilal Yavuz |
---|---|
Тема | Re: per backend I/O statistics |
Дата | |
Msg-id | CAN55FZ0ZQTf-D+5Rup4H6zp+n3E2EuonYuzTiPkp=1GhesZU_A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: per backend I/O statistics (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>) |
Ответы |
Re: per backend I/O statistics
|
Список | pgsql-hackers |
Hi, On Thu, 19 Dec 2024 at 07:22, Michael Paquier <michael@paquier.xyz> wrote: > > Fixed that, bumped the two version counters, and done. I encountered a problem while trying to add WAL stats to pg_stat_io and I wanted to hear your thoughts. Right now, pgstat_prep_backend_pending() is called in both pgstat_count_io_op() and pgstat_count_io_op_time() to create a local PgStat_BackendPending entry. In that process, pgstat_prep_pending_entry() -> MemoryContextAllocZero() is called. The problem is that MemoryContextAllocZero() can not be called in the critical sections. For example, here is what happens in the walsender backend: ''' ... -> exec_replication_command() -> SendBaseBackup() -> ... -> XLogInsertRecord() -> START_CRIT_SECTION() /* Now we are in the critical section */ -> ... -> XLogWrite() -> pgstat_count_io_op_time() for the pg_pwrite() IO -> pgstat_prep_backend_pending() -> pgstat_prep_pending_entry() -> MemoryContextAllocZero() -> Failed at Assert("CritSectionCount == 0 || (context)->allowInCritSection") ''' With this commit it may not be possible to count IOs in the critical sections. I think the problem happens only if the local PgStat_BackendPending entry is being created for the first time for this backend in the critical section. -- Regards, Nazir Bilal Yavuz Microsoft
В списке pgsql-hackers по дате отправления: