pgsql: Pad semaphores to avoid false sharing. - Mailing list pgsql-committers

From Thomas Munro
Subject pgsql: Pad semaphores to avoid false sharing.
Date
Msg-id E1fi6NT-0002fk-LI@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Pad semaphores to avoid false sharing.

In a USE_UNNAMED_SEMAPHORES build, the default on Linux and FreeBSD
since commit ecb0d20a, we have an array of sem_t objects.  This
turned out to reduce performance compared to the previous default
USE_SYSV_SEMAPHORES on an 8 socket system.  Testing showed that the
lost performance could be regained by padding the array elements so
that they have their own cache lines.  This matches what we do for
similar hot arrays (see LWLockPadded, WALInsertLockPadded).

Back-patch to 10, where unnamed semaphores were adopted as the default
semaphore interface on those operating systems.

Author: Thomas Munro
Reviewed-by: Andres Freund
Reported-by: Mithun Cy
Tested-by: Mithun Cy, Tom Lane, Thomas Munro
Discussion: https://postgr.es/m/CAD__OugYDM3O%2BdyZnnZSbJprSfsGFJcQ1R%3De59T3hcLmDug4_w%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2d3067595299d2ac1f29bbc26a83a99d59b33d4e

Modified Files
--------------
src/backend/port/posix_sema.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)


pgsql-committers by date:

Previous
From: David Rowley
Date:
Subject: Re: pgsql: Hand code string to integer conversion for performance.
Next
From: Thomas Munro
Date:
Subject: pgsql: Pad semaphores to avoid false sharing.