Messages in this thread Patch in this message |  | | From | Gautham R Shenoy <> | | Subject | [PATCH 2 1/3] sched: code cleanup - sd_power_saving_flags(), sd_balance_for_mc/package_power() | | Date | Tue, 03 Mar 2009 17:21:44 +0530 |
| |
This is a code cleanup patch which combines the functions of sd_balance_for_mc/package_power() and sd_power_saving_flags() into a single function.
Signed-off-by: Gautham R Shenoy <ego@in.ibm.com> Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> ---
include/linux/sched.h | 65 +++++++++++++++++++++++----------------------- include/linux/topology.h | 6 +--- 2 files changed, 35 insertions(+), 36 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h index 02e16d2..362807a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -777,34 +777,45 @@ enum powersavings_balance_level { extern int sched_mc_power_savings, sched_smt_power_savings; -static inline int sd_balance_for_mc_power(void) -{ - if (sched_smt_power_savings) - return SD_POWERSAVINGS_BALANCE; - - return 0; -} - -static inline int sd_balance_for_package_power(void) -{ - if (sched_mc_power_savings | sched_smt_power_savings) - return SD_POWERSAVINGS_BALANCE; +enum sched_domain_level { + SD_LV_NONE = 0, + SD_LV_SIBLING, /* Represents the THREADS domain */ + SD_LV_MC, /* Represents the CORES domain */ + SD_LV_CPU, /* Represents the PACKAGE domain */ + SD_LV_NODE, /* Represents the NODES domain */ + SD_LV_ALLNODES, + SD_LV_MAX +}; - return 0; -} -/* - * Optimise SD flags for power savings: - * SD_BALANCE_NEWIDLE helps agressive task consolidation and power savings. - * Keep default SD flags if sched_{smt,mc}_power_saving=0 +/** + * sd_power_savings_flags: Returns the flags specific to power-aware-load + * balancing for a given sched_domain level + * + * @level: The sched_domain level for which the the power-aware-load balancing + * flags need to be set. + * + * This function helps in setting the flags for power-aware load balancing for + * a given sched_domain. + * - SD_POWERSAVINGS_BALANCE tells the load-balancer that power-aware + * load balancing is applicable at this domain. + * + * - SD_BALANCE_NEWIDLE helps aggressive task consolidation and + * power-savings. + * + * For more information on power aware scheduling, see the comment before + * find_busiest_group() in kernel/sched.c */ -static inline int sd_power_saving_flags(void) +static inline int sd_power_saving_flags(enum sched_domain_level level) { - if (sched_mc_power_savings | sched_smt_power_savings) - return SD_BALANCE_NEWIDLE; + if (level == SD_LV_MC && !sched_smt_power_savings) + return 0; + if (level == SD_LV_CPU && + !(sched_mc_power_savings || sched_smt_power_savings)) + return 0; - return 0; + return SD_POWERSAVINGS_BALANCE | SD_BALANCE_NEWIDLE; } struct sched_group { @@ -830,16 +841,6 @@ static inline struct cpumask *sched_group_cpus(struct sched_group *sg) return to_cpumask(sg->cpumask); } -enum sched_domain_level { - SD_LV_NONE = 0, - SD_LV_SIBLING, - SD_LV_MC, - SD_LV_CPU, - SD_LV_NODE, - SD_LV_ALLNODES, - SD_LV_MAX -}; - struct sched_domain_attr { int relax_domain_level; }; diff --git a/include/linux/topology.h b/include/linux/topology.h index e632d29..8097dce 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h @@ -125,8 +125,7 @@ int arch_update_cpu_topology(void); | SD_WAKE_AFFINE \ | SD_WAKE_BALANCE \ | SD_SHARE_PKG_RESOURCES\ - | sd_balance_for_mc_power()\ - | sd_power_saving_flags(),\ + | sd_power_saving_flags(SD_LV_MC),\ .last_balance = jiffies, \ .balance_interval = 1, \ } @@ -151,8 +150,7 @@ int arch_update_cpu_topology(void); | SD_BALANCE_FORK \ | SD_WAKE_AFFINE \ | SD_WAKE_BALANCE \ - | sd_balance_for_package_power()\ - | sd_power_saving_flags(),\ + | sd_power_saving_flags(SD_LV_CPU),\ .last_balance = jiffies, \ .balance_interval = 1, \ }
|  |