Thread: Add ps display while waiting for wal in read_local_xlog_page_guts

Add ps display while waiting for wal in read_local_xlog_page_guts

From
sirisha chamarthi
Date:
Hi,

pg_create_logical_replication_slot can take longer than usual on a standby when there is no activity on the primary. We don't have enough information in the pg_stat_activity or process title to debug why this is taking so long. Attached a small patch to update the process title while waiting for the wal in read_local_xlog_page_guts. Any thoughts on introducing a new wait event too?

For example, in my setup, slot creation took 8 minutes 13 seconds. It only succeeded after I ran select txid_current() on primary.

postgres=# select pg_create_logical_replication_slot('s1','test_decoding');

 pg_create_logical_replication_slot
------------------------------------
 (s1,0/C096D10)
(1 row)

Time: 493365.995 ms (08:13.366)

Thanks,
Sirisha
Attachment

Re: Add ps display while waiting for wal in read_local_xlog_page_guts

From
Tom Lane
Date:
sirisha chamarthi <sirichamarthi22@gmail.com> writes:
> pg_create_logical_replication_slot can take longer than usual on a standby
> when there is no activity on the primary. We don't have enough information
> in the pg_stat_activity or process title to debug why this is taking so
> long. Attached a small patch to update the process title while waiting for
> the wal in read_local_xlog_page_guts. Any thoughts on introducing a new
> wait event too?

set_ps_display is a fairly expensive operation on a lot of platforms,
so I'm concerned about the overhead this proposal would add.  However,
getting rid of that pg_usleep in favor of a proper wait event seems
like a good idea.

            regards, tom lane



Re: Add ps display while waiting for wal in read_local_xlog_page_guts

From
"Drouvot, Bertrand"
Date:
Hi,

On 4/13/23 12:43 AM, sirisha chamarthi wrote:
> Hi,
> 
> pg_create_logical_replication_slot can take longer than usual on a standby when there is no activity on the primary.
Wedon't have enough information in the pg_stat_activity or process title to debug why this is taking so long. Attached
asmall patch to update the process title while waiting for the wal in read_local_xlog_page_guts. Any thoughts on
introducinga new wait event too?
 
> 
> For example, in my setup, slot creation took 8 minutes 13 seconds. It only succeeded after I ran select
txid_current()on primary.
 

FWIW, this behavior has been mentioned in 0fdab27ad6 and a new function (pg_log_standby_snapshot()) has been
created/documentedto accelerate the slot creation on the standby.
 

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com



Re: Add ps display while waiting for wal in read_local_xlog_page_guts

From
"Drouvot, Bertrand"
Date:
Hi,

On 4/13/23 4:29 AM, Tom Lane wrote:
> sirisha chamarthi <sirichamarthi22@gmail.com> writes:
>> pg_create_logical_replication_slot can take longer than usual on a standby
>> when there is no activity on the primary. We don't have enough information
>> in the pg_stat_activity or process title to debug why this is taking so
>> long. Attached a small patch to update the process title while waiting for
>> the wal in read_local_xlog_page_guts. 

Thanks for the patch!

> Any thoughts on introducing a new
>> wait event too?
> 
> set_ps_display is a fairly expensive operation on a lot of platforms,
> so I'm concerned about the overhead this proposal would add.  However,
> getting rid of that pg_usleep in favor of a proper wait event seems
> like a good idea.
> 

+1 for adding a proper wait event.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com