Date: Fri, 30 Apr 2010 16:34:25 +0530 From: "C. Jayachandran" <c.jayachandran@gmail.com> To: freebsd-mips@freebsd.org, Randall Stewart <rrs@lakerest.net> Subject: Alternate scheme for page table page allocation Message-ID: <t2m98a59be81004300404x408e4b7fx8eea156061153b30@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--001636b2ac73cd39ad0485723460 Content-Type: text/plain; charset=ISO-8859-1 I was looking at a hang I get during 'make -j32 buildworld' on XLR SMP, and as far as I can see, it is caused by the way page table pages are allocated when we have >512MB memory. The attached patch (http://sites.google.com/site/cjayachandran/files//pmap-page-alloc.patch) changes the way pages for the PTE/PDE entries are allocated in systems with >512M. This scheme uses vm_phys_alloc_contig to allocate page table pages KSEG0 region and has a UMA zone to cache them. This will allow us to avoid multi-TLB misses that happen when we access page table entires in the TLB miss handler. I think a similar approach can be taken to allocate 8K page-pairs for N32(for >4GB RAM) and N64. With this patch, 'make -j32 buildworld' consistently works with 32 cpus on an XLR is booted SMP with 4GB RAM. With the current page alloc code, I get a hang about an hour into buildworld. The patch is based off r206712 - I still have not found a fix for the crashes I see in versions after that. Please let me know your comments, especially if you can think of a better way of doing this. I can make a version of this patch for HEAD if this is acceptable. JC. --001636b2ac73cd39ad0485723460--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?t2m98a59be81004300404x408e4b7fx8eea156061153b30>