lkml.org 
[lkml]   [2009]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [RFC] respect the referenced bit of KVM guest pages?
    Date
    Hi

    > Greetings,
    >
    > Jeff Dike found that many KVM pages are being refaulted in 2.6.29:
    >
    > "Lots of pages between discarded due to memory pressure only to be
    > faulted back in soon after. These pages are nearly all stack pages.
    > This is not consistent - sometimes there are relatively few such pages
    > and they are spread out between processes."

    I suprise this result really.

    - Why this issue happened only on kvm?
    - Why shrink_inactive_list() can't find pte young bit?
    Is this really unused stack?

    >
    > The refaults can be drastically reduced by the following patch, which
    > respects the referenced bit of all anonymous pages (including the KVM
    > pages).
    >
    > However it risks reintroducing the problem addressed by commit 7e9cd4842
    > (fix reclaim scalability problem by ignoring the referenced bit,
    > mainly the pte young bit). I wonder if there are better solutions?
    >
    > Thanks,
    > Fengguang
    >
    > ---
    > mm/vmscan.c | 10 +++++-----
    > 1 file changed, 5 insertions(+), 5 deletions(-)
    >
    > --- linux.orig/mm/vmscan.c
    > +++ linux/mm/vmscan.c
    > @@ -1288,12 +1288,12 @@ static void shrink_active_list(unsigned
    > * Identify referenced, file-backed active pages and
    > * give them one more trip around the active list. So
    > * that executable code get better chances to stay in
    > - * memory under moderate memory pressure. Anon pages
    > - * are not likely to be evicted by use-once streaming
    > - * IO, plus JVM can create lots of anon VM_EXEC pages,
    > - * so we ignore them here.
    > + * memory under moderate memory pressure.
    > + *
    > + * Also protect anon pages: swapping could be costly,
    > + * and KVM guest's referenced bit is helpful.
    > */
    > - if ((vm_flags & VM_EXEC) && !PageAnon(page)) {
    > + if ((vm_flags & VM_EXEC) || PageAnon(page)) {
    > list_add(&page->lru, &l_active);
    > continue;
    > }





    \
     
     \ /
      Last update: 2009-08-05 06:17    [W:0.024 / U:30.124 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site