Re: O_DIRECT! or O_DIRECT?

Stephen C. Tweedie
2001-07-05T15:17:28Z

Hi,

On Wed, Jul 04, 2001 at 08:23:10PM +0000, Miquel van Smoorenburg wrote:

> >huge copies. But what part of the normal handling of sequential files
> >would O_SEQUENTIAL change? Good handling of sequential files should
> >be the default, not an explicitly-requested feature.
>
> exactly what I meant, since that is what MADV_SEQUENTIAL seems to do:
>
> linux/mm/filemap.c:
>
> * MADV_SEQUENTIAL - pages in the given range will probably be accessed
> * once, so they can be aggressively read ahead, and
> * can be freed soon after they are accessed.

We already have "drop-behind" for sequential reads --- we lower the
priority of recently read-in pages so that if they don't get accessed
again, they can be reclaimed. This should be, and is, part of the
default kernel behaviour for such things.

The trouble is that you still need the VM to go around and clean up
those pages if you need the memory for something else. There's a big
difference between "can be freed" and "are forcibly freed". O_DIRECT
behaves like the latter: the memory is automatically reclaimed after
use so it results in no memory pressure at all, whereas the
MADV_SEQUENTIAL type of behaviour just allows the VM to reclaim those
pages on demand --- the VM still has to do the work.

Cheers,
Stephen