All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sched/rt: Make update_curr_rt() more accurate
@ 2018-02-05  3:18 Wen Yang
  2018-02-05 10:30 ` Peter Zijlstra
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Wen Yang @ 2018-02-05  3:18 UTC (permalink / raw)
  To: mingo, peterz; +Cc: linux-kernel, jiang.biao2, zhong.weidong, wen.yang99

rq->clock_task may be updated between the two calls of 
rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
once makes it more accurate and efficient, taking update_curr() as
reference.

Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
---
 kernel/sched/rt.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 4056c19..d6d2a65 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -950,12 +950,13 @@ static void update_curr_rt(struct rq *rq)
 {
 	struct task_struct *curr = rq->curr;
 	struct sched_rt_entity *rt_se = &curr->rt;
+	u64 now = rq_clock_task(rq);
 	u64 delta_exec;
 
 	if (curr->sched_class != &rt_sched_class)
 		return;
 
-	delta_exec = rq_clock_task(rq) - curr->se.exec_start;
+	delta_exec = now - curr->se.exec_start;
 	if (unlikely((s64)delta_exec <= 0))
 		return;
 
@@ -968,7 +969,7 @@ static void update_curr_rt(struct rq *rq)
 	curr->se.sum_exec_runtime += delta_exec;
 	account_group_exec_runtime(curr, delta_exec);
 
-	curr->se.exec_start = rq_clock_task(rq);
+	curr->se.exec_start = now;
 	cgroup_account_cputime(curr, delta_exec);
 
 	sched_rt_avg_update(rq, delta_exec);
-- 
1.9.1

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

* Re: [PATCH] sched/rt: Make update_curr_rt() more accurate
  2018-02-05  3:18 [PATCH] sched/rt: Make update_curr_rt() more accurate Wen Yang
@ 2018-02-05 10:30 ` Peter Zijlstra
  2018-02-05 10:31   ` Peter Zijlstra
  2018-02-05 10:57 ` Ingo Molnar
  2018-02-06 11:55 ` [tip:sched/urgent] " tip-bot for Wen Yang
  2 siblings, 1 reply; 6+ messages in thread
From: Peter Zijlstra @ 2018-02-05 10:30 UTC (permalink / raw)
  To: Wen Yang; +Cc: mingo, linux-kernel, jiang.biao2, zhong.weidong

On Mon, Feb 05, 2018 at 11:18:41AM +0800, Wen Yang wrote:
> rq->clock_task may be updated between the two calls of 
> rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
> once makes it more accurate and efficient, taking update_curr() as
> reference.
> 
> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>

Thanks!

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

* Re: [PATCH] sched/rt: Make update_curr_rt() more accurate
  2018-02-05 10:30 ` Peter Zijlstra
@ 2018-02-05 10:31   ` Peter Zijlstra
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Zijlstra @ 2018-02-05 10:31 UTC (permalink / raw)
  To: Wen Yang; +Cc: mingo, linux-kernel, jiang.biao2, zhong.weidong

On Mon, Feb 05, 2018 at 11:30:38AM +0100, Peter Zijlstra wrote:
> On Mon, Feb 05, 2018 at 11:18:41AM +0800, Wen Yang wrote:
> > rq->clock_task may be updated between the two calls of 
> > rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
> > once makes it more accurate and efficient, taking update_curr() as
> > reference.
> > 
> > Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> > Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
> 
> Thanks!

I just noticed update_curr_dl() has the exact same issue, could you also
do a patch for that?

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

* Re: [PATCH] sched/rt: Make update_curr_rt() more accurate
  2018-02-05  3:18 [PATCH] sched/rt: Make update_curr_rt() more accurate Wen Yang
  2018-02-05 10:30 ` Peter Zijlstra
@ 2018-02-05 10:57 ` Ingo Molnar
  2018-02-06 11:55 ` [tip:sched/urgent] " tip-bot for Wen Yang
  2 siblings, 0 replies; 6+ messages in thread
From: Ingo Molnar @ 2018-02-05 10:57 UTC (permalink / raw)
  To: Wen Yang; +Cc: mingo, peterz, linux-kernel, jiang.biao2, zhong.weidong


* Wen Yang <wen.yang99@zte.com.cn> wrote:

