From: | Xuneng Zhou <xunengzhou(at)gmail(dot)com> |
---|---|
To: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>, Kevin K Biju <kevinkbiju(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Add progressive backoff to XactLockTableWait functions |
Date: | 2025-06-08 14:33:39 |
Message-ID: | CABPTF7XmTrBp8S93a+zQ5M3FhLB6o8kWn9yQ1YnHJqTPT9dRYA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi hackers,
This patch implements progressive backoff in XactLockTableWait() and
ConditionalXactLockTableWait().
As Kevin reported in this thread [1], XactLockTableWait() can enter a
tight polling loop during logical replication slot creation on standby
servers, sleeping for fixed 1ms intervals that can continue for a long
time. This creates significant CPU overhead.
The patch implements a time-based threshold approach based on Fujii’s
idea [1]: keep sleeping for 1ms until the total sleep time reaches 10
seconds, then start exponential backoff (doubling the sleep duration
each cycle) up to a maximum of 10 seconds per sleep. This balances
responsiveness for normal operations (which typically complete within
seconds) against CPU efficiency for the long waits in some logical
replication scenarios.
Best regards,
Xuneng
Attachment | Content-Type | Size |
---|---|---|
0001-Add-progressive-backoff-to-XactLockTableWait.patch | application/octet-stream | 4.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Xuneng Zhou | 2025-06-08 14:51:54 | Re: Add CHECK_FOR_INTERRUPTS in polling loop code path in XactLockTableWait |
Previous Message | Xuneng Zhou | 2025-06-08 14:30:45 | Add new wait event to XactLockTableWait |