Skip site navigation (1)Skip section navigation (2)
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>