sched: Only setting CPUSchedulingPriority=rr doesn't work

A service that only sets the scheduling policy to round-robin
fails to be started. This is because the cpu_sched_priority is
initialized to 0 and is not adjusted when the policy is changed.

Clamp the cpu_sched_priority when the scheduler policy is set. Use
the current policy to validate the new priority.

Change the manual page to state that the given range only applies
to the real-time scheduling policies.

Add a testcase that verifies this change:

$ make test-sched-prio; ./test-sched-prio
[test/sched_idle_bad.service:6] CPU scheduling priority is out of range, ignoring: 1
[test/sched_rr_bad.service:7] CPU scheduling priority is out of range, ignoring: 0
[test/sched_rr_bad.service:8] CPU scheduling priority is out of range, ignoring: 100
This commit is contained in:
Holger Hans Peter Freyther
2012-11-15 16:16:45 +01:00
committed by Zbigniew Jędrzejewski-Szmek
parent 71c0159692
commit bb11271068
10 changed files with 168 additions and 11 deletions
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=Bad sched priority for Idle
[Service]
ExecStart=/bin/true
CPUSchedulingPriority=1
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=Sched idle with prio 0
[Service]
ExecStart=/bin/true
CPUSchedulingPriority=0
+8
View File
@@ -0,0 +1,8 @@
[Unit]
Description=Bad sched priority for RR
[Service]
ExecStart=/bin/true
CPUSchedulingPolicy=rr
CPUSchedulingPriority=0
CPUSchedulingPriority=100
+9
View File
@@ -0,0 +1,9 @@
[Unit]
Description=Change prio
[Service]
ExecStart=/bin/true
CPUSchedulingPolicy=rr
CPUSchedulingPriority=1
CPUSchedulingPriority=2
CPUSchedulingPriority=99
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=Default prio for RR
[Service]
ExecStart=/bin/true
CPUSchedulingPolicy=rr