* [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.