pgsql: Pad semaphores to avoid false sharing.

From: Thomas Munro <tmunro(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Pad semaphores to avoid false sharing.
Date: 2018-07-24 23:06:39
Message-ID: E1fi6O7-0002gz-MJ@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/46201d603f9c79d99e56ce62fb71aae31a99303d

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

Browse pgsql-committers by date

  From Date Subject
Next Message Tomas Vondra 2018-07-24 23:47:30 pgsql: Add strict_multi_assignment and too_many_rows plpgsql checks
Previous Message Thomas Munro 2018-07-24 23:06:22 pgsql: Pad semaphores to avoid false sharing.