[PATCH][SAUCY] Fix power and performance regression (LP: #1233681)

Colin King colin.king at canonical.com
Tue Oct 1 13:45:10 UTC 2013


From: Colin Ian King <colin.king at canonical.com>

Heavy context switching is consuming a lot of extra power with the
current saucy kernel. Context switching intensive tasks are consuming
much longer to complete than on 3.8 raring kernels, for example:

dd if=/dev/zero | cat | cat | dd of=/dev/null

See http://reports.qa.ubuntu.com/power/hardware/arch/amd64/

The reason is that CONFIG_CONTEXT_TRACKING_FORCE is turned on
because CONFIG_NO_HZ_FULL is enabled and the former config option adds
a lot of overhead to context switching.

For a comparison of the current (bad) config vs the fixed config, see
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1233681/+attachment/3853414/+files/pm-config-fixes.ods

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 debian.master/config/config.common.ubuntu |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu
index 1c14ee5..fbdbb1e 100644
--- a/debian.master/config/config.common.ubuntu
+++ b/debian.master/config/config.common.ubuntu
@@ -1095,7 +1095,7 @@ CONFIG_CONSOLE_POLL=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_CONTEXT_SWITCH_TRACER=y
 CONFIG_CONTEXT_TRACKING=y
-CONFIG_CONTEXT_TRACKING_FORCE=y
+# CONFIG_CONTEXT_TRACKING_FORCE is not set
 CONFIG_COPS=m
 CONFIG_COPS_DAYNA=y
 CONFIG_COPS_TANGENT=y
@@ -2153,7 +2153,7 @@ CONFIG_HAVE_CLK=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_HAVE_CMPXCHG_DOUBLE=y
 CONFIG_HAVE_CMPXCHG_LOCAL=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
+#CONFIG_HAVE_CONTEXT_TRACKING is not set
 CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_HAVE_DEBUG_KMEMLEAK=y
 CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
@@ -4198,7 +4198,8 @@ CONFIG_NOZOMI=m
 CONFIG_NO_BOOTMEM=y
 CONFIG_NO_HZ=y
 CONFIG_NO_HZ_COMMON=y
-CONFIG_NO_HZ_FULL=y
+# CONFIG_NO_HZ_FULL is not set
+CONFIG_NO_HZ_IDLE=y
 # CONFIG_NO_HZ_FULL_ALL is not set
 CONFIG_NO_IOPORT=y
 CONFIG_NS83820=m
@@ -4691,6 +4692,8 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_FANOUT_EXACT is not set
 CONFIG_RCU_FANOUT_LEAF=16
 CONFIG_RCU_FAST_NO_HZ=y
+# CONFIG_RCU_NOCB_CPU_NONE is not set
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
 CONFIG_RCU_NOCB_CPU_ALL=y
 CONFIG_RCU_STALL_COMMON=y
 # CONFIG_RCU_TORTURE_TEST is not set
-- 
1.7.9.5





More information about the kernel-team mailing list