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? I think if we're going to be hacking around this area, we should also add something to vmstat or zoneinfo to spell out how many of these things there are.