Subject: Re: moving allocsys() into MI part of kernel
To: None <lukem@netbsd.org>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: tech-kern
Date: 05/08/1999 13:01:16
In message <199905081700.DAA07665@wombat.cs.rmit.edu.au>,
Luke Mewburn writes:
>Hi all...
>
>Whilst looking at which ports supported the `BUFCACHE' option (with
>intent to convert the remaining ports), I noticed that most ports
>had a MD allocsys() function, which (amongst other things) calculates
>and then allocates the memory to be used by the buffer cache.
>
>I decided to see how hard it would be to make this function MI;
>it was fairly simple.
Cool! I'd looked at this before the 1.4 cycle, but got bogged down in
other things. Just a few comments:
* Several ports have code to allocate MD structures (alpha per-cpu
machine-check blocks, sparc dvmamaps, whatever). You moved this
to the tail of the MI allocsys(), with per-CPU #ifdefs..
Why not add an MD callback, with the same signature as
the existing MD allocsys(), and call that on ports where it's
needed (and thus #define'd)?
* Is it wise to be merging this code whilst there's an open PR
against i386 systems with >= 1 Gig of RAM? Overly-large buffers
exhausting KVM (ala nkpdes) has to be the first suspect, here.
* Systems with a Gbyte or more of RAM will only become more common.
If we're going to have a single routine to handle these, isnt it time
to start printing the output in megabytes, at least?
At least when buffer size crosses some threshhold?
* VM_MAX_KERNEL_BUF is #define'd as
((VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) * MAGIC / 10)
on all ports that use it, where MAGIC is either 4 (arm32) or 7 (386,pc532).
why those particular magic constants? What hardware features (if any)
do they depend on? What they should be for, e.g., mips?
How about we wrap the buffer-limit code in #ifdef VM_MAX_KERNEL_BUF for now?