Re: [PATCH] allocation looping + kswapd CPU cycles

David S. Miller (davem@redhat.com)
Tue, 8 May 2001 13:25:09 -0700 (PDT)


Marcelo Tosatti writes:
> On Tue, 8 May 2001, Mark Hemment wrote:
> > Does anyone know why the 2.4.3pre6 change was made?
>
> Because wakeup_bdflush(0) can wakeup bdflush _even_ if it does not have
> any job to do (ie less than 30% dirty buffers in the default config).

Actually, the change was made because it is illogical to try only
once on multi-order pages. Especially because we depend upon order
1 pages so much (every task struct allocated). We depend upon them
even more so on sparc64 (certain kinds of page tables need to be
allocated as 1 order pages).

The old code failed _far_ too easily, it was unacceptable.

Why put some strange limit in there? Whatever number you pick
is arbitrary, and I can probably piece together an allocation
state where the choosen limit is too small.

So instead, you could test for the condition that prevents any
possible forward progress, no?

Later,
David S. Miller
davem@redhat.com
-
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/