2003-07-31 21:59:44

by Muthian S

[permalink] [raw]
Subject: madvise on file pages

Hi,

Could someone inform as to what is the behavior when madvise DONTNEED is
called on pages that are mmap'd from local files mapped with MAP_SHARED,
i.e. they share the same page that the file cache does. In such cases, can
madvise be made to release specific pages in the file cache by mmap-ing the
relevant file segment ?

thanks,
Muthian.

_________________________________________________________________
Play detective. Identify genuine Windows.
http://server1.msn.co.in/sp03/coa/index.asp Win cool prizes.


2003-07-31 22:44:02

by Andrew Morton

[permalink] [raw]
Subject: Re: madvise on file pages

"Muthian S" <[email protected]> wrote:
>
> Hi,
>
> Could someone inform as to what is the behavior when madvise DONTNEED is
> called on pages that are mmap'd from local files mapped with MAP_SHARED,
> i.e. they share the same page that the file cache does.

The pages are unmapped from the calling process's pagetables. We don't
actually free the physical pages.

> In such cases, can
> madvise be made to release specific pages in the file cache by mmap-ing the
> relevant file segment ?

No.

2.6 kernels implement the fadvise() syscall (accessible by glibc's
posix_fadvise() function) which will do this.

2003-08-01 20:52:44

by Antonio Vargas

[permalink] [raw]
Subject: Re: madvise on file pages

On Thu, Jul 31, 2003 at 03:32:11PM -0700, Andrew Morton wrote:
> "Muthian S" <[email protected]> wrote:
> >
> > Hi,
> >
> > Could someone inform as to what is the behavior when madvise DONTNEED is
> > called on pages that are mmap'd from local files mapped with MAP_SHARED,
> > i.e. they share the same page that the file cache does.
>
> The pages are unmapped from the calling process's pagetables. We don't
> actually free the physical pages.
>
> > In such cases, can
> > madvise be made to release specific pages in the file cache by mmap-ing the
> > relevant file segment ?
>
> No.
>
> 2.6 kernels implement the fadvise() syscall (accessible by glibc's
> posix_fadvise() function) which will do this.

Perhaps we could send the page to the least-used end of the page lists?

--
winden/network

1. Dado un programa, siempre tiene al menos un fallo.
2. Dadas varias lineas de codigo, siempre se pueden acortar a menos lineas.
3. Por induccion, todos los programas se pueden
reducir a una linea que no funciona.