• Thomas Munro's avatar
    Pad semaphores to avoid false sharing. · 2d306759
    Thomas Munro authored
    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
    2d306759
posix_sema.c 9.1 KB