Re: [PATCH 1/1] mm/swap.c: flush lru_add pvecs on compound page arrival

From: Michal Hocko
Date: Wed Jun 08 2016 - 12:07:02 EST


On Wed 08-06-16 08:31:21, Dave Hansen wrote:
> On 06/08/2016 07:35 AM, Lukasz Odzioba wrote:
> > diff --git a/mm/swap.c b/mm/swap.c
> > index 9591614..3fe4f18 100644
> > --- a/mm/swap.c
> > +++ b/mm/swap.c
> > @@ -391,9 +391,8 @@ static void __lru_cache_add(struct page *page)
> > struct pagevec *pvec = &get_cpu_var(lru_add_pvec);
> >
> > get_page(page);
> > - if (!pagevec_space(pvec))
> > + if (!pagevec_add(pvec, page) || PageCompound(page))
> > __pagevec_lru_add(pvec);
> > - pagevec_add(pvec, page);
> > put_cpu_var(lru_add_pvec);
> > }
>
> Lukasz,
>
> Do we have any statistics that tell us how many pages are sitting the
> lru pvecs? Although this helps the problem overall, don't we still have
> a problem with memory being held in such an opaque place?

Is it really worth bothering when we are talking about 56kB per CPU
(after this patch)?
--
Michal Hocko
SUSE Labs