[o(1) sched J0] higher priority smaller timeslices, in fact

Alexei Podtelezhnikov (apodtele@mccammon.ucsd.edu)
Wed, 16 Jan 2002 14:38:41 -0800 (PST)


The comment and the actual macros are inconsistent.
positive number * (19-n) is a decreasing function of n!

+ * The higher a process's priority, the bigger timeslices
+ * it gets during one round of execution. But even the lowest
+ * priority process gets MIN_TIMESLICE worth of execution time.
+ */

-#define NICE_TO_TIMESLICE(n) (MIN_TIMESLICE + \
- ((MAX_TIMESLICE - MIN_TIMESLICE) * (19 - (n))) / 39)
+#define NICE_TO_TIMESLICE(n) (MIN_TIMESLICE + \
+ ((MAX_TIMESLICE - MIN_TIMESLICE) * (19-(n))) / 39)

I still suggest a different set as faster and more readable at least to
me. Just two operations instead of 4!

#define NICE_TO_TIMESLICE(n) (((n)+21)*(HZ/10)) // should be positive!
#define MAX_TIMESLICE NICE_TO_TIMESLICE(19)
#define MIN_TIMESLICE NICE_TO_TIMESLICE(-20)

with later tweaking done in the function, like (((n)+22)*(HZ/25)) instead.

Alexei

-
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/