From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Suresh B Siddha <suresh.b.siddha@intel.com>,
Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Ingo Molnar <mingo@elte.hu>, Gautham R Shenoy <ego@in.ibm.com>,
Arun Bharadwaj <arun@linux.vnet.ibm.com>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: BUG: sched_mc_powersavings broken on pre-Nehalem x86 platforms
Date: Mon, 8 Feb 2010 15:35:55 +0530 [thread overview]
Message-ID: <20100208100555.GD2931@dirshya.in.ibm.com> (raw)
Hi Peter,
sched_mc_powersavings is broken in pre-Nehalem x86 platforms due to
contradictory SD flags at MC level and CPU level. SD_PREFER_SIBLING being set
at MC level is expected to do the following:
a) Disable consolidating tasks to single group in the parent sched domain
(generally single cpu package)
b) Spread tasks equally across groups at the parent sched domain.
While SD_POWERSAVINGS_BALANCE set at a sched domain will enable logic to
consolidate tasks within minimum number of groups at that sched domain.
Basically SD_POWERSAVINGS_BALANCE at one sched domain and its child domain
having SD_PREFER_SIBLING is contradicting and disabling the
SD_POWERSAVINGS_BALANCE logic in
if (local_group && (sds->this_nr_running >= sgs->group_capacity ||
!sds->this_nr_running))
sds->power_savings_balance = 0;
Since sgs.group_capacity is set to '1' by SD_PREFER_SIBLING in child
sched domain.
The attached patch will fix the expected behavior for sched_mc_powersavings > 0
while objective (b) is still an open issue.
The following condition in find_busiest_group()
sds.max_load <= sds.busiest_load_per_task
treats unequally loaded groups as balanced as longs they are below
capacity
Test Results:
The following patch was tested on dual socket quad core non-threaded Xeon:
Running 4 while(1) loops in shell:
echo 1 > /sys/devices/system/cpu/sched_mc_powersavings
Without Patch:
Running 1 task in one quad core package and 3 in another.
This is effectively the baseline behavior with sched_mc=0
With patch:
All 4 tasks running in one quad core package.
Expected behavior for sched_mc_powersavings>0
--Vaidy
Fix for sched_mc_powersavigs for pre-Nehalem platforms.
Child sched domain should clear SD_PREFER_SIBLING if parent will have
SD_POWERSAVINGS_BALANCE because they are contradicting.
Sets the flags correctly based on sched_mc_power_savings.
Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 6550415..ef6b7cd 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -866,7 +866,10 @@ static inline int sd_balance_for_mc_power(void)
if (sched_smt_power_savings)
return SD_POWERSAVINGS_BALANCE;
- return SD_PREFER_SIBLING;
+ if (!sched_mc_power_savings)
+ return SD_PREFER_SIBLING;
+
+ return 0;
}
static inline int sd_balance_for_package_power(void)
next reply other threads:[~2010-02-08 10:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-08 10:05 Vaidyanathan Srinivasan [this message]
2010-02-08 11:35 ` BUG: sched_mc_powersavings broken on pre-Nehalem x86 platforms Peter Zijlstra
2010-02-08 12:46 ` Vaidyanathan Srinivasan
2010-02-16 14:15 ` [tip:sched/urgent] sched: Fix sched_mv_power_savings for !SMT tip-bot for Vaidyanathan Srinivasan
2010-02-16 16:01 ` Vaidyanathan Srinivasan
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=20100208100555.GD2931@dirshya.in.ibm.com \
--to=svaidy@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=arun@linux.vnet.ibm.com \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=suresh.b.siddha@intel.com \
--cc=venkatesh.pallipadi@intel.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.