From: "Doug Smythies" <dsmythies@telus.net>
To: 'Thomas Ilsche' <thomas.ilsche@tu-dresden.de>
Cc: "'Rafael J. Wysocki'" <rjw@rjwysocki.net>,
'Thomas Gleixner' <tglx@linutronix.de>,
'Paul McKenney' <paulmck@linux.vnet.ibm.com>,
'Rik van Riel' <riel@surriel.com>,
'Peter Zijlstra' <peterz@infradead.org>,
'Aubrey Li' <aubrey.li@linux.intel.com>,
'Mike Galbraith' <mgalbraith@suse.de>,
'Frederic Weisbecker' <fweisbec@gmail.com>,
'LKML' <linux-kernel@vger.kernel.org>,
'Linux PM' <linux-pm@vger.kernel.org>,
Doug Smythies <dsmythies@telus.net>
Subject: RE: [RFT][PATCH v5 7/7] cpuidle: menu: Avoid selecting shallow states with stopped tick
Date: Tue, 20 Mar 2018 10:15:02 -0700 [thread overview]
Message-ID: <002401d3c06e$fed035b0$fc70a110$@net> (raw)
In-Reply-To: xyzzeKNZFlebYxzQ2eVyR7
On 2018.03.20 11:22 Doug Smythies wrote:
> On 2018.03.19 05:47 Thomas Ilsche wrote:
>> On 2018-03-15 23:19, Rafael J. Wysocki wrote:
>>> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>>>
>>> If the scheduler tick has been stopped already and the governor
>>> selects a shallow idle state, the CPU can spend a long time in that
>>> state if the selection is based on an inaccurate prediction of idle
>>> time. That effect turns out to be noticeable, so it needs to be
>>> mitigated.
>>
>> What are some common causes for that situation?
>> How could I trigger this for testing?
>
> It appeared quite readily with my simple 100% load
> on one CPU test. Back then (V3) there only 6 patches in the set,
> and before the re-spin there ended up being a patch 7 of 6, which
> made a significant difference in both package power and the
> histograms of times in each idle state.
>
> Reference:
> https://marc.info/?l=linux-pm&m=152075419526696&w=2
I made a kernel (4.16-rc5) with only patches 1 to 6 of 7 (V6)
and also with the poll fix.
I took an old graph:
http://fast.smythies.com/rjwv3pp_100.png
and removed an obsolete line and added a line from this
kernel:
http://fast.smythies.com/rjwv6m_100.png
I also acquired a trace during the test and observe:
Report: Summary:
Idle State 0: Total Entries: 699 : PowerNightmares: 0 : Not PN time (seconds): 0.031169 : PN time: 0.000000 : Ratio: 0.000000
Idle State 1: Total Entries: 3855 : PowerNightmares: 106 : Not PN time (seconds): 0.123759 : PN time: 43.511914 : Ratio: 351.585856
Idle State 2: Total Entries: 3688 : PowerNightmares: 181 : Not PN time (seconds): 1.303237 : PN time: 63.241424 : Ratio: 48.526418
Idle State 3: Total Entries: 528 : PowerNightmares: 115 : Not PN time (seconds): 0.276290 : PN time: 44.764111 : Ratio: 162.018571
Where "PowerNightmare" is defined as spending excessive time in an idle state,
and arbitrarily defined for my processor as:
#define THRESHOLD_0 100 /* Idle state 0 PowerNightmare threshold in microseconds */
#define THRESHOLD_1 1000 /* Idle state 1 PowerNightmare threshold in microseconds */
#define THRESHOLD_2 2000 /* Idle state 2 PowerNightmare threshold in microseconds */
#define THRESHOLD_3 4000 /* Idle state 3 PowerNightmare threshold in microseconds */
While this trace file was only about 15 megabytes, I have several 10s of gigabytes of trace data for
V4 + poll fix and never see any excessive time spent in any idle state.
... Doug
next prev parent reply other threads:[~2018-03-20 17:15 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-15 21:59 [RFT][PATCH v5 0/7] sched/cpuidle: Idle loop rework Rafael J. Wysocki
2018-03-15 22:03 ` [RFT][PATCH v5 1/7] time: tick-sched: Reorganize idle tick management code Rafael J. Wysocki
2018-03-15 22:05 ` [RFT][PATCH v5 2/7] sched: idle: Do not stop the tick upfront in the idle loop Rafael J. Wysocki
2018-03-15 22:07 ` [RFT][PATCH v5 3/7] sched: idle: Do not stop the tick before cpuidle_idle_call() Rafael J. Wysocki
2018-03-15 22:11 ` [RFT][PATCH v5 4/7] cpuidle: Return nohz hint from cpuidle_select() Rafael J. Wysocki
2018-03-19 9:11 ` Peter Zijlstra
2018-03-19 9:39 ` Rafael J. Wysocki
2018-03-15 22:13 ` [RFT][PATCH v5 5/7] sched: idle: Select idle state before stopping the tick Rafael J. Wysocki
2018-03-15 22:16 ` [RFT][PATCH v5 6/7] cpuidle: menu: Refine idle state selection for running tick Rafael J. Wysocki
2018-03-19 9:45 ` Peter Zijlstra
2018-03-19 9:49 ` Rafael J. Wysocki
2018-03-15 22:19 ` [RFT][PATCH v5 7/7] cpuidle: menu: Avoid selecting shallow states with stopped tick Rafael J. Wysocki
2018-03-19 12:47 ` Thomas Ilsche
2018-03-19 18:21 ` Doug Smythies
2018-03-20 17:15 ` Doug Smythies [this message]
2018-03-20 17:28 ` Rafael J. Wysocki
2018-03-17 12:42 ` [RFT][PATCH v5 0/7] sched/cpuidle: Idle loop rework Thomas Ilsche
2018-03-17 16:11 ` Doug Smythies
2018-03-18 11:00 ` Rafael J. Wysocki
2018-03-18 16:15 ` Rafael J. Wysocki
2018-03-19 10:49 ` Peter Zijlstra
2018-03-19 11:36 ` Rafael J. Wysocki
2018-03-19 11:58 ` Rafael J. Wysocki
2018-03-19 12:31 ` Peter Zijlstra
2018-03-20 10:01 ` Thomas Ilsche
2018-03-20 10:49 ` Rafael J. Wysocki
2018-03-20 17:15 ` Doug Smythies
2018-03-20 21:03 ` Doug Smythies
2018-03-21 6:33 ` Rafael J. Wysocki
2018-03-21 13:51 ` Doug Smythies
2018-03-21 13:58 ` Rafael J. Wysocki
2018-03-18 15:30 ` Doug Smythies
2018-03-18 16:06 ` Rafael J. Wysocki
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='002401d3c06e$fed035b0$fc70a110$@net' \
--to=dsmythies@telus.net \
--cc=aubrey.li@linux.intel.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mgalbraith@suse.de \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@surriel.com \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=thomas.ilsche@tu-dresden.de \
/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).