Thread: effects of posix_fadvise on WAL logs

effects of posix_fadvise on WAL logs

From
Mark Wong
Date:
Hi all,

Does anyone have any tests that showcase benefits from the
posix_fadvise changes in xlog.c?  I tried running some tests with dbt2
to see if any performance changes could be seen with 8.4beta2.  I
thought an OLTP type test with a lot of inserts and updates would be a
good test.  Unfortunately, I don't think I see anything interesting.
I was hoping to see less page cache activity, but maybe I'm not
looking correctly.  Maybe there isn't enough activity to the WAL
relative to the rest of the database to show anything interesting?
Here are the tests I ran:

Baseline on 8.4beta2, using wal_sync_method=fsync:
http://207.173.203.223/~markwkm/community6/dbt2/m1500-8.4beta2/m1500.8.4beta2.2/report/

Next set wal_sync_method=open_sync for postix_fadvise:
http://207.173.203.223/~markwkm/community6/dbt2/m1500-8.4beta2/m1500.8.4beta2.osync1/report/

Now using the attached patch, with wal_sync_method=open_sync:
http://207.173.203.223/~markwkm/community6/dbt2/m1500-8.4beta2/m1500.8.4beta2.osync2/report/

I created the patch because currently posix_fadvise is used right
before the file handle to the WAL log is closed.  I think
posix_fadvise needs to be called when the file is opened.

Regards,
Mark Wong

Attachment

Re: effects of posix_fadvise on WAL logs

From
Greg Smith
Date:
On Tue, 26 May 2009, Mark Wong wrote:

> Maybe there isn't enough activity to the WAL relative to the rest of the 
> database to show anything interesting?

Maybe you could reduce checkpoint_segments and focus on UPDATEs?  That's 
how I've been able to generate the most WAL activity relative to database 
writes in the past, because of the full_page_writes behavior.  Quoth the 
docs:  "To ensure data page consistency, the first modification of a data 
page after each checkpoint results in logging the entire page content. In 
that case, a smaller checkpoint interval increases the volume of output to 
the WAL log, partially negating the goal of using a smaller interval, and 
in any case causing more disk I/O."

You've got checkpoint_segments set to 3000 in your tests and 
checkpoint_time to 1 hour, which means the tests you ran are really 
generating minimal WAL volume.

--
* Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD