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