All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]sched/rt: Do not account zero delta_exec in update_curr_rt()
@ 2013-01-30 12:50 Kirill Tkhai
  2013-01-30 13:35 ` Steven Rostedt
  2013-01-31 11:06 ` [tip:sched/core] sched/rt: " tip-bot for Kirill Tkhai
  0 siblings, 2 replies; 3+ messages in thread
From: Kirill Tkhai @ 2013-01-30 12:50 UTC (permalink / raw)
  To: linux-kernel; +Cc: Steven Rostedt, Ingo Molnar, Peter Zijlstra, linux-rt-users

There are several places of consecutive calls of dequeue_task_rt()
and put_prev_task_rt() in the scheduler. For example, function
rt_mutex_setprio() does it.

The both calls lead to update_curr_rt(), the second of it receives
zeroed delta_exec. The only effective action in this case is call of
sched_rt_avg_update(), which can change rq->age_stamp and rq->rt_avg.
But it is possible in case of ""floating"" rq->clock. This fact is
not reasonable to be accounted. Another actions do nothing.

Signed-off-by: Kirill V Tkhai <tkhai@yandex.ru>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@kernel.org>
CC: Peter Zijlstra <peterz@infradead.org>
CC: linux-rt-users <linux-rt-users@vger.kernel.org>
---
 kernel/sched/rt.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 4e8f0f4..c6d7993 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -925,8 +925,8 @@ static void update_curr_rt(struct rq *rq)
 		return;
 
 	delta_exec = rq->clock_task - curr->se.exec_start;
-	if (unlikely((s64)delta_exec < 0))
-		delta_exec = 0;
+	if (unlikely((s64)delta_exec <= 0))
+		return;
 
 	schedstat_set(curr->se.statistics.exec_max,
 		      max(curr->se.statistics.exec_max, delta_exec));


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH]sched/rt: Do not account zero delta_exec in update_curr_rt()
  2013-01-30 12:50 [PATCH]sched/rt: Do not account zero delta_exec in update_curr_rt() Kirill Tkhai
@ 2013-01-30 13:35 ` Steven Rostedt
  2013-01-31 11:06 ` [tip:sched/core] sched/rt: " tip-bot for Kirill Tkhai
  1 sibling, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2013-01-30 13:35 UTC (permalink / raw)
  To: Kirill Tkhai; +Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, linux-rt-users

On Wed, 2013-01-30 at 16:50 +0400, Kirill Tkhai wrote:
> There are several places of consecutive calls of dequeue_task_rt()
> and put_prev_task_rt() in the scheduler. For example, function
> rt_mutex_setprio() does it.
> 
> The both calls lead to update_curr_rt(), the second of it receives
> zeroed delta_exec. The only effective action in this case is call of
> sched_rt_avg_update(), which can change rq->age_stamp and rq->rt_avg.
> But it is possible in case of ""floating"" rq->clock. This fact is
> not reasonable to be accounted. Another actions do nothing.
> 
> Signed-off-by: Kirill V Tkhai <tkhai@yandex.ru>

Acked-by: Steven Rostedt <rostedt@goodmis.org>

-- Steve

> CC: Ingo Molnar <mingo@kernel.org>
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: linux-rt-users <linux-rt-users@vger.kernel.org>
> ---
>  kernel/sched/rt.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index 4e8f0f4..c6d7993 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -925,8 +925,8 @@ static void update_curr_rt(struct rq *rq)
>  		return;
>  
>  	delta_exec = rq->clock_task - curr->se.exec_start;
> -	if (unlikely((s64)delta_exec < 0))
> -		delta_exec = 0;
> +	if (unlikely((s64)delta_exec <= 0))
> +		return;
>  
>  	schedstat_set(curr->se.statistics.exec_max,
>  		      max(curr->se.statistics.exec_max, delta_exec));



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [tip:sched/core] sched/rt: Do not account zero delta_exec in update_curr_rt()
  2013-01-30 12:50 [PATCH]sched/rt: Do not account zero delta_exec in update_curr_rt() Kirill Tkhai
  2013-01-30 13:35 ` Steven Rostedt
@ 2013-01-31 11:06 ` tip-bot for Kirill Tkhai
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Kirill Tkhai @ 2013-01-31 11:06 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, peterz, linux-rt-users, rostedt, tkhai, tglx

Commit-ID:  fc79e240be5aa379dd36a62158be5a5ee0e4aec7
Gitweb:     http://git.kernel.org/tip/fc79e240be5aa379dd36a62158be5a5ee0e4aec7
Author:     Kirill Tkhai <tkhai@yandex.ru>
AuthorDate: Wed, 30 Jan 2013 16:50:36 +0400
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 31 Jan 2013 10:31:13 +0100

sched/rt: Do not account zero delta_exec in update_curr_rt()

There are several places of consecutive calls of
dequeue_task_rt() and put_prev_task_rt() in the scheduler.
For example, function rt_mutex_setprio() does it.

The both calls lead to update_curr_rt(), the second of it
receives zeroed delta_exec. The only effective action in this
case is call of sched_rt_avg_update(), which can change
rq->age_stamp and rq->rt_avg. But it is possible in case of
""floating"" rq->clock. This fact is not reasonable to be
accounted. Another actions do nothing.

Signed-off-by: Kirill V Tkhai <tkhai@yandex.ru>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>
CC: linux-rt-users <linux-rt-users@vger.kernel.org>
Link: http://lkml.kernel.org/r/931541359550236@web1g.yandex.ru
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/rt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 2f69ca9..94abca4 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -925,8 +925,8 @@ static void update_curr_rt(struct rq *rq)
 		return;
 
 	delta_exec = rq->clock_task - curr->se.exec_start;
-	if (unlikely((s64)delta_exec < 0))
-		delta_exec = 0;
+	if (unlikely((s64)delta_exec <= 0))
+		return;
 
 	schedstat_set(curr->se.statistics.exec_max,
 		      max(curr->se.statistics.exec_max, delta_exec));

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-01-31 11:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-30 12:50 [PATCH]sched/rt: Do not account zero delta_exec in update_curr_rt() Kirill Tkhai
2013-01-30 13:35 ` Steven Rostedt
2013-01-31 11:06 ` [tip:sched/core] sched/rt: " tip-bot for Kirill Tkhai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.