From: "Doug Smythies" <dsmythies@telus.net>
To: "'Peter Zijlstra'" <peterz@infradead.org>
Cc: "'linux-kernel'" <linux-kernel@vger.kernel.org>,
"'Ingo Molnar'" <mingo@redhat.com>,
"'Dietmar Eggemann'" <dietmar.eggemann@arm.com>,
"'Juri Lelli'" <juri.lelli@redhat.com>,
"'Steven Rostedt'" <rostedt@goodmis.org>,
"'Mel Gorman'" <mgorman@suse.de>,
"'open list:THERMAL'" <linux-pm@vger.kernel.org>,
"'Linus Torvalds'" <torvalds@linux-foundation.org>,
"'Thomas Gleixner'" <tglx@linutronix.de>,
"'Sargun Dhillon'" <sargun@sargun.me>,
"'Tejun Heo'" <tj@kernel.org>,
"'Xie XiuQi'" <xiexiuqi@huawei.com>, <xiezhipeng1@huawei.com>,
"'Srinivas Pandruvada'" <srinivas.pandruvada@linux.intel.com>,
"'Vincent Guittot'" <vincent.guittot@linaro.org>
Subject: RE: [PATCH v4] sched/freq: move call to cpufreq_update_util
Date: Fri, 15 Nov 2019 07:30:47 -0800 [thread overview]
Message-ID: <000001d59bc9$aab4e010$001ea030$@net> (raw)
In-Reply-To: <20191115130144.GA4097@hirez.programming.kicks-ass.net>
Hi Peter,
On 2019.11.15 05:02 Peter Zijlstra wrote:
> On Fri, Nov 15, 2019 at 12:03:31PM +0100, Vincent Guittot wrote:
>
>> This patch does 2 things:
>> - fix the spurious call to cpufreq just before attaching a task
>
> Right, so that one doesn't concern me too much.
>
>> - make sure cpufreq is still called when cfs is 0 but not irq/rt or dl
>
> But per the rq->has_blocked_load logic we would mostly stop sending
> events once we reach all 0s.
>
> Now, most of those updates will be through _nohz_idle_balance() ->
> update_nohz_stats(), which are remote, which means intel_pstate is
> ignoring them anyway.
>
> Now the _nohz_idle_balance() -> update_blocked_averages() thing runs
> local, and that will update the one random idle CPU we picked to run
> nohz balance, but all others will be left where they were.
>
> So why does intel_pstate care... Esp. on SKL+ with per-core P state this
> is of dubious value.
>
> Also, and maybe I should go read back, why do we care what the P state
> is when we're mostly in C states anyway? These are all idle CPUs,
> otherwise we wouldkn't be running update_blocked_averages() on them
> anyway.
>
> Much confusion..
Background:
It is true that this is very likely a rare use case.
Apparently, I can make my test system considerably more "idle"
than most.
For many years now, I have never seen the time between calls,
per CPU, to the intel_pstate driver exceed 4 seconds.
Then as of:
sched/fair: Fix O(nr_cgroups) in load balance path
and for an idle system, the time between calls could
be as much as a few hundred seconds. Myself, and not
knowing much (anything) about scheduler details, I found
this odd, and so investigated.
And yes, so who cares if we are in deep C states anyhow?
If, for whatever reason, the system is running with
"intel_idle.max_cstate=1" my findings were that
the processor could end up consuming a lot more energy
for a long long time. Why? Because, at least for my
processor, and older i7-2600K (no HWP), in idle state 1, the
CPU does not relinquish its vote to the PLL, and with
no calls to the driver the requested p-state doesn't decay.
Not previously mentioned: The situation is considerably
exasperated by this piece of boost code within the intel_pstate
driver:
/*
* If the average P-state during the previous cycle was higher than the
* current target, add 50% of the difference to the target to reduce
* possible performance oscillations and offset possible performance
* loss related to moving the workload from one CPU to another within
* a package/module.
*/
avg_pstate = get_avg_pstate(cpu);
if (avg_pstate > target)
target += (avg_pstate - target) >> 1;
Hope this helps.
... Doug
next prev parent reply other threads:[~2019-11-15 15:30 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-14 17:07 [PATCH v4] sched/freq: move call to cpufreq_update_util Vincent Guittot
2019-11-15 9:54 ` Peter Zijlstra
2019-11-15 10:03 ` Rafael J. Wysocki
2019-11-15 10:40 ` Peter Zijlstra
2019-11-15 11:05 ` Vincent Guittot
2019-11-15 10:18 ` Vincent Guittot
2019-11-15 10:29 ` Vincent Guittot
2019-11-15 11:59 ` Vincent Guittot
2019-11-15 12:25 ` Vincent Guittot
2019-11-15 10:37 ` Peter Zijlstra
2019-11-15 10:46 ` Vincent Guittot
2019-11-15 10:51 ` Peter Zijlstra
2019-11-15 11:03 ` Vincent Guittot
2019-11-15 11:56 ` Peter Zijlstra
2019-11-15 13:01 ` Peter Zijlstra
2019-11-15 13:30 ` Vincent Guittot
2019-11-15 13:46 ` Peter Zijlstra
2019-11-15 15:30 ` Doug Smythies [this message]
2019-11-15 10:51 ` Rafael J. Wysocki
2019-11-15 12:17 ` Peter Zijlstra
2019-11-15 11:46 ` Rafael J. Wysocki
2019-11-15 13:25 ` Peter Zijlstra
2019-11-15 13:37 ` Vincent Guittot
2019-11-15 14:05 ` Peter Zijlstra
2019-11-15 14:12 ` Vincent Guittot
2019-11-15 15:12 ` Peter Zijlstra
2019-11-15 15:31 ` Vincent Guittot
2019-11-15 17:43 ` Peter Zijlstra
2019-11-15 18:00 ` Vincent Guittot
2019-11-15 20:12 ` Peter Zijlstra
2019-11-15 21:52 ` Peter Zijlstra
2019-11-16 8:47 ` Vincent Guittot
2019-11-16 15:07 ` Doug Smythies
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='000001d59bc9$aab4e010$001ea030$@net' \
--to=dsmythies@telus.net \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sargun@sargun.me \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=vincent.guittot@linaro.org \
--cc=xiexiuqi@huawei.com \
--cc=xiezhipeng1@huawei.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).