Re: [2.4.17/18pre] VM and swap - it's really unusable

Ken Brownfield (brownfld@irridia.com)
Mon, 25 Feb 2002 18:09:34 -0600


On Mon, Feb 25, 2002 at 03:51:43AM -0800, Aviv Shavit wrote:
| Ken Brownfield's A) and B) hit me
| regularly(http://www.uwsg.indiana.edu/hypermail/linux/kernel/0201.0/0740.html)
| (Thanks Ken for starting this enlightening thread and
| to all those that contributed)

No problem. You might be coming in late, but nothing's changed. :-/
Although the APIC thing might be MPS1.4 related, I'm finding. I don't
remember if that thread had my workaround to the APIC issue, so I'll
attach that if you're feeling adventurous. Works flawlessly for me in
production, for the last few months.

| Running software I developed:
| - running on 2.4.17
| - accessing a large number of files
| - 2GB memory
| - large multiple partitions - ext2
|
| I saw references to patches by Martin and
| M.H.vanLeeuwen on this thread. Where can I get those
| (hopefully with a bit of info) ?

I've attached his patch; hopefully he doesn't mind. His patch is
actually similar to code that's in rmap currently.

It does seem to temper the effects of [id]cache bloat for some of my
more common load patterns. But even with that patch, under VM load the
mainline kernel collapses. For instance, I have a large parallel task
that takes 5 minutes under -rmap or -aa, but I get bored and kill it
after 4 *hours* on mainline. It dips into swap, but only by about 50MB.

Also, -aa doesn't seem to make as large an impact on shrinking the
[id]caches. I imagine that without returning values,
shrink_[id]cache_memory() behavior is difficult to tune appropriately.

In any case, rmap-12f has been running fine for me. I'm going to create
three kernels to distribute in production -- 2.4.18 more or less
vanilla, 2.4.18 with random debugging (thanks Andreas) to try to resolve
the /dev/random death issue, and 2.4.18+O(1)K3+rmap12f.

rmap is a tremendous improvement over mainline -- really the only data I
still need is stability, both of O(1) and rmap. Porting Andrea's 10_vm
was a pain the last time I did it, and it didn't have all of the
positives of rmap.

Clearly I'm not in the majority, though. While I get bitten on a weekly
basis by the 2.4 VM, very few other people mention it. Maybe they just
assume that it's normal behavior? Scary.

Anyway, short of the long is that I would suggest rmap if you're having
problems. Rmap actually obviates three other patches I typically apply.
But be aware that rmap is still a bit of a work in progress, at least in
terms of tuning.

Cheers,

-- 
Ken.
brownfld@irridia.com

| I also saw references to 'rmap' on the 2.4.18 | changelog. Is that related ? | | pls. cc' me on your posts back. | | Thanks | Aviv | | "And all this science I don't understand, | It's just my job five days a week" | Rocket Man, E.J.

--- linux.virgin/mm/vmscan.c Mon Dec 31 12:46:25 2001 +++ linux/mm/vmscan.c Fri Jan 11 18:03:05 2002 @@ -394,9 +394,9 @@ if (PageDirty(page) && is_page_cache_freeable(page) && page->mapping) { /* * It is not critical here to write it only if - * the page is unmapped beause any direct writer + * the page is unmapped because any direct writer * like O_DIRECT would set the PG_dirty bitflag - * on the phisical page after having successfully + * on the physical page after having successfully * pinned it and after the I/O to the page is finished, * so the direct writes to the page cannot get lost. */ @@ -480,11 +480,14 @@ /* * Alert! We've found too many mapped pages on the - * inactive list, so we start swapping out now! + * inactive list. + * Move referenced pages to the active list. */ - spin_unlock(&pagemap_lru_lock); - swap_out(priority, gfp_mask, classzone); - return nr_pages; + if (PageReferenced(page) && !PageLocked(page)) { + del_page_from_inactive_list(page); + add_page_to_active_list(page); + } + continue; } /* @@ -521,6 +524,9 @@ } spin_unlock(&pagemap_lru_lock); + if (max_mapped <= 0 && (nr_pages > 0 || priority < DEF_PRIORITY)) + swap_out(priority, gfp_mask, classzone); + return nr_pages; } - 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/