> rq->clock_task may be updated between the two calls of 
> rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
> once makes it more accurate and efficient, taking update_curr() as
> reference.
> 
> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
> ---
>  kernel/sched/rt.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index 4056c19..d6d2a65 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -950,12 +950,13 @@ static void update_curr_rt(struct rq *rq)
>  {
>  	struct task_struct *curr = rq->curr;
>  	struct sched_rt_entity *rt_se = &curr->rt;
> +	u64 now = rq_clock_task(rq);
>  	u64 delta_exec;
>  
>  	if (curr->sched_class != &rt_sched_class)
>  		return;
>  
> -	delta_exec = rq_clock_task(rq) - curr->se.exec_start;
> +	delta_exec = now - curr->se.exec_start;

Small nit: shouldn't we calculate 'now' after the return?

OTOH that 'return' should only be triggered statistically AFAICS, i.e. very 
rarely.

Thanks,

	Ingo

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

* [tip:sched/urgent] sched/rt: Make update_curr_rt() more accurate
  2018-02-05  3:18 [PATCH] sched/rt: Make update_curr_rt() more accurate Wen Yang
  2018-02-05 10:30 ` Peter Zijlstra
  2018-02-05 10:57 ` Ingo Molnar
@ 2018-02-06 11:55 ` tip-bot for Wen Yang
  2 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Wen Yang @ 2018-02-06 11:55 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: peterz, efault, tglx, mingo, linux-kernel, jiang.biao2, hpa,
	torvalds, wen.yang99

Commit-ID:  e7ad203166fff89b1d8253faf68fbe6966bf7181
Gitweb:     https://git.kernel.org/tip/e7ad203166fff89b1d8253faf68fbe6966bf7181
Author:     Wen Yang <wen.yang99@zte.com.cn>
AuthorDate: Mon, 5 Feb 2018 11:18:41 +0800
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 6 Feb 2018 10:20:34 +0100

sched/rt: Make update_curr_rt() more accurate

rq->clock_task may be updated between the two calls of
rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
once makes it more accurate and efficient, taking update_curr() as
reference.

Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: zhong.weidong@zte.com.cn
Link: http://lkml.kernel.org/r/1517800721-42092-1-git-send-email-wen.yang99@zte.com.cn
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/rt.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 89a086e..663b235 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -950,12 +950,13 @@ static void update_curr_rt(struct rq *rq)
 {
 	struct task_struct *curr = rq->curr;
 	struct sched_rt_entity *rt_se = &curr->rt;
+	u64 now = rq_clock_task(rq);
 	u64 delta_exec;
 
 	if (curr->sched_class != &rt_sched_class)
 		return;
 
-	delta_exec = rq_clock_task(rq) - curr->se.exec_start;
+	delta_exec = now - curr->se.exec_start;
 	if (unlikely((s64)delta_exec <= 0))
 		return;
 
@@ -968,7 +969,7 @@ static void update_curr_rt(struct rq *rq)
 	curr->se.sum_exec_runtime += delta_exec;
 	account_group_exec_runtime(curr, delta_exec);
 
-	curr->se.exec_start = rq_clock_task(rq);
+	curr->se.exec_start = now;
 	cgroup_account_cputime(curr, delta_exec);
 
 	sched_rt_avg_update(rq, delta_exec);

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

* [tip:sched/urgent] sched/rt: Make update_curr_rt() more accurate
  2018-02-06  1:53 [PATCH v2] " Wen Yang
@ 2018-02-13 11:28 ` tip-bot for Wen Yang
  0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Wen Yang @ 2018-02-13 11:28 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: jiang.biao2, hpa, wen.yang99, tglx, torvalds, peterz, mingo,
	linux-kernel

Commit-ID:  a7711602c7b79950ea437178f601b52ab08ef659
Gitweb:     https://git.kernel.org/tip/a7711602c7b79950ea437178f601b52ab08ef659
Author:     Wen Yang <wen.yang99@zte.com.cn>
AuthorDate: Tue, 6 Feb 2018 09:53:28 +0800
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 13 Feb 2018 11:44:41 +0100

sched/rt: Make update_curr_rt() more accurate

rq->clock_task may be updated between the two calls of
rq_clock_task() in update_curr_rt(). Calling rq_clock_task() only
once makes it more accurate and efficient, taking update_curr() as
reference.

Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: zhong.weidong@zte.com.cn
Link: http://lkml.kernel.org/r/1517882008-44552-1-git-send-email-wen.yang99@zte.com.cn
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/rt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 663b235..aad49451 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -950,12 +950,13 @@ static void update_curr_rt(struct rq *rq)
 {
 	struct task_struct *curr = rq->curr;
 	struct sched_rt_entity *rt_se = &curr->rt;
-	u64 now = rq_clock_task(rq);
 	u64 delta_exec;
+	u64 now;
 
 	if (curr->sched_class != &rt_sched_class)
 		return;
 
+	now = rq_clock_task(rq);
 	delta_exec = now - curr->se.exec_start;
 	if (unlikely((s64)delta_exec <= 0))
 		return;

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

end of thread, other threads:[~2018-02-13 11:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-05  3:18 [PATCH] sched/rt: Make update_curr_rt() more accurate Wen Yang
2018-02-05 10:30 ` Peter Zijlstra
2018-02-05 10:31   ` Peter Zijlstra
2018-02-05 10:57 ` Ingo Molnar
2018-02-06 11:55 ` [tip:sched/urgent] " tip-bot for Wen Yang
  -- strict thread matches above, loose matches on Subject: below --
2018-02-06  1:53 [PATCH v2] " Wen Yang
2018-02-13 11:28 ` [tip:sched/urgent] " tip-bot for Wen Yang

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.