On 23 March 2018 at 08:35, Pavan Deolasee <pavan.deola...@gmail.com> wrote: > > > 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.
So it shows clear benefit for both bulk actions and OLTP, with no regressions. No objection exists to the approach used in the patch, so I'm now ready to commit this. Last call for objections? -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services