diff options
author | Siddha, Suresh B <suresh.b.siddha@intel.com> | 2006-06-27 05:54:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-27 20:32:45 -0400 |
commit | 5c45bf279d378d436ce45825c0f136696c7b6109 (patch) | |
tree | 80e2fcf4866b84fccb787562e1a83b16f4bc8850 /include/linux | |
parent | 369381694ddcf03f1de403501c8b97099b5109ec (diff) |
[PATCH] sched: mc/smt power savings sched policy
sysfs entries 'sched_mc_power_savings' and 'sched_smt_power_savings' in
/sys/devices/system/cpu/ control the MC/SMT power savings policy for the
scheduler.
Based on the values (1-enable, 0-disable) for these controls, sched groups
cpu power will be determined for different domains. When power savings
policy is enabled and under light load conditions, scheduler will minimize
the physical packages/cpu cores carrying the load and thus conserving
power(with a perf impact based on the workload characteristics... see OLS
2005 CMP kernel scheduler paper for more details..)
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Con Kolivas <kernel@kolivas.org>
Cc: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/sched.h | 10 | ||||
-rw-r--r-- | include/linux/topology.h | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index ab8ffc54423a..0bc81a151e50 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -570,6 +570,11 @@ enum idle_type | |||
570 | #define SD_WAKE_AFFINE 32 /* Wake task to waking CPU */ | 570 | #define SD_WAKE_AFFINE 32 /* Wake task to waking CPU */ |
571 | #define SD_WAKE_BALANCE 64 /* Perform balancing at task wakeup */ | 571 | #define SD_WAKE_BALANCE 64 /* Perform balancing at task wakeup */ |
572 | #define SD_SHARE_CPUPOWER 128 /* Domain members share cpu power */ | 572 | #define SD_SHARE_CPUPOWER 128 /* Domain members share cpu power */ |
573 | #define SD_POWERSAVINGS_BALANCE 256 /* Balance for power savings */ | ||
574 | |||
575 | #define BALANCE_FOR_POWER ((sched_mc_power_savings || sched_smt_power_savings) \ | ||
576 | ? SD_POWERSAVINGS_BALANCE : 0) | ||
577 | |||
573 | 578 | ||
574 | struct sched_group { | 579 | struct sched_group { |
575 | struct sched_group *next; /* Must be a circular list */ | 580 | struct sched_group *next; /* Must be a circular list */ |
@@ -1412,6 +1417,11 @@ static inline void arch_pick_mmap_layout(struct mm_struct *mm) | |||
1412 | extern long sched_setaffinity(pid_t pid, cpumask_t new_mask); | 1417 | extern long sched_setaffinity(pid_t pid, cpumask_t new_mask); |
1413 | extern long sched_getaffinity(pid_t pid, cpumask_t *mask); | 1418 | extern long sched_getaffinity(pid_t pid, cpumask_t *mask); |
1414 | 1419 | ||
1420 | #include <linux/sysdev.h> | ||
1421 | extern int sched_mc_power_savings, sched_smt_power_savings; | ||
1422 | extern struct sysdev_attribute attr_sched_mc_power_savings, attr_sched_smt_power_savings; | ||
1423 | extern int sched_create_sysfs_power_savings_entries(struct sysdev_class *cls); | ||
1424 | |||
1415 | extern void normalize_rt_tasks(void); | 1425 | extern void normalize_rt_tasks(void); |
1416 | 1426 | ||
1417 | #ifdef CONFIG_PM | 1427 | #ifdef CONFIG_PM |
diff --git a/include/linux/topology.h b/include/linux/topology.h index a305ae2e44b6..ec1eca85290a 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -134,7 +134,8 @@ | |||
134 | .flags = SD_LOAD_BALANCE \ | 134 | .flags = SD_LOAD_BALANCE \ |
135 | | SD_BALANCE_NEWIDLE \ | 135 | | SD_BALANCE_NEWIDLE \ |
136 | | SD_BALANCE_EXEC \ | 136 | | SD_BALANCE_EXEC \ |
137 | | SD_WAKE_AFFINE, \ | 137 | | SD_WAKE_AFFINE \ |
138 | | BALANCE_FOR_POWER, \ | ||
138 | .last_balance = jiffies, \ | 139 | .last_balance = jiffies, \ |
139 | .balance_interval = 1, \ | 140 | .balance_interval = 1, \ |
140 | .nr_balance_failed = 0, \ | 141 | .nr_balance_failed = 0, \ |