2.2.10_andrea-VM10.gz

Andrea Arcangeli (andrea@suse.de)
Wed, 30 Jun 1999 18:27:48 +0200 (CEST)


I released a new 2.2.10_andrea-VM10. The main difference is some good
change in the lru-page code, now it's in sync with the LRU-page patch I
released for pre-2.3.9-5 (obviously this one is not SMP threaded :).

ftp://e-mind.com/pub/andrea/kernel-patches/2.2.10_andrea-VM10.gz
ftp://ftp.suse.com/pub/people/andrea/kernel-patches/2.2.10_andrea-VM10.gz

I stessed it very much and as usual it's rock solid (and now it should be
also faster since previously I was doing a double delete from the lru
list in shrink_mmap, not a bug but not the right thing to do).

The main features of the patch are:

o Avoid running in O(nr_phys_pages) in shrink_mmap but run close to
O(1) even if the cache is near zero. This make an _huge_
difference for the swap and allows us to not be fooled swapping
out too eary due not well distributed cache over the memmap.
o shm memory swapout asynchronously using the swap cache to resolve
the read-write locking. (needed since 2.3.8 or 7 I don't remeber)
o clustering in the get_swap_cache code: try to find a empty cluster
before getting a fragmented one.
o persistence of the data in the swap space: the same page is going
to be swapped out always in the place on swap even after a swapin
fault.
o fix in the higherbit/lowerbit logic in swap_free.
o write directly the old-dirty buffers from try_to_free_pages().
NOTE: while this feature cause fs corruption with pre-2.3.9-5
it always worked OK on 2.2.x (I suspect it's some kind of 2.3.9
race).
o handle _very_ well out of memory conditions.

If you have OOM or swap troubles with 2.2.10 I really suggest you to try
the VM-patch and feedback. (btw I'll also produce soon an alone OOM patch
for 2.2.10). NOTE: the task killed is still the faulting one, since
choosing which task to kill with an oom-detector is really not trivial
(and was not safe in the patch I did and I seen so far) since we must be
sure that the task is ready to be killed, and we are sure about that only
for the faulting task.

This patch should also give an nice improvement under high VM load (when
your memory become low).

If you have any problem with it make sure to send me a bug report (and
don't bother Linus and others if you can't reproduce the problem with a
vanilla 2.2.10).

Thanks! :)

Andrea

PS. The patch work on Alpha as well.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/