pgsql: Use group updates when setting transaction status in clog.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Use group updates when setting transaction status in clog.
Date: 2017-03-09 22:49:23
Message-ID: E1cm6s7-0004Zc-H8@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Use group updates when setting transaction status in clog.

Commit 0e141c0fbb211bdd23783afa731e3eef95c9ad7a introduced a mechanism
to reduce contention on ProcArrayLock by having a single process clear
XIDs in the procArray on behalf of multiple processes, reducing the
need to hand the lock around. Use a similar mechanism to reduce
contention on CLogControlLock. Testing shows that this very
significantly reduces the amount of time waiting for CLogControlLock
on high-concurrency pgbench tests run on a large multi-socket
machines; whether that translates into a TPS improvement depends on
how much of that contention is simply shifted to some other lock,
particularly WALWriteLock.

Amit Kapila, with some cosmetic changes by me. Extensively reviewed,
tested, and benchmarked over a period of about 15 months by Simon
Riggs, Robert Haas, Andres Freund, Jesper Pedersen, and especially by
Tomas Vondra and Dilip Kumar.

Discussion: http://postgr.es/m/CAA4eK1L_snxM_JcrzEstNq9P66++F4kKFce=1r5+D1vzPofdtg@mail.gmail.com
Discussion: http://postgr.es/m/CAA4eK1LyR2A+m=RBSZ6rcPEwJ=rVi1ADPSndXHZdjn56yqO6Vg@mail.gmail.com
Discussion: http://postgr.es/m/91d57161-d3ea-0cc2-6066-80713e4f90d7@2ndquadrant.com

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/ccce90b398673d55b0387b3de66639b1b30d451b

Modified Files
--------------
src/backend/access/transam/clog.c | 239 ++++++++++++++++++++++++++++++++--
src/backend/access/transam/twophase.c | 2 +-
src/backend/storage/lmgr/proc.c | 9 ++
src/include/access/twophase.h | 13 ++
src/include/storage/proc.h | 14 ++
5 files changed, 268 insertions(+), 9 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2017-03-09 23:20:47 pgsql: Throw an error if a DATA() line contains wrong # of attributes.
Previous Message Tom Lane 2017-03-09 22:20:43 pgsql: Fix timestamptz regression test to still work with latest IANA z