Re: heavily contended lwlocks with long wait queues scale badly

Zhihong Yu <zyu@yugabyte.com>

From: Zhihong Yu <zyu@yugabyte.com>
To: Andres Freund <andres@anarazel.de>
Cc: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@gmail.com>, Yura Sokolov <y.sokolov@postgrespro.ru>
Date: 2022-11-01T00:17:03Z
Lists: pgsql-hackers
On Mon, Oct 31, 2022 at 4:51 PM Andres Freund <andres@anarazel.de> wrote:

> Hi,
>
> On 2022-10-31 16:21:06 +0530, Bharath Rupireddy wrote:
> > BTW, I've seen a sporadic crash (SEGV) with the patch in bg writer
> > with the same set up [1], I'm not sure if it's really because of the
> > patch. I'm unable to reproduce it now and unfortunately I didn't
> > capture further details when it occurred.
>
> That's likely because the prototype patch I submitted in this thread missed
> updating LWLockUpdateVar().
>
> Updated patch attached.
>
> Greetings,
>
> Andres Freund
>

Hi,
Minor comment:

+   uint8       lwWaiting;      /* see LWLockWaitState */

Why not declare `lwWaiting` of type LWLockWaitState ?

Cheers

Commits

  1. lwlock: Fix quadratic behavior with very long wait lists