Re: [PATCH mmotm] vmscan move pgdeactivate modification to shrink_active_list fix

From: Johannes Weiner
Date: Sat Aug 29 2009 - 08:24:42 EST


On Sat, Aug 29, 2009 at 07:00:47PM +0900, KOSAKI Motohiro wrote:
> Hi Hugh
>
> 2009/8/29 Hugh Dickins <hugh.dickins@xxxxxxxxxxxxx>:
> > mmotm 2009-08-27-16-51 lets the OOM killer loose on my loads even
> > quicker than last time: one bug fixed but another bug introduced.
> > vmscan-move-pgdeactivate-modification-to-shrink_active_list.patch
> > forgot to add NR_LRU_BASE to lru index to make zone_page_state index.
> >
> > Signed-off-by: Hugh Dickins <hugh.dickins@xxxxxxxxxxxxx>
>
> Can I use your test case?
> Currently LRU_BASE is 0. it mean
>
> LRU_BASE == NR_INACTIVE_ANON == 0
> LRU_ACTIVE == NR_ACTIVE_ANON == 1

The zone counters are

NR_FREE_PAGES = 0
NR_INACTIVE_ANON = NR_LRU_BASE = 1
NR_ACTIVE_ANON = 2
...,

and NR_LRU_BASE is the offset of the LRU items within the zone stat
items. You missed this offset, so accounting to LRU_BASE + 0 *
LRU_FILE actually accounts to NR_FREE_PAGES, not to NR_INACTIVE_ANON.

I get the feeling we should make this thing more robust...

Hannes

> Therefore, I doubt there are another issue in current mmotm.
> Can I join your strange oom fixing works?
>
>
> > ---
> >
> > Âmm/vmscan.c | Â Â6 ++++--
> > Â1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > --- mmotm/mm/vmscan.c  2009-08-28 10:07:57.000000000 +0100
> > +++ linux/mm/vmscan.c  2009-08-28 18:30:33.000000000 +0100
> > @@ -1381,8 +1381,10 @@ static void shrink_active_list(unsigned
> > Â Â Â Âreclaim_stat->recent_rotated[file] += nr_rotated;
> > Â Â Â Â__count_vm_events(PGDEACTIVATE, nr_deactivated);
> > Â Â Â Â__mod_zone_page_state(zone, NR_ISOLATED_ANON + file, -nr_taken);
> > - Â Â Â __mod_zone_page_state(zone, LRU_ACTIVE + file * LRU_FILE, nr_rotated);
> > - Â Â Â __mod_zone_page_state(zone, LRU_BASE + file * LRU_FILE, nr_deactivated);
> > + Â Â Â __mod_zone_page_state(zone, NR_ACTIVE_ANON + file * LRU_FILE,
> > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nr_rotated);
> > + Â Â Â __mod_zone_page_state(zone, NR_INACTIVE_ANON + file * LRU_FILE,
> > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nr_deactivated);
> > Â Â Â Âspin_unlock_irq(&zone->lru_lock);
> > Â}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/