linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/3] cpufreq: avoid redundant driver calls in schedutil
@ 2016-07-13 20:25 Steve Muckle
  2016-07-13 20:25 ` [PATCH v3 1/3] cpufreq: add cpufreq_driver_resolve_freq() Steve Muckle
                   ` (4 more replies)
  0 siblings, 5 replies; 24+ messages in thread
From: Steve Muckle @ 2016-07-13 20:25 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Rafael J . Wysocki, Viresh Kumar
  Cc: linux-kernel, linux-pm, Vincent Guittot, Morten Rasmussen,
	Dietmar Eggemann, Juri Lelli, Patrick Bellasi, Steve Muckle

Invoking the cpufreq driver to set a frequency can be expensive. On platforms
with a cpufreq driver that does not support fast switching a thread must be
woken to complete the operation. IPIs will also occur if and when support to
process remote task wakeups is added in schedutil.

Currently schedutil calculates a raw frequency request from scheduler
utilization data. This raw frequency request does not correlate to supported
cpufreq driver frequencies aside from being capped by the CPU's maximum
frequency. Consequently, there may be many consecutive requests for different
raw frequency values which all translate to the same driver-supported
frequency. For example on a platform with 3 supported frequencies 200MHz,
400MHz, and 600MHz, raw requests for 257MHz, 389MHz, and 307MHz all map to a
driver-supported frequency of 400MHz in schedutil. Assuming these requests were
consecutive and there were no changes in policy limits (min/max), there is no
need to issue the second or third request.

In order to resolve a raw frequency request to a driver-supported one a new
cpufreq API is added, cpufreq_driver_resolve_freq(). This API relies on a new
cpufreq driver callback in the case of ->target() style drivers. Otherwise it
uses the existing frequency table operations.

Lookups are cached both in cpufreq_driver_resolve_freq() (for the benefit of the
driver) and in schedutil.

Changes since v2:
- incorporated feedback from Viresh to use resolve_freq driver callbacks
  only for ->target() style drivers, to use cpufreq's freq table operations,
  and move freq mapping caching into cpufreq policy
Changes since v1:
- incorporated feedback from Rafael to avoid referencing freq_table from
  schedutil by introducing a new cpufreq API

Steve Muckle (3):
  cpufreq: add cpufreq_driver_resolve_freq()
  cpufreq: schedutil: map raw required frequency to driver frequency
  cpufreq: acpi-cpufreq: use cached frequency mapping when possible

 drivers/cpufreq/acpi-cpufreq.c   |  5 ++++-
 drivers/cpufreq/cpufreq.c        | 25 +++++++++++++++++++++++++
 include/linux/cpufreq.h          | 16 ++++++++++++++++
 kernel/sched/cpufreq_schedutil.c | 31 +++++++++++++++++++++++--------
 4 files changed, 68 insertions(+), 9 deletions(-)

-- 
2.7.3

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

end of thread, other threads:[~2016-07-22 17:49 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-13 20:25 [PATCH v3 0/3] cpufreq: avoid redundant driver calls in schedutil Steve Muckle
2016-07-13 20:25 ` [PATCH v3 1/3] cpufreq: add cpufreq_driver_resolve_freq() Steve Muckle
2016-07-21 19:59   ` Viresh Kumar
2016-07-21 20:31     ` Rafael J. Wysocki
2016-07-21 20:30       ` Viresh Kumar
2016-07-21 20:52         ` Rafael J. Wysocki
2016-07-21 20:52           ` Viresh Kumar
2016-07-21 21:19             ` Rafael J. Wysocki
2016-07-21 21:16               ` Viresh Kumar
2016-07-21 23:21         ` Steve Muckle
2016-07-21 23:29           ` Steve Muckle
2016-07-21 23:31             ` Viresh Kumar
2016-07-21 23:30           ` Viresh Kumar
2016-07-21 23:36             ` Steve Muckle
2016-07-21 23:41               ` Steve Muckle
2016-07-22  0:44               ` Steve Muckle
2016-07-22 15:16                 ` Viresh Kumar
2016-07-22 17:49                   ` Steve Muckle
2016-07-21 21:13   ` Viresh Kumar
2016-07-13 20:25 ` [PATCH v3 2/3] cpufreq: schedutil: map raw required frequency to driver frequency Steve Muckle
2016-07-13 20:25 ` [PATCH v3 3/3] cpufreq: acpi-cpufreq: use cached frequency mapping when possible Steve Muckle
2016-07-14 10:02 ` [PATCH v3 0/3] cpufreq: avoid redundant driver calls in schedutil Pingbo Wen
2016-07-14 18:00   ` Steve Muckle
2016-07-21 20:01 ` Viresh Kumar

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).