Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rt_dptbl(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

priocntl(1)

dispadmin(1M)

idbuild(1M)

priocntl(2)

mpcntl(3X)

rt_dptbl(4)                                                     rt_dptbl(4)

NAME
     rtdptbl - 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 sup-
     ports the notion of scheduling classes where each class defines a
     scheduling policy, used to schedule processes within that class. Asso-
     ciated 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 that is eligible to run on a given CPU. See PRO-
     CESSOR AFFINITY AND BINDING CONSIDERATIONS below.) 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 (rtdptbl). The
     rtdptbl consists of an array of parameter structures (struct
     rtdpent), 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 (rtdptbl[i]).

     A parameter structure consists of the following members. These are
     also described in the /usr/include/sys/rt.h header file.

     rtglobpri     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
                    rtglobpri values cannot be changed with dispadmin(1M).

     rtquantum     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(1)
                    command or the priocntl(2) system call.

     An administrator can affect the behavior of the real-time portion of
     the scheduler by reconfiguring the rtdptbl. There are two methods
     available for doing this.






Page 1                       Reliant UNIX 5.44                Printed 11/98

rt_dptbl(4)                                                     rt_dptbl(4)

KERNEL LINK TIME CONFIGURATION
     The rtdptbl can be reconfigured at kernel link time time by specify-
     ing the desired values in the /etc/conf/pack.d/rt/space.c file and
     reconfiguring the system using the auto-configuration procedure; see
     idbuild(1M). 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 rtquantum values in the rtdptbl 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 rtdptbl 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 rtquantum
     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 rtquantum entry
     must be either a positive integer specifying the desired time quantum
     (in the resolution given by res), or the symbol RTTQINF 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/space.c file. The level numbers are strictly for the conveni-
     ence 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, increasing priority
     level (from 0 to the maximum configured real-time priority). The level


Page 2                       Reliant UNIX 5.44                Printed 11/98

rt_dptbl(4)                                                     rt_dptbl(4)

     numbers in the comments should normally agree with this ordering; if
     for some reason they don't, however, dispadmin is unaffected.

     # Real Time Dispatcher Configuration
     RES=1000

     # TIME QUANTUM                    PRIORITY
     # (rtquantum)                      LEVEL
           1000                    #        0
           1000                    #        1
           1000                    #        2
           1000                    #        3
           1000                    #        4
           1000                    #        5
           1000                    #        6
           1000                    #        7
           1000                    #        8
           1000                    #        9
            800                    #       10
            800                    #       11
              .                    .        .
              .                    .        .
              .                    .        .
            100                    #       58
            100                    #       59

PROCESSOR AFFINITY AND BINDING CONSIDERATIONS
     In order to increase the cache hit rates of a multiprocessor, a pro-
     cess should generally execute on a particular processor. This affinity
     for a particular processor will reduce the required memory bandwidth
     for the process (and for the system as a whole). If a process has not
     run "recently" then it probably only has a small cache state in any
     given processor - and thus should loose its affinity for any particu-
     lar processor.

     This affinity mechanism can be enabled or disabled on a per-process
     basis by the super user [see mpcntl(1M), mpcntl(3X)]. Since real time
     tasks are time-critical, the affinity mechanism defaults to off - so
     that the RT task will run on the first available processor (assuming
     that there is no other process with a higher priority).

     A process can also be bound to a set of processors. If a processor has
     been so bound, then it will only run on one of the processors of that
     set. If there is a idle processor that is not in the processes binding
     set - then the process will still wait until there is a processor in
     its set that is not running a higher priority process.

     Process bindings can be established by the process [see mpcntl(3X)],
     or can be temporarily established by the kernel (if the kernel is exe-
     cuting driver code that must run on a particular CPU).




Page 3                       Reliant UNIX 5.44                Printed 11/98

rt_dptbl(4)                                                     rt_dptbl(4)

FILES
     /usr/include/sys/rt.h

     /etc/conf/pack.d/rt/space.c

SEE ALSO
     priocntl(1), dispadmin(1M), idbuild(1M), priocntl(2), mpcntl(3X).















































Page 4                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026