Re: O(1) scheduler ver H6 - more straightforward timeslice macros

From: Matti Aarnio (matti.aarnio@zmailer.org)
Date: Sat Jan 12 2002 - 16:59:45 EST


On Sat, Jan 12, 2002 at 02:16:08PM -0500, James C. Owens wrote:
> Ingo,
>
> I like the new scheduler. It seems like the timeslice macros in sched.h
> could be more straighforward - i.e. instead of

   (I quote too much, but to illustriate the point...)

> #define PRIO_TO_TIMESLICE(p) \
> ((( (MAX_USER_PRIO-1-USER_PRIO(p))*(MAX_TIMESLICE-MIN_TIMESLICE) + \
> MAX_USER_PRIO-1) / MAX_USER_PRIO) + MIN_TIMESLICE)
>
> #define RT_PRIO_TO_TIMESLICE(p) \
> ((( (MAX_RT_PRIO-(p)-1)*(MAX_TIMESLICE-MIN_TIMESLICE) + \
> MAX_RT_PRIO-1) / MAX_RT_PRIO) + MIN_TIMESLICE)
>
> why not
>
> #define PRIO_TO_TIMESLICE(p) \
> (MAX_TIMESLICE -
> (USER_PRIO(p)/(MAX_USER_PRIO-1))*(MAX_TIMESLICE-MIN_TIMESLICE))
>
> #define RT_PRIO_TO_TIMESLICE(p) \
> (MAX_TIMESLICE - (p/(MAX_RT_PRIO-1))*(MAX_TIMESLICE-MIN_TIMESLICE))
>
>
> The second way seems simpler to me, and really illustrates what you are
> doing in a more straightforward manner.

   Except that the math is INTEGER, not floating-point,
   which means that this way you loose precission.

   You HAVE TO do multiplications first, only then (finally) the division.

   Depending the value-spaces, small-enough value-spaces might be
   turnable into table mappings. However that has lots of dependencies
   in hardware architecture, e.g. memory access speeds, cache pollution,
   speed of multiply/divide operations, etc.

   If dividers/multipliers are constants, and powers of two, the math
   can happen with constant shifts, which are fast at all systems.
   If not, things get rather complicated. (And thus a careless -1,
   or lack of one, may be costly.)

> I also cleaned up some of the comments. The sched.h diff between the H6
> version of the scheduler applied to 2.4.18-pre3 and vanilla 2.4.18-pre3
> follows: (Note that I changed the min and max timeslices to 20 and 100
> for my own use.)
...

  "uni-diff please, use '-u' option for the diff"

> To lkml - please cc me on any response, as I do not subscribe to the
> lkml - I read it via a news gateway.
>
>
> Jim Owens

/Matti Aarnio
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jan 15 2002 - 21:00:39 EST