Re: Good and bad news on 2.1.110, and a fix

Stephen C. Tweedie (
Mon, 27 Jul 1998 12:07:27 +0100


On Thu, 23 Jul 1998 22:28:39 +0200 (CEST), Rik van Riel
<> said:

> On Thu, 23 Jul 1998, Bill Hawes wrote:
>> Stephen C. Tweedie wrote:
>> > The patch to page_alloc.c is a minimal fix for the fragmentation
>> > problem. It simply records allocation failures for high-order pages,
>> > and forces free_memory_available to return false until a page of at
>> > least that order becomes available. The impact should be low, since

> This sound suspiciously like the first version of
> free_memory_available() that Linus introduced in
> 2.1.89...

No, it's very different; first, it is adaptive, and second, it only
waits for _one_ of the higher order free page lists to be filled. The
patch carefully does absolutely nothing until we get a definite
failure to get a higher order page, and then it does the minimum
necessary work to satisfy one request before going inactive again.

It is the minimum necessary patch to keep the kernel from locking up,
but it does nothing at all most of the time.

> It will happen for sure; just think of what will happen
> when that 64 kB DMA allocation fails on your 6 MB box :(

Which is one reason why we probably want to timeout the condition
after a second or two.

> Maybe we want to count the number of order-3 memory structures
> free and keep that number above a certain level (back to
> Zlatko's 2.1.59 patch :-).

Again, it's arbitrary, and would result in unnecessary extra
activity. What we'd like to do is make sure we only do _necessary_
pageing work, and keep as much memory as possible in use the rest of
the time.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at