lkml.org 
[lkml]   [2002]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: O(1) scheduler ver H6 - more straightforward timeslice macros
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/

\
 
 \ /
  Last update: 2005-03-22 13:15    [W:0.136 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site