Thread: Re: O_DIRECT support for Windows

Re: O_DIRECT support for Windows

From
ITAGAKI Takahiro
Date:
Magnus Hagander <magnus@hagander.net> wrote:

> IIRC, we're still waiting for performance numbers showing there exists a
> win from this patch.

Here is a performance number of Direct I/O support on Windows.
There was 10%+ of performance win on pgbench (263.33 vs. 290.79) in O_DIRECT.

However, I only have a desktop-class machine for Windows.
(Pendium 4 3.6GHz with HT, 3GB of RAM, 2 ATA-drives)
Test on production-class machines might show different results.

In addition, I'm slightly worried about aligment issues reported by Magnus.
We might need fail-back-to-non-direct feature on error for safety.


$ pgbench -i -s50
$ pgbench -s50 -t8000 -c8

O_DSYNC (FILE_FLAG_WRITE_THROUGH) 263.33 tps
O_DSYNC + O_DIRECT (FILE_FLAG_WRITE_THROUGH + NO_BUFFERING) 290.79 tps

wal_sync_method = open_datasync
wal_buffers = 4MB
shared_buffers = 256MB
checkpoint_segments = 64


> > Magnus Hagander wrote:
> >> We're ok with the alignment issues provided the is code added to reject
> >> O_DIRECT if the sector size is too large.

> >>> ITAGAKI Takahiro wrote:
> >>>> The attached is a patch to define O_DIRECT by ourselves on Windows,
> >>>> and to map O_DIRECT to FILE_FLAG_NO_BUFFERING.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center




Re: O_DIRECT support for Windows

From
Magnus Hagander
Date:
On Wed, Mar 28, 2007 at 02:47:12PM +0900, ITAGAKI Takahiro wrote:
> Magnus Hagander <magnus@hagander.net> wrote:
> 
> > IIRC, we're still waiting for performance numbers showing there exists a
> > win from this patch.
> 
> Here is a performance number of Direct I/O support on Windows.
> There was 10%+ of performance win on pgbench (263.33 vs. 290.79) in O_DIRECT.

That sounds good enough to go for it.


> However, I only have a desktop-class machine for Windows.
> (Pendium 4 3.6GHz with HT, 3GB of RAM, 2 ATA-drives)
> Test on production-class machines might show different results.

Yes, that would be very good. I don't have any "server-grade" machines I
can run it on ATM. But perhaps someone else does. Stefan, you mentioned you
might have one to run other tests for me - can you run this one? Do you
have a build system on it?

> In addition, I'm slightly worried about aligment issues reported by Magnus.
> We might need fail-back-to-non-direct feature on error for safety.

A question is - is there risk that this works for weeks, and then suddenly
stops working, or will we detect it on the first attempt to write. If we
detect it on the first attempt, that's enough I think - the user can
configure it to use the old behaviour in that case. But if  there is a risk
that we hit it later on, we need to automatically fallback at the time of
the write.

//Magnus