lkml.org 
[lkml]   [1999]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC]: madvise(2) and mincore(2) in 2.3.26
On 17 Nov 1999, Andi Kleen wrote:
> cel@monkey.org (Chuck Lever) writes:
>
> Hallo Chuck,
>
> > + */
> > +static long madvise_dontneed(struct vm_area_struct * vma,
> > + unsigned long start, unsigned long end)
> > +{
> > + struct inode * inode = vma->vm_file->f_dentry->d_inode;
> > + struct page * page, **hash;
> > +
> > + start = ((start - vma->vm_start) >> PAGE_CACHE_SHIFT) + vma->vm_pgoff;
> > + end = ((end - vma->vm_start) >> PAGE_CACHE_SHIFT) + vma->vm_pgoff;
> > +
> > + while (start < end) {
> > + hash = page_hash(&inode->i_data, start);
> > +
> > + spin_lock(&pagecache_lock);
> > + page = __find_page_nolock(&inode->i_data, start,
> > + *hash);
> > + if (page)
> > + clear_bit(PG_referenced, &page->flags);
> > + spin_unlock(&pagecache_lock);
>
>
> What happens when some other thread/process has set the referenced bit?
> shrink_mmap() could throw the data way.
> I think you need at least check for shared pages here, and make it a nop
> for this case.

agreed, and i'll also take a look at try_to_swap_out as mikulas suggested.
i was thinking that this implementation would only boost the page's
reclamation priority. shrink_mmap would simply put the page on it's
reclamation LRU a little earlier than usual, and the actual work of
reclaiming the page would happen later iff the system is low on memory --
but perhaps that's too simple?

> Also is mincore really useful? Either you have the memory locked and
> then then you know that it is in core, or you haven't, then everything
> is possible. I cannot imagine a useful application for it.

vivek pai suggested mincore might be useful for applications that manage
their own user-space cache. it's easy enough to implement, and might make
it easier to port applications that depend on it to Linux.

- Chuck Lever
--
corporate: <chuckl@netscape.com>
personal: <chucklever@netscape.net> or <cel@monkey.org>

The Linux Scalability project:
http://www.citi.umich.edu/projects/linux-scalability/



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:55    [W:0.059 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site