lkml.org 
[lkml]   [2012]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 05/16] sched: SCHED_DEADLINE policy implementation.
From
Date
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@linutronix.de
Cc: mingo@redhat.com
Cc: rostedt@goodmis.org
Cc: cfriesen@nortel.com
Cc: oleg@redhat.com
Cc: fweisbec@gmail.com
Cc: darren@dvhart.com
Cc: johan.eker@ericsson.com
Cc: p.faure@akatech.ch
Cc: linux-kernel@vger.kernel.org
Cc: claudio@evidence.eu.com
Cc: michael@amarulasolutions.com
Cc: Fabio Checconi
Cc: Tommaso Cucinotta
Cc: nicola.manica@disi.unitn.it
Cc: luca.abeni@unitn.it
Cc: dhaval.giani@gmail.com
Cc: hgu1972@gmail.com
Cc: paulmck@linux.vnet.ibm.com
Cc: Dario Faggioli
Cc: insop.song@ericsson.com
Cc: liming.wang@windriver.com
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
\
 
 \ /
  Last update: 2012-04-23 14:43    [W:0.027 / U:5.448 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site