Noah Yan wrote:
> Thanks Adam and Bart for answering. 
> How much physical memory kernel can access if in a traditional 
> 3G/1G split? I know if kernel AS is direct mapping, it is just 1G.
> How much physical memory does Solaris x86 support currently?
> 

The Solaris kernel uses segmap to bring pages into and out of
the kernel address space since we used to support
machines with 20G of physical memory w/ 32 bit shared address
space kernels (SS2000 eg Dragon).  The problem with segmap is that
the demapping of pages out of the kernel address spaces causes
cross calls to all the other cpus; this doesn't scale.  For 64 bit
kernels we're now using consistent physical/virtual mappings
(segkpm); we can use lazy tlb displacement since we don't
need to worry about ever mapping a different physical page
at that virtual address.

Solaris x86 can choose the boundary between kernel and user
at boot time; we end up changing this for large memory configs.
32 bit x86 kernels probably cannot support more than about
32 G of physical even grabbing large chunks of the user's
addresss space as there is some per page overhead in Solaris
(page_t structures).

If you want to support large amounts of physical memory,
use a 64 bit kernel.  Solars SPARC supports 576 GB of
RAM today; amd64 is also quite large.

- Bart

-- 
Bart Smaalders                  Solaris Kernel Performance
barts at cyber.eng.sun.com              http://blogs.sun.com/barts

Reply via email to