Date: Mon, 22 Mar 2010 09:55:04 -0500 (CDT) From: Mark Tinguely <tinguely@casselton.net> To: gjb@semihalf.com, tinguely@casselton.net Cc: freebsd-arm@freebsd.org, cognet@freebsd.org Subject: Re: Performance of SheevaPlug on 8-stable Message-ID: <201003221455.o2MEt4V5068925@casselton.net> In-Reply-To: <4B951CE2.6040507@semihalf.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 08 Mar 2010 16:50:58, Grzegorz Bernacki said: > This is probably caused by mechanism which turns of cache for shared pages. > When I add applied following path: > > diff --git a/sys/arm/arm/pmap.c b/sys/arm/arm/pmap.c > index 390dc3c..d17c0cc 100644 > --- a/sys/arm/arm/pmap.c > +++ b/sys/arm/arm/pmap.c > @@ -1401,6 +1401,8 @@ pmap_fix_cache(struct vm_page *pg, pmap_t pm, vm_offset_t va) > */ > > TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) { > + if (pv->pv_flags & PVF_EXEC) > + return; > /* generate a count of the pv_entry uses */ > if (pv->pv_flags & PVF_WRITE) { > if (pv->pv_pmap == pmap_kernel()) > > execution time of 'test' program is: > mv78100-4# time ./test > 5.000u 0.000s 0:05.40 99.8% 40+1324k 0+0io 0pf+0w > > and without this path is: > mv78100-4# time ./test > 295.000u 0.000s 4:56.01 99.7% 40+1322k 0+0io 0pf+0w > > > I think we need to handle executable pages in different way. > > grzesiek Good going Oliver and thank-you on the pmap_enter_pv kernel map patch Revision 205425. Last week, before this patch, Maks Verver was so kind to put some statements in the VM (vm_page_free_toq()) for the SheevaPlug because I could not cause these paths with the Gumstix emulator. Maks, could you add to vm_phys_free_pages(): if (m->md.pv_kva) + { + printf("vm_phys_free_pages: md.pv_kva 0x%08x\n", m->md.pv_kva); m->md.pv_kva = 0; + } Even on the Gumstix emulator with the current patch, pmap_fix_cache() still has many executable pages that have both a kernel and user pv_entry. Looks like something like the above patch is still needed. --Mark Tinguely.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003221455.o2MEt4V5068925>