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
