Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1261937

[PATCH 2/3] cpuidle,menu: use interactivity_req to disable polling

From riel@redhat.com
Newsgroups linux.kernel
Subject [PATCH 2/3] cpuidle,menu: use interactivity_req to disable polling
Date 2015-11-03 23:40 +0100
Message-ID <qqSpd-nO-31@gated-at.bofh.it> (permalink)
References <qqSpc-nO-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Rik van Riel <riel@redhat.com>

The menu governor carefully figures out how much time we typically
sleep for an estimated sleep interval, or whether there is a repeating
pattern going on, and corrects that estimate for the CPU load.

Then it proceeds to ignore that information when determining whether
or not to consider polling. This is not a big deal on most x86 CPUs,
which have very low C1 latencies, and the patch should not have any
effect on those CPUs.

However, certain CPUs (eg. Atom) have much higher C1 latencies, and
it would be good to not waste performance and power on those CPUs if
we are expecting a very low wakeup latency.

Disable polling based on the estimated interactivity requirement, not
on the time to the next timer interrupt.

Signed-off-by: Rik van Riel <riel@redhat.com>
---
 drivers/cpuidle/governors/menu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
index ecc242a586c9..b1a55731f921 100644
--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -330,7 +330,7 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
 	 * We want to default to C1 (hlt), not to busy polling
 	 * unless the timer is happening really really soon.
 	 */
-	if (data->next_timer_us > 20 &&
+	if (interactivity_req > 20 &&
 	    !drv->states[CPUIDLE_DRIVER_STATE_START].disabled &&
 		dev->states_usage[CPUIDLE_DRIVER_STATE_START].disable == 0)
 		data->last_state_idx = CPUIDLE_DRIVER_STATE_START;
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/3] cpuidle: small improvements & fixes for menu governor (resend) riel@redhat.com - 2015-11-03 23:40 +0100
  [PATCH 3/3] cpuidle,menu: smooth out measured_us calculation riel@redhat.com - 2015-11-03 23:40 +0100
    Re: [PATCH 3/3] cpuidle,menu: smooth out measured_us calculation Arjan van de Ven <arjan@linux.intel.com> - 2015-11-04 17:10 +0100
  [PATCH 2/3] cpuidle,menu: use interactivity_req to disable polling riel@redhat.com - 2015-11-03 23:40 +0100
    Re: [PATCH 2/3] cpuidle,menu: use interactivity_req to disable  polling Arjan van de Ven <arjan@linux.intel.com> - 2015-11-04 17:10 +0100
  Re: [PATCH 0/3] cpuidle: small improvements & fixes for menu governor (resend) "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-11-05 23:10 +0100
    Re: [PATCH 0/3] cpuidle: small improvements & fixes for menu governor  (resend) Rik van Riel <riel@redhat.com> - 2015-11-06 03:30 +0100

csiph-web