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:
committed by
Zbigniew Jędrzejewski-Szmek
parent
71c0159692
commit
bb11271068
@@ -0,0 +1,6 @@
|
||||
[Unit]
|
||||
Description=Bad sched priority for Idle
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/true
|
||||
CPUSchedulingPriority=1
|
||||
@@ -0,0 +1,6 @@
|
||||
[Unit]
|
||||
Description=Sched idle with prio 0
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/true
|
||||
CPUSchedulingPriority=0
|
||||
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=Bad sched priority for RR
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/true
|
||||
CPUSchedulingPolicy=rr
|
||||
CPUSchedulingPriority=0
|
||||
CPUSchedulingPriority=100
|
||||
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Change prio
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/true
|
||||
CPUSchedulingPolicy=rr
|
||||
CPUSchedulingPriority=1
|
||||
CPUSchedulingPriority=2
|
||||
CPUSchedulingPriority=99
|
||||
@@ -0,0 +1,6 @@
|
||||
[Unit]
|
||||
Description=Default prio for RR
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/true
|
||||
CPUSchedulingPolicy=rr
|
||||
Reference in New Issue
Block a user