mirror of https://github.com/mkerrisk/man-pages
sched.7: Document sched_rt_period_us and sched_rt_runtime_us /proc files
And rework and relocate the text on dealing with runaway real-time processes. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
1608b67143
commit
0c055c7506
65
man7/sched.7
65
man7/sched.7
|
@ -369,6 +369,59 @@ See
|
||||||
.BR getrlimit (2)
|
.BR getrlimit (2)
|
||||||
for further information on
|
for further information on
|
||||||
.BR RLIMIT_RTPRIO .
|
.BR RLIMIT_RTPRIO .
|
||||||
|
.SS Limiting the CPU usage of real-time and deadline processes
|
||||||
|
A nonblocking infinite loop in a thread scheduled under the
|
||||||
|
.BR SCHED_FIFO ,
|
||||||
|
.BR SCHED_RR ,
|
||||||
|
or
|
||||||
|
.BR SCHED_DEADLINE
|
||||||
|
policy will block all threads with lower
|
||||||
|
priority forever.
|
||||||
|
Prior to Linux 2.6.25, the only way of preventing a runaway real-time
|
||||||
|
process from freezing the system was to run (at the console)
|
||||||
|
a shell scheduled under a higher static priority than the tested application.
|
||||||
|
This allows an emergency kill of tested
|
||||||
|
real-time applications that do not block or terminate as expected.
|
||||||
|
|
||||||
|
Since Linux 2.6.25, there are other techniques for dealing with runaway
|
||||||
|
real-time and deadline processes.
|
||||||
|
One of these is to use the
|
||||||
|
.BR RLIMIT_RTTIME
|
||||||
|
resource limit to set a ceiling on the CPU time that
|
||||||
|
a real-time process may consume.
|
||||||
|
See
|
||||||
|
.BR getrlimit (2)
|
||||||
|
for details.
|
||||||
|
|
||||||
|
Since version 2.6.25, Linux also provides two
|
||||||
|
.I /proc
|
||||||
|
files that can be used to reserve a certain amount of CPU time
|
||||||
|
to be used by non-real-time processes.
|
||||||
|
Reserving some CPU time in this fashion allows some CPU time to be
|
||||||
|
allocated to (say) a root shell that can be used to kill a runaway process.
|
||||||
|
Both of these files specify time values in microseconds:
|
||||||
|
.TP
|
||||||
|
.IR /proc/sys/kernel/sched_rt_period_us
|
||||||
|
This file specifies a scheduling period that is equivalent to
|
||||||
|
100% CPU bandwidth.
|
||||||
|
The value in this file can range from 1 to
|
||||||
|
.BR INT_MAX ,
|
||||||
|
giving an operating range of 1 microsecond to around 35 minutes.
|
||||||
|
The default value in this file is 1,000,000 (1 second).
|
||||||
|
.TP
|
||||||
|
.IR /proc/sys/kernel/sched_rt_runtime_us
|
||||||
|
The value in this file specifies how much of the "period" time
|
||||||
|
can be used by all real-time and deadline scheduled processes
|
||||||
|
on the system.
|
||||||
|
The value in this file can range from \-1 to
|
||||||
|
.BR INT_MAX \-1.
|
||||||
|
Specifying \-1 makes the runtime the same as the period;
|
||||||
|
that is, no CPU time is set aside for non-real-time processes
|
||||||
|
(which was the Linux behavior before kernel 2.6.25).
|
||||||
|
The default value in this file is 950,000 (0.95 seconds),
|
||||||
|
meaning that 5% of the CPU time is reserved for processes that
|
||||||
|
don't run under a real-time or deadline scheduling policy.
|
||||||
|
.PP
|
||||||
.SS Response time
|
.SS Response time
|
||||||
A blocked high priority thread waiting for I/O has a certain
|
A blocked high priority thread waiting for I/O has a certain
|
||||||
response time before it is scheduled again.
|
response time before it is scheduled again.
|
||||||
|
@ -388,18 +441,6 @@ paging delays; this can be done with
|
||||||
.BR mlock (2)
|
.BR mlock (2)
|
||||||
or
|
or
|
||||||
.BR mlockall (2).
|
.BR mlockall (2).
|
||||||
|
|
||||||
Since a nonblocking infinite loop in a thread scheduled under
|
|
||||||
\fBSCHED_FIFO\fP or \fBSCHED_RR\fP will block all threads with lower
|
|
||||||
priority forever, a software developer should always keep available on
|
|
||||||
the console a shell scheduled under a higher static priority than the
|
|
||||||
tested application.
|
|
||||||
This will allow an emergency kill of tested
|
|
||||||
real-time applications that do not block or terminate as expected.
|
|
||||||
See also the description of the
|
|
||||||
.BR RLIMIT_RTTIME
|
|
||||||
resource limit in
|
|
||||||
.BR getrlimit (2).
|
|
||||||
.SH NOTES
|
.SH NOTES
|
||||||
.PP
|
.PP
|
||||||
Originally, Standard Linux was intended as a general-purpose operating
|
Originally, Standard Linux was intended as a general-purpose operating
|
||||||
|
|
Loading…
Reference in New Issue