rt_dptbl(4) rt_dptbl(4)
NAME
rt_dptbl - real-time dispatcher parameter table
DESCRIPTION
The process scheduler (or dispatcher) is the portion of the kernel
that controls allocation of the CPU to processes. The scheduler
supports the notion of scheduling classes where each class defines a
scheduling policy, used to schedule processes within that class.
Associated with each scheduling class is a set of priority queues on
which ready to run processes are linked. These priority queues are
mapped by the system configuration into a set of global scheduling
priorities which are available to processes within the class. (The
dispatcher always selects for execution the process with the highest
global scheduling priority in the system.) The priority queues
associated with a given class are viewed by that class as a
contiguous set of priority levels numbered from 0 (lowest priority)
to n (highest priority-a configuration dependent value). The set of
global scheduling priorities that the queues for a given class are
mapped into might not start at zero and might not be contiguous
(depending on the configuration).
The real-time class maintains an in-core table, with an entry for
each priority level, giving the properties of that level. This table
is called the real-time dispatcher parameter table (rt_dptbl). The
rt_dptbl consists of an array of parameter structures (struct
rt_dpent), one for each of the n priority levels. The properties of
a given priority level i are specified by the ith parameter structure
in this array (rt_dptbli).
A parameter structure consists of the following members. These are
also described in the /usr/include/sys/rt.h header file.
rt_globpri
The global scheduling priority associated with this priority
level. The mapping between real-time priority levels and
global scheduling priorities is determined at boot time by
the system configuration. The rt_globpri values cannot be
changed with dispadmin(1M).
rt_quantum
The length of the time quantum allocated to processes at this
level in ticks (HZ). The time quantum value is only a
default or starting value for processes at a particular level
as the time quantum of a real-time process can be changed by
the user with the priocntl command or the priocntl system
call.
An administrator can affect the behavior of the real-time portion of
the scheduler by reconfiguring the rt_dptbl. There are two methods
available for doing this.
7/91 Page 1
rt_dptbl(4) rt_dptbl(4)
MASTER FILE
The rt_dptbl can be reconfigured at boot time by specifying the
desired values in the rt master file and reconfiguring the system
using the auto-configuration boot procedure; see mkboot(1M) and
master(4). This is the only method that can be used to change the
number of real-time priority levels or the set of global scheduling
priorities used by the real-time class.
DISPADMIN CONFIGURATION FILE
The rt_quantum values in the rt_dptbl can be examined and modified on
a running system using the dispadmin(1M) command. Invoking dispadmin
for the real-time class allows the administrator to retrieve the
current rt_dptbl configuration from the kernel's in-core table, or
overwrite the in-core table with values from a configuration file.
The configuration file used for input to dispadmin must conform to
the specific format described below.
Blank lines are ignored and any part of a line to the right of a #
symbol is treated as a comment. The first non-blank, non-comment
line must indicate the resolution to be used for interpreting the
time quantum values. The resolution is specified as
RES=res
where res is a positive integer between 1 and 1,000,000,000 inclusive
and the resolution used is the reciprocal of res in seconds. (For
example, RES=1000 specifies millisecond resolution.) Although very
fine (nanosecond) resolution may be specified, the time quantum
lengths are rounded up to the next integral multiple of the system
clock's resolution.
The remaining lines in the file are used to specify the rt_quantum
values for each of the real-time priority levels. The first line
specifies the quantum for real-time level 0, the second line
specifies the quantum for real-time level 1, etc. There must be
exactly one line for each configured real-time priority level. Each
rt_quantum entry must be either a positive integer specifying the
desired time quantum (in the resolution given by res), or the symbol
RT_TQINF indicating an infinite time quantum for that level.
EXAMPLE
The following excerpt from a dispadmin configuration file illustrates
the format. Note that for each line specifying a time quantum there
is a comment indicating the corresponding priority level. These
level numbers indicate priority within the real-time class, and the
mapping between these real-time priorities and the corresponding
global scheduling priorities is determined by the configuration
specified in the rt master file. The level numbers are strictly for
the convenience of the administrator reading the file and, as with
any comment, they are ignored by dispadmin on input. dispadmin
assumes that the lines in the file are ordered by consecutive,
Page 2 7/91
rt_dptbl(4) rt_dptbl(4)
increasing priority level (from 0 to the maximum configured real-time
priority). The level numbers in the comments should normally agree
with this ordering; if for some reason they don't, however, dispadmin
is unaffected.
7/91 Page 3
rt_dptbl(4) rt_dptbl(4)
# Real-Time Dispatcher Configuration File
RES=1000
# TIME QUANTUM PRIORITY
# (rt_quantum) LEVEL
100 # 0
100 # 1
100 # 2
100 # 3
100 # 4
100 # 5
90 # 6
90 # 7
. . .
. . .
. . .
10 # 58
10 # 59
FILES
/usr/include/sys/rt.h
SEE ALSO
dispadmin(1M), priocntl(1), priocntl(2), master(4), mkboot(1M)
``Scheduler'' chapter in the System Administrator's Guide
Page 4 7/91