On 10.01.2012 23:43, David Fetter wrote:
Please find attached a new revision of the double-write patch.  While
this one still uses the checksums from VMware, it's been
forward-ported to 9.2.

I'd like to hold off on merging Simon's checksum patch into this one
for now because there may be some independent issues.

Could you write this patch so that it doesn't depend on any of the checksum patches, please? That would make the patch smaller and easier to review, and it would allow benchmarking the performance impact of double-writes vs full page writes independent of checksums.

At the moment, double-writes are done in one batch, fsyncing the double-write area first and the data files immediately after that. That's probably beneficial if you have a BBU, and/or a fairly large shared_buffers setting, so that pages don't get swapped between OS and PostgreSQL cache too much. But when those assumptions don't hold, it would be interesting to treat the double-write buffers more like a 2nd WAL for full-page images. Whenever a dirty page is evicted from shared_buffers, write it to the double-write area, but don't fsync it or write it back to the data file yet. Instead, let it sit in the double-write area, and grow the double-write file(s) as necessary, until the next checkpoint comes along.

In general, I must say that I'm pretty horrified by all these extra fsync's this introduces. You really need a BBU to absorb them, and even then, you're fsyncing data files to disk much more frequently than you otherwise would.

Jignesh mentioned having run some performance tests with this. I would like to see those results, and some analysis and benchmarks of how settings like shared_buffers and the presence of BBU affect this, compared to full_page_writes=on and off.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to