Subject: re: Ungraceful low memory issue
To: Juergen Hannken-Illjes <hannken@netbsd.org>
From: matthew green <mrg@eterna.com.au>
List: port-sparc
Date: 08/15/2004 02:20:53
On Sat, Aug 14, 2004 at 08:19:46AM +0200, Havard Eidnes wrote:
> > If this guesswork is right, I don't really have any idea how to go about
> > fixing it, though -- that would be something for the VM experts among us.
>
> Intuitively it would seem that some memory should be reserved for
> e.g. the pool allocator and that backpressure on the other users of
> physical memory needs to imposed a bit earler than before we run
> completely out.
Would it help to remove these lines from uvm_pdaemon.c::uvmpd_tune() ?
uvmexp.freemin = uvmexp.npages / 20;
-> /* between 16k and 256k */
-> /* XXX: what are these values good for? */
-> uvmexp.freemin = MAX(uvmexp.freemin, (16*1024) >> PAGE_SHIFT);
-> uvmexp.freemin = MIN(uvmexp.freemin, (256*1024) >> PAGE_SHIFT);
The min threshhold (16*1024) will almost never be used as it means a
memory size of 20*2*8k == 320k for a pagesize of 8k. So it will always
clamp uvmexp.freemin to 256k which is very low for modern memory sizes.
these values actually come from 4.4BSD/machvm completely untouched.
many many years ago i spent some time trying to determine better values
for this but i didn't really discover anything conclusive...
however, this shouldn't really affect the pool allocator... we already
reserve a bunch of pages for such conditions i thought.
.mrg.