• Andres Freund's avatar
    Avoid the use of a separate spinlock to protect a LWLock's wait queue. · 008608b9
    Andres Freund authored
    Previously we used a spinlock, in adition to the atomically manipulated
    ->state field, to protect the wait queue. But it's pretty simple to
    instead perform the locking using a flag in state.
    
    Due to 6150a1b0 BufferDescs, on platforms (like PPC) with > 1 byte
    spinlocks, increased their size above 64byte. As 64 bytes are the size
    we pad allocated BufferDescs to, this can increase false sharing;
    causing performance problems in turn. Together with the previous commit
    this reduces the size to <= 64 bytes on all common platforms.
    
    Author: Andres Freund
    Discussion: CAA4eK1+ZeB8PMwwktf+3bRS0Pt4Ux6Rs6Aom0uip8c6shJWmyg@mail.gmail.com
        20160327121858.zrmrjegmji2ymnvr@alap3.anarazel.de
    008608b9
lwlock.h 9.19 KB