Thread (155 messages) 155 messages, 12 authors, 2016-03-18

Re: [PATCH 1/6] cpufreq: Reduce cpufreq_update_util() overhead a bit

From: Viresh Kumar <viresh.kumar@linaro.org>
Date: 2016-03-03 05:48:53
Also in: linux-acpi, lkml

On 02-03-16, 03:04, Rafael J. Wysocki wrote:
From: Rafael J. Wysocki <redacted>

Use the observation that cpufreq_update_util() is only called
by the scheduler with rq->lock held, so the callers of
cpufreq_set_update_util_data() can use synchronize_sched()
instead of synchronize_rcu() to wait for cpufreq_update_util()
to complete.  Moreover, if they are updated to do that,
rcu_read_(un)lock() calls in cpufreq_update_util() might be
replaced with rcu_read_(un)lock_sched(), respectively, but
those aren't really necessary, because the scheduler calls
that function from RCU-sched read-side critical sections
already.

In addition to that, if cpufreq_set_update_util_data() checks
the func field in the struct update_util_data before setting
the per-CPU pointer to it, the data->func check may be dropped
from cpufreq_update_util() as well.

Make the above changes to reduce the overhead from
cpufreq_update_util() in the scheduler paths invoking it
and to make the cleanup after removing its callbacks less
heavy-weight somewhat.

Signed-off-by: Rafael J. Wysocki <redacted>
---

Supersedes https://patchwork.kernel.org/patch/8443191/
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help