]> granicus.if.org Git - postgresql/commit
Avoid SnapshotResetXmin() during AtEOXact_Snapshot()
authorSimon Riggs <simon@2ndQuadrant.com>
Thu, 6 Apr 2017 12:31:52 +0000 (08:31 -0400)
committerSimon Riggs <simon@2ndQuadrant.com>
Thu, 6 Apr 2017 12:31:52 +0000 (08:31 -0400)
commit6bad580d9e678a0b604883e14d8401d469b06566
tree44630ef43002b029704432f405ae2949081eb841
parentfd01983594b7d2119653428e3b532578008c7065
Avoid SnapshotResetXmin() during AtEOXact_Snapshot()

For normal commits and aborts we already reset PgXact->xmin,
so we can simply avoid running SnapshotResetXmin() twice.

During performance tests by Alexander Korotkov, diagnosis
by Andres Freund showed PgXact array as a bottleneck. After
manual analysis by me of the code paths that touch those
memory locations, I was able to identify extraneous code
in the main transaction commit path.

Avoiding touching highly contented shmem improves concurrent
performance slightly on all workloads, confirmed by tests
run by Ashutosh Sharma and Alexander Korotkov.

Simon Riggs

Discussion: CANP8+jJdXE9b+b9F8CQT-LuxxO0PBCB-SZFfMVAdp+akqo4zfg@mail.gmail.com
src/backend/access/transam/xact.c
src/backend/utils/time/snapmgr.c
src/include/utils/snapmgr.h