aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorChristian Ehrhardt <ehrhardt@linux.vnet.ibm.com>2009-11-30 06:16:47 -0500
committerIngo Molnar <mingo@elte.hu>2009-12-09 04:04:01 -0500
commit1983a922a1bc843806b9a36cf3a370b242783140 (patch)
tree3071f23d39e05587823a40033c4c11a0867dd46e /kernel/sched.c
parent0bcdcf28c979869f44e05121b96ff2cfb05bd8e6 (diff)
sched: Make tunable scaling style configurable
As scaling now takes place on all kind of cpu add/remove events a user that configures values via proc should be able to configure if his set values are still rescaled or kept whatever happens. As the comments state that log2 was just a second guess that worked the interface is not just designed for on/off, but to choose a scaling type. Currently this allows none, log and linear, but more important it allwos us to keep the interface even if someone has an even better idea how to scale the values. Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <1259579808-11357-3-git-send-email-ehrhardt@linux.vnet.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index b54ecf84b6be..116efed962c6 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -7033,7 +7033,20 @@ cpumask_var_t nohz_cpu_mask;
7033static void update_sysctl(void) 7033static void update_sysctl(void)
7034{ 7034{
7035 unsigned int cpus = min(num_online_cpus(), 8U); 7035 unsigned int cpus = min(num_online_cpus(), 8U);
7036 unsigned int factor = 1 + ilog2(cpus); 7036 unsigned int factor;
7037
7038 switch (sysctl_sched_tunable_scaling) {
7039 case SCHED_TUNABLESCALING_NONE:
7040 factor = 1;
7041 break;
7042 case SCHED_TUNABLESCALING_LINEAR:
7043 factor = cpus;
7044 break;
7045 case SCHED_TUNABLESCALING_LOG:
7046 default:
7047 factor = 1 + ilog2(cpus);
7048 break;
7049 }
7037 7050
7038#define SET_SYSCTL(name) \ 7051#define SET_SYSCTL(name) \
7039 (sysctl_##name = (factor) * normalized_sysctl_##name) 7052 (sysctl_##name = (factor) * normalized_sysctl_##name)