scheduler fixes
Linus,
Please pull the latest sched-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git sched-urgent-for-linus
Thanks,
Ingo
------------------>
Mike Galbraith (1):
sched, cgroups: Fix MIN_SHARES on 64-bit boxen
Peter Zijlstra (1):
sched: Disable (revert) SCHED_LOAD_SCALE increase
include/linux/sched.h | 2 +- kernel/sched.c | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-)
include/linux/sched.h +1 -1
@@ -808,7 +808,7 @@ enum cpu_idle_type {* when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the * increased costs. */ -#if BITS_PER_LONG >32 +#if 0 /* BITS_PER_LONG > 32 -- currently broken: it increases power usage under light load */ # define SCHED_LOAD_RESOLUTION 10# define scale_load (w) ((w) << SCHED_LOAD_RESOLUTION)# define scale_load_down (w) ((w) >> SCHED_LOAD_RESOLUTION)
kernel/sched.c +3 -6
@@ -292,8 +292,8 @@ static DEFINE_SPINLOCK(task_group_lock);* (The default weight is 1024 - so there's no practical * limitation from this.) */ -#define MIN_SHARES 2 -#define MAX_SHARES (1UL << (18 + SCHED_LOAD_RESOLUTION)) +#define MIN_SHARES (1UL << 1) +#define MAX_SHARES (1UL << 18)static int root_task_group_load =ROOT_TASK_GROUP_LOAD ;#endif
@@ -8450,10 +8450,7 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares)if (!tg->se[0 ])return -EINVAL ; -if (shares <MIN_SHARES ) - shares =MIN_SHARES ; -else if (shares >MAX_SHARES ) - shares =MAX_SHARES ; + shares =clamp (shares,scale_load (MIN_SHARES ),scale_load (MAX_SHARES ));mutex_lock (&shares_mutex);if (tg->shares == shares)