Hi, Attached is patch that does the included part below. With the addition of some questions to Riel and addition of inactive_target in SysRq-M output. Back to the included part. It is from __alloc_pages_limit with the original code - won't the test fail always until free_pages == pages_min + 8 resulting in only allocating from free pages - no reclaims, might be ok. When this situation is reached it will only reclaim_pages and the different limits will give little effect. The patch below will give a more interesting allocations. When water_mark is PAGES_HIGH then first alloc pages from free until pages_high, then if direct_reclaim is allowed from inactive_clean else continue to use free pages. If the freeable pages gets below pages_high, retry with new limit... It gives comparable performance with plain test10, but with more pages free. Limits can be trimmed down... Note: that you could/should remove the first loop in __alloc_pages, not tried it should really be done with this patch - problem is where to start kreclaimd... /RogerL --- linux/mm/page_alloc.c.orig Mon Oct 16 23:54:03 2000 +++ linux/mm/page_alloc.c Tue Oct 17 01:16:13 2000 @@ -264,7 +264,8 @@ static struct page * __alloc_pages_limit if (z->free_pages + z->inactive_clean_pages >= water_mark) { struct page *page = NULL; /* If possible, reclaim a page directly. */ - if (direct_reclaim && z->free_pages < z->pages_min + 8) + /* Riel: the magical "+ 8" please explain */ + if (direct_reclaim && z->free_pages < water_mark + 8) page = reclaim_page(z); /* If that fails, fall back to rmqueue. */ if (!page) -- Home page: http://www.norran.net/nra02596/