Messages in this thread | | | Subject | Re: [PATCH 05/16] sched: SCHED_DEADLINE policy implementation. | From | Peter Zijlstra <> | Date | Mon, 23 Apr 2012 17:15:48 +0200 |
| |
On Fri, 2012-04-06 at 09:14 +0200, Juri Lelli wrote: > +static > +int dl_runtime_exceeded(struct rq *rq, struct sched_dl_entity *dl_se) > +{ > + int dmiss = dl_time_before(dl_se->deadline, rq->clock); > + int rorun = dl_se->runtime <= 0; >+ > + if (!rorun && !dmiss) > + return 0; > + > + /* > + * If we are beyond our current deadline and we are still > + * executing, then we have already used some of the runtime of > + * the next instance. Thus, if we do not account that, we are > + * stealing bandwidth from the system at each deadline miss! > + */ > + if (dmiss) { > + dl_se->runtime = rorun ? dl_se->runtime : 0; > + dl_se->runtime -= rq->clock - dl_se->deadline; > + }
So ideally this can't happen, but since we already leak time from the system through means of hardirq / kstop / context-switch-overhead / clock-jitter etc.. we avoid the error accumulating?
> + > + return 1; > +}
| |