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