Re: O_DIRECT question

From: Bill Davidsen
Date: Thu Jan 11 2007 - 21:14:16 EST


linux-os (Dick Johnson) wrote:
On Wed, 10 Jan 2007, Aubrey wrote:

Hi all,

Opening file with O_DIRECT flag can do the un-buffered read/write access.
So if I need un-buffered access, I have to change all of my
applications to add this flag. What's more, Some scripts like "cp
oldfile newfile" still use pagecache and buffer.
Now, my question is, is there a existing way to mount a filesystem
with O_DIRECT flag? so that I don't need to change anything in my
system. If there is no option so far, What is the right way to achieve
my purpose?

Thanks a lot.
-Aubrey
-

I don't think O_DIRECT ever did what a lot of folks expect, i.e.,
write this buffer of data to the physical device _now_. All I/O
ends up being buffered. The `man` page states that the I/O will
be synchronous, that at the conclusion of the call, data will have
been transferred. However, the data written probably will not be
in the physical device, perhaps only in a DMA-able buffer with
a promise to get it to the SCSI device, soon.


No one (who read the specs) ever though thought the write was "right
now," just that it was direct from user buffers. So it is not buffered,
but it is queued through the elevator.

Maybe you need to say why you want to use O_DIRECT with its terrible
performance?

Because it doesn't have terrible performance, because the user knows better than the o/s what it "right," etc. I used it to eliminate cache impact from large but non-essential operations, others use it on slow machines to avoid the CPU impact and bus bandwidth impact of extra copies.

Please don't assume that users are unable to understand how it works because you believe some other feature which does something else would be just as good. There is no other option which causes the writes to be queued right now and not use any cache, and that is sometimes just what you want.

I do like the patch to limit per-file and per-system cache, though, in some cases I really would like the system to slow gradually rather than fill 12GB of RAM with backlogged writes, then queue them and have other i/o crawl or stop.

--
bill davidsen <davidsen@xxxxxxx>
CTO TMR Associates, Inc
Doing interesting things with small computers since 1979
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/