Subject: Re: sparc64 pmap optimizations
To: <>
From: David Laight <david@l8s.co.uk>
List: tech-kern
Date: 08/26/2002 11:46:15
>
> fork+exit
> orig 0.025u 0.979s 0:09.22 10.7% 0+0k 0+1io 0pf+0w
> chuq 0.014u 0.674s 0:07.51 9.0% 0+0k 0+0io 0pf+0w
> improvement 18.5%
>
> for+exec+exit
> orig 0.076u 2.232s 0:07.57 30.3% 0+0k 0+3io 0pf+0w
> chuq 0.137u 1.609s 0:05.92 29.2% 0+0k 0+1io 0pf+0w
> improvement 21.8%
What are you using to get those timings?
The kernel counting of process time contains (at least) 2 bugs:
1) processes that are never interrupted by a clock tick are
not give any cpu time.
calcru returns 0 if (tot == 0), rather than (say) setting
tot = u = 1 so that all the time is given to the user.
2) the time from the last process switch/clock tick until the
process exits is ignored.
exit1 sets p->p_stat = SDEAD before calling caclru - which
check p->p_stat == SONPROC to collect tim for the current
process.
Move the code that sets the process state (in exit1) to
below the calcru bit.
David
--
David Laight: david@l8s.co.uk