Re: [RFC] [PATCH] Include LRU in page count

Daniel Phillips
2002-09-02T18:16:35Z

On Monday 02 September 2002 19:23, Christian Ehrhardt wrote:
> On Sat, Aug 31, 2002 at 09:47:29PM +0200, Daniel Phillips wrote:
> > > Also there may be lru only pages on the active list, i.e. refill
> > > inactive should have this hunk as well:
> > >
> > > > +#if LRU_PLUS_CACHE==2
> > > > + BUG_ON(!page_count(page));
> > > > + if (unlikely(page_count(page) == 1)) {
> > > > + mmstat(vmscan_free_page);
> > > > + BUG_ON(!TestClearPageLRU(page)); // side effect abuse!!
> > > > + put_page(page);
> > > > + continue;
> > > > + }
> > > > +#endif
> >
> > If we have orphans on the active list, we'd probably better just count
> > them and figure out what we're doing wrong to put them there in the first
> > place. In time they will migrate to the inactive list and get cleaned
> > up.
>
> Hm, think of your favourite memory hog being killed with lots of anon
> pages on the active list while someone else holds the lru lock.
> Won't all these anon pages legally end up orphaned on the active list
> (due to the trylock in page_cache_release)?

Some of them will, for one pass of refill_inactive. It seems hard to justify
saving a single pass through the active list executed in rare, pathological
circumstances, in return for adding even a simple test, executed commonly.

On a dual processor system, one of them should be scanning while the
other is oom_killing. It should work out fine.

--
Daniel