Kernel/Userland Mem-Space Tuning (1/3 on IA32)

David G. Lawrence dg at
Sun Feb 27 15:46:05 GMT 2005

> >>sure about the exakt syntax but I know someone can change the half by 
> >>half parity towards 1 to 3 in
> >>XP). I'm not sure whether FreeBSD divides kernel/userland address space 
> >>this way, I know Linux and
> >>Windows does and on Windows we changed this (not yet on Linux and not 
> >>yet on our FreeBSD machines
> >>(OS version >5.0, mostly FreeBSD 5.3-R or 5.4-PRERELEASE).
> >>
> >>Any help is appreciated.
> >>   
> >>
> >
> >  FreeBSD divides the 32bit virtual address space with 1GB for the kernel
> >and 3GB for user processes. This can be changed with some kernel compile-
> >time constants (primarily KVA_PAGES, however NKPT may also need to be
> >increased if the kernel address space is increased).
> Dear David.
> Thank you very much.
> I assumed FreeBSD do the same like Linux, but don't obviously.
> I found a lot of tweaking kernel parameters,

   The last three are not related to the address space division and you
should not change those under normal circumstance.

> Reading some comments  in sys/kern/kern_malloc.c make be a bit confused, 
> I do not know much about kernel's interna.
> It is nice to hear that FreeBSD do a 1/3 division, I expected a 2/2 
> division like Linux does. So no need for anything changing.

   It's a 1:4 ratio.
> Can someone please explain NKPT? I'm simply curious, didn't found a 
> satisfying answer via google, but a lot of source code with this in ...

   It's the number of page table pages that are assigned to the kernel
address space. Each page maps 4MB, so 256 (the default) provides for
1GB of kernel virtual address space, leaving 3GB for user space.


David G. Lawrence
Download Technologies, Inc. - - (866) 399 8500
TeraSolutions, Inc. - - (888) 346 7175
The FreeBSD Project -
Pave the road of life with opportunities.

More information about the freebsd-questions mailing list