All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Bellasi <patrick.bellasi@arm.com>
To: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Cc: Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Morten Rasmussen <morten.rasmussen@arm.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Joel Fernandes <joelaf@google.com>,
	Steve Muckle <smuckle@google.com>
Subject: [PATCH 2/3] sched/fair: util_est: update before schedutil
Date: Thu, 10 May 2018 16:05:52 +0100	[thread overview]
Message-ID: <20180510150553.28122-3-patrick.bellasi@arm.com> (raw)
In-Reply-To: <20180510150553.28122-1-patrick.bellasi@arm.com>

When a task is enqueue the estimated utilization of a CPU is updated
to better support the selection of the required frequency.
However, schedutil is (implicitly) updated by update_load_avg() which
always happens before util_est_{en,de}queue(), thus potentially
introducing a latency between estimated utilization updates and
frequency selections.

Let's update util_est at the beginning of enqueue_task_fair(),
which will ensure that all schedutil updates will see the most
updated estimated utilization value for a CPU.

Reported-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Patrick Bellasi <patrick.bellasi@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-kernel@vger.kernel.org
Cc: linux-pm@vger.kernel.org
---
 kernel/sched/fair.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 1f6a23a5b451..01dfc47541e6 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5356,6 +5356,9 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
 	struct cfs_rq *cfs_rq;
 	struct sched_entity *se = &p->se;
 
+	/* Estimated utilization must be updated before schedutil */
+	util_est_enqueue(&rq->cfs, p);
+
 	/*
 	 * If in_iowait is set, the code below may not trigger any cpufreq
 	 * utilization updates, so do it here explicitly with the IOWAIT flag
@@ -5397,7 +5400,6 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
 	if (!se)
 		add_nr_running(rq, 1);
 
-	util_est_enqueue(&rq->cfs, p);
 	hrtick_update(rq);
 }
 
-- 
2.15.1

  parent reply	other threads:[~2018-05-10 15:06 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-10 15:05 [PATCH 0/3] Improve schedutil integration for FAIR tasks Patrick Bellasi
2018-05-10 15:05 ` [PATCH 1/3] sched/cpufreq: always consider blocked FAIR utilization Patrick Bellasi
2018-05-11  5:44   ` Viresh Kumar
2018-05-11  9:12     ` Patrick Bellasi
2018-05-14  9:18       ` Vincent Guittot
2018-05-14 16:33         ` Patrick Bellasi
2018-05-10 15:05 ` Patrick Bellasi [this message]
2018-05-10 15:34   ` [PATCH 2/3] sched/fair: util_est: update before schedutil Peter Zijlstra
2018-05-11  5:44   ` Viresh Kumar
2018-05-11  8:41     ` Patrick Bellasi
2018-05-10 15:05 ` [PATCH 3/3] sched/fair: schedutil: explicit update only when required Patrick Bellasi
2018-05-10 16:15   ` Peter Zijlstra
2018-05-10 16:54     ` Patrick Bellasi
2018-05-11  5:43   ` Viresh Kumar
2018-05-11  8:42     ` Patrick Bellasi
2018-05-13  6:04   ` Joel Fernandes
2018-05-13  6:25     ` Joel Fernandes
2018-05-14 16:32       ` Patrick Bellasi
2018-05-15 10:19         ` Vincent Guittot
2018-05-15 14:53           ` Patrick Bellasi
2018-05-15 16:53             ` Peter Zijlstra
2018-05-15 17:25               ` Patrick Bellasi
2018-05-16  7:13               ` Vincent Guittot
2018-05-16  7:12             ` Vincent Guittot
2018-05-16 10:45               ` Patrick Bellasi
2018-05-17 15:17         ` Joel Fernandes
2018-05-24 13:42           ` Patrick Bellasi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180510150553.28122-3-patrick.bellasi@arm.com \
    --to=patrick.bellasi@arm.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=joelaf@google.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=morten.rasmussen@arm.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=smuckle@google.com \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.