cpuidle: Default to ladder governor on ticking systems
authorJean Delvare <jdelvare@suse.de>
Mon, 11 Jan 2016 16:41:53 +0000 (17:41 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 15 Jan 2016 21:36:19 +0000 (22:36 +0100)
The menu governor is currently the default on all systems. However the
documentation claims that the ladder governor is preferred on ticking
systems. So bump the rating of the ladder governor when NO_HZ is
disabled, or when booting with nohz=off.

This fixes the first half of kernel BZ #65531.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=65531
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/governors/ladder.c

index 401c0106ed345eda469a590aa345f88d8ff59eca..63bd5a403e22f1a5e30cb633998368c60a1b384c 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/pm_qos.h>
 #include <linux/module.h>
 #include <linux/jiffies.h>
+#include <linux/tick.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -184,6 +185,14 @@ static struct cpuidle_governor ladder_governor = {
  */
 static int __init init_ladder(void)
 {
+       /*
+        * When NO_HZ is disabled, or when booting with nohz=off, the ladder
+        * governor is better so give it a higher rating than the menu
+        * governor.
+        */
+       if (!tick_nohz_enabled)
+               ladder_governor.rating = 25;
+
        return cpuidle_register_governor(&ladder_governor);
 }