Bgwriter strategies

From: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Bgwriter strategies
Date: 2007-07-05 20:50:55
Message-ID: 468D59AF.1050308@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I ran some DBT-2 tests to compare different bgwriter strategies:

http://community.enterprisedb.com/bgwriter/

imola-336 was run with minimal bgwriter settings, so that most writes
are done by backends. imola-337 was patched with an implementation of
Tom's bgwriter idea, trying to aggressively keep all pages with
usage_count=0 clean. Imola-340 was with a patch along the lines of
Itagaki's original patch, ensuring that there's as many clean pages in
front of the clock head as were consumed by backends since last bgwriter
iteration.

All test runs were also patched to count the # of buffer allocations,
and # of buffer flushes performed by bgwriter and backends. Here's those
results (I hope the intendation gets through properly):

imola-336 imola-337 imola-340
writes by checkpoint 38302 30410 39529
writes by bgwriter 350113 2205782 1418672
writes by backends 1834333 265755 787633
writes total 2222748 2501947 2245834
allocations 2683170 2657896 2699974

It looks like Tom's idea is not a winner; it leads to more writes than
necessary. But the OS caches the writes, so let's look at the actual I/O
performed to be sure, from iostat:

http://community.enterprisedb.com/bgwriter/writes-336-337-340.jpg

The graph shows that on imola-337, there was indeed more write traffic
than on the other two test runs.

On imola-340, there's still a significant amount of backend writes. I'm
still not sure what we should be aiming at. Is 0 backend writes our goal?

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

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2007-07-05 21:28:00 Re: Bgwriter strategies
Previous Message Jan Wieck 2007-07-05 20:43:31 Re: usleep feature for pgbench