Re: [PATCH] [request for inclusion] Realtime LSM

Ingo Molnar
2005-01-15T14:43:33Z

* Jack O'Quin <joq@io.com> wrote:

> --- kernel/sched.c~ Fri Dec 24 15:35:24 2004
> +++ kernel/sched.c Wed Jan 12 23:48:49 2005
> @@ -95,7 +95,7 @@
> #define MAX_BONUS (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100)
> #define INTERACTIVE_DELTA 2
> #define MAX_SLEEP_AVG (DEF_TIMESLICE * MAX_BONUS)
> -#define STARVATION_LIMIT (MAX_SLEEP_AVG)
> +#define STARVATION_LIMIT 0
> #define NS_MAX_SLEEP_AVG (JIFFIES_TO_NS(MAX_SLEEP_AVG))
> #define CREDIT_LIMIT 100

could you try the patch below? The above patch wasnt enough. With the
patch below we turn off the starvation limits for nice --20 tasks only.
This is still a hack only. If we cannot make nice --20 perform like
RT-prio-1 then there's some problem with SCHED_OTHER scheduling.

Ingo

--- linux/kernel/sched.c.orig
+++ linux/kernel/sched.c
@@ -2245,10 +2245,10 @@ EXPORT_PER_CPU_SYMBOL(kstat);
* if a better static_prio task has expired:
*/
#define EXPIRED_STARVING(rq) \
- ((STARVATION_LIMIT && ((rq)->expired_timestamp && \
+ ((task_nice(current) > -20) && ((STARVATION_LIMIT && ((rq)->expired_timestamp && \
(jiffies - (rq)->expired_timestamp >= \
STARVATION_LIMIT * ((rq)->nr_running) + 1))) || \
- ((rq)->curr->static_prio > (rq)->best_expired_prio))
+ ((rq)->curr->static_prio > (rq)->best_expired_prio)))

/*
* Do the virtual cpu time signal calculations.