Re: [PATCH 05/16] sched: SCHED_DEADLINE policy implementation.

From: cucinotta
Date: Mon Apr 23 2012 - 08:41:21 EST


How would it be to add an unlikely() to the check of the while () condition ?
Guess the point of subtractions vs division and multiplications was that the former was supposed to be faster than the latter, especially in view of the fact that the while () loop body is likely to be executed just once, if at all.
However, removing a while () loop from the scheduler path doesn't seem a bad idea either.

T.
------Original Message------
From: Peter Zijlstra
To: Juri Lelli
Cc: tglx@xxxxxxxxxxxxx
Cc: mingo@xxxxxxxxxx
Cc: rostedt@xxxxxxxxxxx
Cc: cfriesen@xxxxxxxxxx
Cc: oleg@xxxxxxxxxx
Cc: fweisbec@xxxxxxxxx
Cc: darren@xxxxxxxxxx
Cc: johan.eker@xxxxxxxxxxxx
Cc: p.faure@xxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: claudio@xxxxxxxxxxxxxxx
Cc: michael@xxxxxxxxxxxxxxxxxxxx
Cc: Fabio Checconi
Cc: Tommaso Cucinotta
Cc: nicola.manica@xxxxxxxxxxxxx
Cc: luca.abeni@xxxxxxxx
Cc: dhaval.giani@xxxxxxxxx
Cc: hgu1972@xxxxxxxxx
Cc: paulmck@xxxxxxxxxxxxxxxxxx
Cc: Dario Faggioli
Cc: insop.song@xxxxxxxxxxxx
Cc: liming.wang@xxxxxxxxxxxxx
Subject: Re: [PATCH 05/16] sched: SCHED_DEADLINE policy implementation.
Sent: 23 Apr 2012 13:22

On Mon, 2012-04-23 at 14:13 +0200, Juri Lelli wrote:
> On 04/23/2012 01:32 PM, Peter Zijlstra wrote:
> > On Fri, 2012-04-06 at 09:14 +0200, Juri Lelli wrote:
> >> + /*
> >> + * We Keep moving the deadline away until we get some
> >> + * available runtime for the entity. This ensures correct
> >> + * handling of situations where the runtime overrun is
> >> + * arbitrary large.
> >> + */
> >> + while (dl_se->runtime<= 0) {
> >> + dl_se->deadline += dl_se->dl_deadline;
> >> + dl_se->runtime += dl_se->dl_runtime;
> >> + }
> >
> > Does gcc 'optimize' that into a division? If so, it might need special
> > glue to make it not do that.
>
> I got two adds and a jle, no div here..

Gcc is known to change such loops to something like:

if (runtime <= 0) {
tmp = 1 - runtime / dl_runtime;
deadline += tmp * dl_deadline;
runtime += tmp * dl_runtime;
}



Sent from my BlackBerry® smartphone from eMobileèº{.nÇ+‰·Ÿ®‰­†+%ŠËlzwm…éb?맲æìr¸›zX§»®w¥Š{ayºʇڙë,j­¢f£¢·hš‹àz¹®w¥¢¸ ¢·¦j:+v‰¨ŠwèjØm¶Ÿÿ¾«‘êçzZ+ƒùšŽŠÝ¢j"?ú!¶iO•æ¬z·švØ^¶m§ÿðà nÆŠàþY&—