From: douglas.raillard@arm.com
To: linux-kernel@vger.kernel.org
Cc: linux-pm@vger.kernel.org, mingo@redhat.com, peterz@infradead.org,
quentin.perret@arm.com, douglas.raillard@arm.com,
patrick.bellasi@arm.com, dietmar.eggemann@arm.com
Subject: [RFC PATCH 5/7] sched/cpufreq: sugov_cpu_is_busy for shared policy
Date: Wed, 8 May 2019 18:42:59 +0100 [thread overview]
Message-ID: <20190508174301.4828-6-douglas.raillard@arm.com> (raw)
Message-ID: <20190508174259.KZnAeXZBA6BW-P-JqzzuWcIi1-IlKDrTAlOlSPhYynQ@z> (raw)
In-Reply-To: <20190508174301.4828-1-douglas.raillard@arm.com>
From: Douglas RAILLARD <douglas.raillard@arm.com>
Allow using sugov_cpu_is_busy() from sugov_update_shared(). This means
that the heuristic needs to return stable results across multiple calls
for a given CPU, even if there has been no utilization change since last
call.
sugov_cpu_is_busy() currently both checks business status and updates
the counters, so let's decouple the two actions.
Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
---
kernel/sched/cpufreq_schedutil.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index a52c66559321..a12b7e5bc028 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -178,12 +178,17 @@ static bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu)
{
unsigned long idle_calls = tick_nohz_get_idle_calls_cpu(sg_cpu->cpu);
bool ret = idle_calls == sg_cpu->saved_idle_calls;
+ return ret;
+}
+static void sugov_cpu_is_busy_update(struct sugov_cpu *sg_cpu)
+{
+ unsigned long idle_calls = tick_nohz_get_idle_calls_cpu(sg_cpu->cpu);
sg_cpu->saved_idle_calls = idle_calls;
- return ret;
}
#else
static inline bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu) { return false; }
+static void sugov_cpu_is_busy_update(struct sugov_cpu *sg_cpu) {}
#endif /* CONFIG_NO_HZ_COMMON */
/**
@@ -503,6 +508,7 @@ static void sugov_update_single(struct update_util_data *hook, u64 time,
return;
busy = sugov_cpu_is_busy(sg_cpu);
+ sugov_cpu_is_busy_update(sg_cpu);
util = sugov_get_util(sg_cpu);
max = sg_cpu->max;
--
2.21.0
next prev parent reply other threads:[~2019-05-08 17:43 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-08 17:42 [RFC PATCH 0/7] sched/cpufreq: Make schedutil energy aware douglas.raillard
2019-05-08 17:42 ` douglas.raillard
2019-05-08 17:42 ` [RFC PATCH 1/7] PM: Introduce em_pd_get_higher_freq() douglas.raillard
2019-05-08 17:42 ` douglas.raillard
2019-05-16 12:42 ` Patrick Bellasi
2019-05-16 12:42 ` Patrick Bellasi
2019-05-16 13:01 ` Quentin Perret
2019-05-16 13:01 ` Quentin Perret
2019-05-16 13:22 ` Patrick Bellasi
2019-05-16 13:22 ` Patrick Bellasi
2019-06-19 16:08 ` Douglas Raillard
2019-06-20 13:04 ` Patrick Bellasi
2019-06-21 10:17 ` Quentin Perret
2019-06-21 10:22 ` Quentin Perret
2019-05-16 13:06 ` Douglas Raillard
2019-05-16 13:06 ` Douglas Raillard
2019-05-08 17:42 ` [RFC PATCH 2/7] sched/cpufreq: Attach perf domain to sugov policy douglas.raillard
2019-05-08 17:42 ` douglas.raillard
2019-05-08 17:42 ` [RFC PATCH 3/7] sched/cpufreq: Hook em_pd_get_higher_power() into get_next_freq() douglas.raillard
2019-05-08 17:42 ` douglas.raillard
2019-05-08 17:42 ` [RFC PATCH 4/7] sched/cpufreq: Move up sugov_cpu_is_busy() douglas.raillard
2019-05-08 17:42 ` douglas.raillard
2019-05-08 17:42 ` douglas.raillard [this message]
2019-05-08 17:42 ` [RFC PATCH 5/7] sched/cpufreq: sugov_cpu_is_busy for shared policy douglas.raillard
2019-05-08 17:43 ` [RFC PATCH 6/7] sched/cpufreq: Improve sugov_cpu_is_busy accuracy douglas.raillard
2019-05-08 17:43 ` douglas.raillard
2019-05-16 12:55 ` Patrick Bellasi
2019-05-16 12:55 ` Patrick Bellasi
2019-06-19 16:19 ` Douglas Raillard
2019-06-20 11:05 ` Patrick Bellasi
2019-05-08 17:43 ` [RFC PATCH 7/7] sched/cpufreq: Boost schedutil frequency ramp up douglas.raillard
2019-05-08 17:43 ` douglas.raillard
2019-05-13 7:12 ` [RFC PATCH 0/7] sched/cpufreq: Make schedutil energy aware Viresh Kumar
2019-05-13 7:12 ` Viresh Kumar
2019-05-13 13:52 ` Douglas Raillard
2019-05-13 13:52 ` Douglas Raillard
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=20190508174301.4828-6-douglas.raillard@arm.com \
--to=douglas.raillard@arm.com \
--cc=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=patrick.bellasi@arm.com \
--cc=peterz@infradead.org \
--cc=quentin.perret@arm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).