aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2009-05-05 11:50:21 -0400
committerIngo Molnar <mingo@elte.hu>2009-05-05 14:07:57 -0400
commit60aa605dfce2976e54fa76e805ab0f221372d4d9 (patch)
tree097a6ddd4127039f79e36a2e9100b653551d997d
parent6e29ec5701e9d44fa02b96c1c5c45f7516182b65 (diff)
sched: rt: document the risk of small values in the bandwidth settings
Thomas noted that we should disallow sysctl_sched_rt_runtime == 0 for (!RT_GROUP) since the root group always has some RT tasks in it. Further, update the documentation to inspire clue. [ Impact: exclude corner-case sysctl_sched_rt_runtime value ] Reported-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <20090505155436.863098054@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--Documentation/scheduler/sched-rt-group.txt18
-rw-r--r--kernel/sched.c7
2 files changed, 25 insertions, 0 deletions
diff --git a/Documentation/scheduler/sched-rt-group.txt b/Documentation/scheduler/sched-rt-group.txt
index 5ba4d3fc625a..eb74b014a3f8 100644
--- a/Documentation/scheduler/sched-rt-group.txt
+++ b/Documentation/scheduler/sched-rt-group.txt
@@ -4,6 +4,7 @@
4CONTENTS 4CONTENTS
5======== 5========
6 6
70. WARNING
71. Overview 81. Overview
8 1.1 The problem 9 1.1 The problem
9 1.2 The solution 10 1.2 The solution
@@ -14,6 +15,23 @@ CONTENTS
143. Future plans 153. Future plans
15 16
16 17
180. WARNING
19==========
20
21 Fiddling with these settings can result in an unstable system, the knobs are
22 root only and assumes root knows what he is doing.
23
24Most notable:
25
26 * very small values in sched_rt_period_us can result in an unstable
27 system when the period is smaller than either the available hrtimer
28 resolution, or the time it takes to handle the budget refresh itself.
29
30 * very small values in sched_rt_runtime_us can result in an unstable
31 system when the runtime is so small the system has difficulty making
32 forward progress (NOTE: the migration thread and kstopmachine both
33 are real-time processes).
34
171. Overview 351. Overview
18=========== 36===========
19 37
diff --git a/kernel/sched.c b/kernel/sched.c
index 54d67b94f1a9..2a43a581ead3 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -9917,6 +9917,13 @@ static int sched_rt_global_constraints(void)
9917 if (sysctl_sched_rt_period <= 0) 9917 if (sysctl_sched_rt_period <= 0)
9918 return -EINVAL; 9918 return -EINVAL;
9919 9919
9920 /*
9921 * There's always some RT tasks in the root group
9922 * -- migration, kstopmachine etc..
9923 */
9924 if (sysctl_sched_rt_runtime == 0)
9925 return -EBUSY;
9926
9920 spin_lock_irqsave(&def_rt_bandwidth.rt_runtime_lock, flags); 9927 spin_lock_irqsave(&def_rt_bandwidth.rt_runtime_lock, flags);
9921 for_each_possible_cpu(i) { 9928 for_each_possible_cpu(i) {
9922 struct rt_rq *rt_rq = &cpu_rq(i)->rt; 9929 struct rt_rq *rt_rq = &cpu_rq(i)->rt;