Re: userspace pagecache management tool

Erik Andersen
2007-03-03T23:37:55Z

On Sat Mar 03, 2007 at 02:26:09PM -0800, Andrew Morton wrote:
> On Sat, 03 Mar 2007 17:19:00 -0500 Rik van Riel <riel@redhat.com> wrote:
>
> > > It is *not* a global instruction. It uses setenv, so the user's policy
> > > affects only the target process and its forked children.
> >
> > ... and all other processes accessing the same file(s)!
> >
> > Your library and the system calls may be limited to one process,
> > but the consequences are global.
>
> Yes. So what? If the user wants to go and evict libc.so from pagecache
> then he can do so - the kernel has provided syscalls with which this can be
> done for at least seven years. Bad user, shouldn't do that.

I think what Rik is pointing out is that as currently
implemented, posix_fadvise is a much bigger hammer than is
generally useful or desirable.

Using posix_fadvise on the other hand says "immediately drop this
stuff from the pagecache, consequences be damned". If someone
else happens to be using the specified data, well too bad, they
suffer collateral damage. Process A can, maliciously or
ignorantly, deny service to process B.

On the other hand, your old but super cool O_STREAMING patch took
a kinder gentler approach, where applications could tell the
kernel "please do not keep this file descriptor's data in cache
on my account since I will not reuse it." If someone else however
was using the same data, the kernel would keep things cached as
usual and thereby avoid doing collateral damage.

-Erik

--
Erik B. Andersen http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--