Messages in this thread | | | Date | Mon, 29 Jun 2009 00:01:40 +0900 | Subject | Re: Found the commit that causes the OOMs | From | KOSAKI Motohiro <> |
| |
> Yes, smaller inactive_anon means smaller (pointless) nr_scanned, > and therefore less slab scans. Strictly speaking, it's not the fault > of your patch. It indicates that the slab scan ratio algorithm should > be updated too :)
I don't think this patch is related to minchan's patch. but I think this patch is good.
> We could refine the estimation of "reclaimable" pages like this:
hmhm, reasonable idea.
> > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h > index 416f748..e9c5b0e 100644 > --- a/include/linux/vmstat.h > +++ b/include/linux/vmstat.h > @@ -167,14 +167,7 @@ static inline unsigned long zone_page_state(struct zone *zone, > } > > extern unsigned long global_lru_pages(void); > - > -static inline unsigned long zone_lru_pages(struct zone *zone) > -{ > - return (zone_page_state(zone, NR_ACTIVE_ANON) > - + zone_page_state(zone, NR_ACTIVE_FILE) > - + zone_page_state(zone, NR_INACTIVE_ANON) > - + zone_page_state(zone, NR_INACTIVE_FILE)); > -} > +extern unsigned long zone_lru_pages(void); > > #ifdef CONFIG_NUMA > /* > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 026f452..4281c6f 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2123,10 +2123,31 @@ void wakeup_kswapd(struct zone *zone, int order) > > unsigned long global_lru_pages(void) > { > - return global_page_state(NR_ACTIVE_ANON) > - + global_page_state(NR_ACTIVE_FILE) > - + global_page_state(NR_INACTIVE_ANON) > - + global_page_state(NR_INACTIVE_FILE); > + int nr; > + > + nr = global_page_state(zone, NR_ACTIVE_FILE) + > + global_page_state(zone, NR_INACTIVE_FILE); > + > + if (total_swap_pages) > + nr += global_page_state(zone, NR_ACTIVE_ANON) + > + global_page_state(zone, NR_INACTIVE_ANON); > + > + return nr; > +}
Please change function name too. Now, this function only account reclaimable pages.
Plus, total_swap_pages is bad. if we need to concern "reclaimable pages", we should use nr_swap_pages. I mean, swap-full also makes anon is unreclaimable althouth system have sone swap device.
> + > + > +unsigned long zone_lru_pages(struct zone *zone) > +{ > + int nr; > + > + nr = zone_page_state(zone, NR_ACTIVE_FILE) + > + zone_page_state(zone, NR_INACTIVE_FILE); > + > + if (total_swap_pages) > + nr += zone_page_state(zone, NR_ACTIVE_ANON) + > + zone_page_state(zone, NR_INACTIVE_ANON); > + > + return nr; > } > > #ifdef CONFIG_HIBERNATION > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |