On Fri, Mar 9, 2018 at 8:49 PM, Peter Eisentraut < peter.eisentr...@2ndquadrant.com> wrote:
> On 2/1/18 19:21, Simon Riggs wrote: > > If we really can't persuade you of that, it doesn't sink the patch. We > > can have the WAL pointer itself - it wouldn't save space but it would > > at least alleviate the spinlock. > > Do you want to send in an alternative patch that preserves the WAL > pointer and only changes the locking? > > Sorry for the delay. Here is an updated patch which now replaces xl_prev with xl_curr, thus providing similar safeguards against corrupted or torn WAL pages, but still providing benefits of atomic operations. I repeated the same set of tests and the results are almost similar. These tests are done on a different AWS instance though and hence not comparable to previous tests. What we do in these tests is essentially call ReserveXLogInsertLocation() 1M times to reserve 256 bytes each time, in a single select statement (the function is exported and a SQL-callable routine is added for the purpose of the tests) Patched: ====== #clients #tps 1 34.195311 2 29.001584 4 31.712009 8 35.489272 16 41.950044 Master: ====== #clients #tps 1 24.128004 2 12.326135 4 8.334143 8 16.035699 16 8.502794 So that's pretty good improvement across the spectrum. Thanks, Pavan -- Pavan Deolasee http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
pg_reduce_wal_contention_v2.patch
Description: Binary data