All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE
@ 2018-03-13 10:35 Claudio Scordino
  2018-03-13 11:15 ` Viresh Kumar
  2018-03-23 21:51 ` [tip:sched/core] sched/cpufreq: Rate " tip-bot for Claudio Scordino
  0 siblings, 2 replies; 5+ messages in thread
From: Claudio Scordino @ 2018-03-13 10:35 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar
  Cc: Claudio Scordino, Rafael J . Wysocki, Viresh Kumar,
	Patrick Bellasi, Dietmar Eggemann, Morten Rasmussen, Juri Lelli,
	Vincent Guittot, Todd Kjos, Joel Fernandes, linux-pm,
	linux-kernel

When the SCHED_DEADLINE scheduling class increases the CPU utilization,
we should not wait for the rate limit, otherwise we may miss some
deadline.

Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
shown reductions of even 10% of deadline misses with a negligible
increase of energy consumption (measured through Baylibre Cape).

Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
CC: Viresh Kumar <viresh.kumar@linaro.org>
CC: Patrick Bellasi <patrick.bellasi@arm.com>
CC: Dietmar Eggemann <dietmar.eggemann@arm.com>
CC: Morten Rasmussen <morten.rasmussen@arm.com>
CC: Juri Lelli <juri.lelli@redhat.com>
CC: Vincent Guittot <vincent.guittot@linaro.org>
CC: Todd Kjos <tkjos@android.com>
CC: Joel Fernandes <joelaf@google.com>
CC: linux-pm@vger.kernel.org
CC: linux-kernel@vger.kernel.org
---
Changes from v3:
 - Specific routine renamed as ignore_dl_rate_limit()
---
Changes from v2:
 - Rate limit ignored also in case of "fast switch"
 - Specific routine added
---
Changes from v1:
 - Logic moved from sugov_should_update_freq() to
   sugov_update_single()/_shared() to not duplicate data structures
 - Rate limit not ignored in case of "fast switch"
---
 kernel/sched/cpufreq_schedutil.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index feb5f89..2aeb1ca 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -257,6 +257,16 @@ static bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu)
 static inline bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu) { return false; }
 #endif /* CONFIG_NO_HZ_COMMON */
 
