• Santosh Shilimkar's avatar
    RDS: Use per-bucket rw lock for bind hash-table · 9b9acde7
    Santosh Shilimkar authored
    One global lock protecting hash-tables with 1024 buckets isn't
    efficient and it shows up in a massive systems with truck
    loads of RDS sockets serving multiple databases. The
    perf data clearly highlights the contention on the rw
    lock in these massive workloads.
    
    When the contention gets worse, the code gets into a state where
    it decides to back off on the lock. So while it has disabled interrupts,
    it sits and backs off on this lock get. This causes the system to
    become sluggish and eventually all sorts of bad things happen.
    
    The simple fix is to move the lock into the hash bucket and
    use per-bucket lock to improve the scalability.
    Signed-off-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
    Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
    9b9acde7
af_rds.c 15 KB