Subject: Re: Extreme slowdown
To: Reinoud Zandijk <imago@kabel065011.kabel.utwente.nl>
From: Richard Earnshaw <rearnsha@buzzard.freeserve.co.uk>
List: port-arm32
Date: 02/24/2001 22:35:22
> Hi Richard,
>
> On Sat, 24 Feb 2001, Richard Earnshaw wrote:
> > There are some nasty diagnostics in pmap.c, which should probably be moved
> > to DEBUG.
> >
> > arm32/pmap.c:
> > #ifdef DIAGNOSTIC
> > for (npv = pv; npv; npv = npv->pv_next)
> > if (pmap == npv->pv_pmap && va == npv->pv_va)
> > panic("pmap_enter_pv: already in pv_tab pv
> > %p: %
> > 08lx/%p/%p",
> > pv, pv->pv_va, pv->pv_pmap, pv->
> > pv_next);
> > #endif
>
> 've moved this one to PMAP_DEBUG since this is one of the things that
> really slow down the machine ... without this few likes the system time
> usage is again within limits and is about 0.5-1% again running top =)
Yep, on the configure gnumake test, removing this is good for 4-6 seconds
off the system time.
>
> > [there seem to be 3 cases like this one, note it uses vm_physseg_find,
> > which is horrendously expensive (does a binary search)!]
> > #ifdef DIAGNOSTIC
> > int bank, off;
> >
> > if ((bank = vm_physseg_find(atop(pa), &off)) != -1) {
> > struct pv_entry *pv;
> >
> > pv = &vm_physmem[bank].pmseg.pvent[off];
> > if (pv->pv_pmap != NULL)
> > panic("pmap_kenter_pa: %08lx multiply mapped\n",
> > pa);
> > }
> > #endif
>
> Well Richard, can you point out where these parts are? I cant find them !!
> :(( wierd eh?
>
Nope, 'cos they are in my own pmap mods, not in the official sources :-)
I'm about to start dusting these down for general release.
R.