+/*
+ * Make sugov_should_update_freq() ignore the rate limit when DL
+ * has increased the utilization.
+ */
+static inline void ignore_dl_rate_limit(struct sugov_cpu *sg_cpu, struct sugov_policy *sg_policy)
+{
+	if (cpu_util_dl(cpu_rq(sg_cpu->cpu)) > sg_cpu->util_dl)
+		sg_policy->need_freq_update = true;
+}
+
 static void sugov_update_single(struct update_util_data *hook, u64 time,
 				unsigned int flags)
 {
@@ -270,6 +280,8 @@ static void sugov_update_single(struct update_util_data *hook, u64 time,
 	sugov_set_iowait_boost(sg_cpu, time);
 	sg_cpu->last_update = time;
 
+	ignore_dl_rate_limit(sg_cpu, sg_policy);
+
 	if (!sugov_should_update_freq(sg_policy, time))
 		return;
 
@@ -351,6 +363,8 @@ sugov_update_shared(struct update_util_data *hook, u64 time, unsigned int flags)
 
 	raw_spin_lock(&sg_policy->update_lock);
 
+	ignore_dl_rate_limit(sg_cpu, sg_policy);
+
 	sugov_get_util(sg_cpu);
 	sg_cpu->flags = flags;
 
-- 
2.7.4

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

* Re: [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE
  2018-03-13 10:35 [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE Claudio Scordino
@ 2018-03-13 11:15 ` Viresh Kumar
  2018-03-14  1:27   ` Joel Fernandes
  2018-03-23 21:51 ` [tip:sched/core] sched/cpufreq: Rate " tip-bot for Claudio Scordino
  1 sibling, 1 reply; 5+ messages in thread
From: Viresh Kumar @ 2018-03-13 11:15 UTC (permalink / raw)
  To: Claudio Scordino
  Cc: Peter Zijlstra, Ingo Molnar, Rafael J . Wysocki, Patrick Bellasi,
	Dietmar Eggemann, Morten Rasmussen, Juri Lelli, Vincent Guittot,
	Todd Kjos, Joel Fernandes, linux-pm, linux-kernel

On 13-03-18, 11:35, Claudio Scordino wrote:
> When the SCHED_DEADLINE scheduling class increases the CPU utilization,
> we should not wait for the rate limit, otherwise we may miss some
> deadline.
> 
> Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
> shown reductions of even 10% of deadline misses with a negligible
> increase of energy consumption (measured through Baylibre Cape).
> 
> Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> CC: Viresh Kumar <viresh.kumar@linaro.org>
> CC: Patrick Bellasi <patrick.bellasi@arm.com>
> CC: Dietmar Eggemann <dietmar.eggemann@arm.com>
> CC: Morten Rasmussen <morten.rasmussen@arm.com>
> CC: Juri Lelli <juri.lelli@redhat.com>
> CC: Vincent Guittot <vincent.guittot@linaro.org>
> CC: Todd Kjos <tkjos@android.com>
> CC: Joel Fernandes <joelaf@google.com>
> CC: linux-pm@vger.kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
> Changes from v3:
>  - Specific routine renamed as ignore_dl_rate_limit()

LGTM. Thanks.

-- 
viresh

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

* Re: [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE
  2018-03-13 11:15 ` Viresh Kumar
@ 2018-03-14  1:27   ` Joel Fernandes
  2018-03-14 11:20     ` Rafael J. Wysocki
  0 siblings, 1 reply; 5+ messages in thread
From: Joel Fernandes @ 2018-03-14  1:27 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Claudio Scordino, Peter Zijlstra, Ingo Molnar,
	Rafael J . Wysocki, Patrick Bellasi, Dietmar Eggemann,
	Morten Rasmussen, Juri Lelli, Vincent Guittot, Todd Kjos,
	Linux PM, LKML

On Tue, Mar 13, 2018 at 4:15 AM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 13-03-18, 11:35, Claudio Scordino wrote:
>> When the SCHED_DEADLINE scheduling class increases the CPU utilization,
>> we should not wait for the rate limit, otherwise we may miss some
>> deadline.
>>
>> Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
>> shown reductions of even 10% of deadline misses with a negligible
>> increase of energy consumption (measured through Baylibre Cape).
>>
>> Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
>> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
>> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>> CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>> CC: Viresh Kumar <viresh.kumar@linaro.org>
>> CC: Patrick Bellasi <patrick.bellasi@arm.com>
>> CC: Dietmar Eggemann <dietmar.eggemann@arm.com>
>> CC: Morten Rasmussen <morten.rasmussen@arm.com>
>> CC: Juri Lelli <juri.lelli@redhat.com>
>> CC: Vincent Guittot <vincent.guittot@linaro.org>
>> CC: Todd Kjos <tkjos@android.com>
>> CC: Joel Fernandes <joelaf@google.com>
>> CC: linux-pm@vger.kernel.org
>> CC: linux-kernel@vger.kernel.org
>> ---
>> Changes from v3:
>>  - Specific routine renamed as ignore_dl_rate_limit()
>
> LGTM. Thanks.

Nice! Thanks.

- Joel

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

* Re: [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE
  2018-03-14  1:27   ` Joel Fernandes
@ 2018-03-14 11:20     ` Rafael J. Wysocki
  0 siblings, 0 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2018-03-14 11:20 UTC (permalink / raw)
  To: Joel Fernandes, Viresh Kumar, Claudio Scordino
  Cc: Peter Zijlstra, Ingo Molnar, Rafael J . Wysocki, Patrick Bellasi,
	Dietmar Eggemann, Morten Rasmussen, Juri Lelli, Vincent Guittot,
	Todd Kjos, Linux PM, LKML

On Wednesday, March 14, 2018 2:27:53 AM CET Joel Fernandes wrote:
> On Tue, Mar 13, 2018 at 4:15 AM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > On 13-03-18, 11:35, Claudio Scordino wrote:
> >> When the SCHED_DEADLINE scheduling class increases the CPU utilization,
> >> we should not wait for the rate limit, otherwise we may miss some
> >> deadline.
> >>
> >> Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
> >> shown reductions of even 10% of deadline misses with a negligible
> >> increase of energy consumption (measured through Baylibre Cape).
> >>
> >> Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
> >> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> >> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >> CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >> CC: Viresh Kumar <viresh.kumar@linaro.org>
> >> CC: Patrick Bellasi <patrick.bellasi@arm.com>
> >> CC: Dietmar Eggemann <dietmar.eggemann@arm.com>
> >> CC: Morten Rasmussen <morten.rasmussen@arm.com>
> >> CC: Juri Lelli <juri.lelli@redhat.com>
> >> CC: Vincent Guittot <vincent.guittot@linaro.org>
> >> CC: Todd Kjos <tkjos@android.com>
> >> CC: Joel Fernandes <joelaf@google.com>
> >> CC: linux-pm@vger.kernel.org
> >> CC: linux-kernel@vger.kernel.org
> >> ---
> >> Changes from v3:
> >>  - Specific routine renamed as ignore_dl_rate_limit()
> >
> > LGTM. Thanks.
> 
> Nice! Thanks.

OK, the patch doesn't seem to depend on anything in -tip, so I'm going to
apply it.

Thanks!

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

* [tip:sched/core] sched/cpufreq: Rate limits for SCHED_DEADLINE
  2018-03-13 10:35 [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE Claudio Scordino
  2018-03-13 11:15 ` Viresh Kumar
@ 2018-03-23 21:51 ` tip-bot for Claudio Scordino
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Claudio Scordino @ 2018-03-23 21:51 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, dietmar.eggemann, mingo, morten.rasmussen,
	patrick.bellasi, rafael.j.wysocki, vincent.guittot, peterz,
	claudio, joelaf, hpa, viresh.kumar, juri.lelli, tkjos, tglx

Commit-ID:  e97a90f7069b740575bcb1dae86596e0484b8957
Gitweb:     https://git.kernel.org/tip/e97a90f7069b740575bcb1dae86596e0484b8957
Author:     Claudio Scordino <claudio@evidence.eu.com>
AuthorDate: Tue, 13 Mar 2018 11:35:40 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 23 Mar 2018 22:48:22 +0100

sched/cpufreq: Rate limits for SCHED_DEADLINE

When the SCHED_DEADLINE scheduling class increases the CPU utilization, it
should not wait for the rate limit, otherwise it may miss some deadline.

Tests using rt-app on Exynos5422 with up to 10 SCHED_DEADLINE tasks have
shown reductions of even 10% of deadline misses with a negligible
increase of energy consumption (measured through Baylibre Cape).

Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Joel Fernandes <joelaf@google.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-pm@vger.kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Morten Rasmussen <morten.rasmussen@arm.com>
Cc: Patrick Bellasi <patrick.bellasi@arm.com>
Cc: Todd Kjos <tkjos@android.com>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://lkml.kernel.org/r/1520937340-2755-1-git-send-email-claudio@evidence.eu.com
---
 kernel/sched/cpufreq_schedutil.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 89fe78ecb88c..2b124811947d 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -267,6 +267,16 @@ static bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu)
 static inline bool sugov_cpu_is_busy(struct sugov_cpu *sg_cpu) { return false; }
 #endif /* CONFIG_NO_HZ_COMMON */
 
+/*
+ * Make sugov_should_update_freq() ignore the rate limit when DL
+ * has increased the utilization.
+ */
+static inline void ignore_dl_rate_limit(struct sugov_cpu *sg_cpu, struct sugov_policy *sg_policy)
+{
+	if (cpu_util_dl(cpu_rq(sg_cpu->cpu)) > sg_cpu->util_dl)
+		sg_policy->need_freq_update = true;
+}
+
 static void sugov_update_single(struct update_util_data *hook, u64 time,
 				unsigned int flags)
 {
@@ -279,6 +289,8 @@ static void sugov_update_single(struct update_util_data *hook, u64 time,
 	sugov_set_iowait_boost(sg_cpu, time, flags);
 	sg_cpu->last_update = time;
 
+	ignore_dl_rate_limit(sg_cpu, sg_policy);
+
 	if (!sugov_should_update_freq(sg_policy, time))
 		return;
 
@@ -356,6 +368,8 @@ sugov_update_shared(struct update_util_data *hook, u64 time, unsigned int flags)
 	sugov_set_iowait_boost(sg_cpu, time, flags);
 	sg_cpu->last_update = time;
 
+	ignore_dl_rate_limit(sg_cpu, sg_policy);
+
 	if (sugov_should_update_freq(sg_policy, time)) {
 		next_f = sugov_next_freq_shared(sg_cpu, time);
 		sugov_update_commit(sg_policy, time, next_f);

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

end of thread, other threads:[~2018-03-23 21:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-13 10:35 [PATCH v4] cpufreq: schedutil: rate limits for SCHED_DEADLINE Claudio Scordino
2018-03-13 11:15 ` Viresh Kumar
2018-03-14  1:27   ` Joel Fernandes
2018-03-14 11:20     ` Rafael J. Wysocki
2018-03-23 21:51 ` [tip:sched/core] sched/cpufreq: Rate " tip-bot for Claudio Scordino

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.