Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ts_dptbl(4) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dispadmin(1M)

priocntl(1)

priocntl(2)






       ts_dptbl(4)                                              ts_dptbl(4)


       NAME
             ts_dptbl - time-sharing 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).

             Processes in the time-sharing class which are running in user
             mode (or in kernel mode before going to sleep) are scheduled
             according to the parameters in a time-sharing dispatcher
             parameter table (ts_dptbl).  (Time-sharing processes running
             in kernel mode after sleeping are run within a special range
             of priorities reserved for such processes and are not affected
             by the parameters in the ts_dptbl until they return to user
             mode.)  The ts_dptbl consists of an array of parameter
             structures (struct ts_dpent), one for each of the n priority
             levels used by time-sharing processes in user mode.  The
             properties of a given priority level i are specified by the
             ith parameter structure in this array (ts_dptbli).

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

             ts_globpri
                     The global scheduling priority associated with this
                     priority level.  The mapping between time-sharing
                     priority levels and global scheduling priorities is
                     determined at boot time by the system configuration.
                     ts_globpri is the only member of the ts_dptbl which


                           Copyright 1994 Novell, Inc.               Page 1













      ts_dptbl(4)                                              ts_dptbl(4)


                    cannot be changed with dispadmin(1M).

            ts_quantum
                    The length of the time quantum allocated to processes
                    at this level in ticks (HZ).

            ts_tqexp
                    Priority level of the new queue on which to place a
                    process running at the current level if it exceeds its
                    time quantum.  Normally this field links to a lower
                    priority time-sharing level that has a larger quantum.

            ts_slpret
                    Priority level of the new queue on which to place a
                    process, that was previously in user mode at this
                    level, when it returns to user mode after sleeping.
                    Normally this field links to a higher priority level
                    that has a smaller quantum.

            ts_maxwait
                    A per process counter, ts_dispwait is initialized to
                    zero each time a time-sharing process is placed back
                    on the dispatcher queue after its time quantum has
                    expired or when it is awakened (ts_dispwait is not
                    reset to zero when a process is preempted by a higher
                    priority process).  This counter is incremented once
                    per second for each process on the dispatcher queue.
                    If a process's ts_dispwait value exceeds the
                    ts_maxwait value for its level, the process's priority
                    is changed to that indicated by ts_lwait.  The purpose
                    of this field is to prevent starvation.

            ts_lwait
                    Move a process to this new priority level if
                    ts_dispwait is greater than ts_maxwait.

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

      DISPADMIN CONFIGURATION FILE
            With the exception of ts_globpri all of the members of the
            ts_dptbl can be examined and modified on a running system
            using the dispadmin(1M) command.  Invoking dispadmin for the
            time-sharing class allows the administrator to retrieve the
            current ts_dptbl configuration from the kernel's in-core


                          Copyright 1994 Novell, Inc.               Page 2













       ts_dptbl(4)                                              ts_dptbl(4)


             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 ts_quantum 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
             system clock's resolution is hardware-dependent; this
             resolution can be calculated from the value of HZ, which is
             defined in the file /usr/include/sys/param.h.  HZ gives the
             number of clock ticks per second of the system clock.  For
             example, an HZ of 100 specifies 100 clock ticks per second, or
             one tick every 10 milliseconds (that is, this system clock has
             a resolution of 10 milliseconds).  If the -t and -r options
             are used to specify a time quantum of 34 milliseconds, it is
             rounded up to 4 ticks (40 milliseconds) on a machine with an
             HZ of 100.

             The remaining lines in the file are used to specify the
             parameter values for each of the time-sharing priority levels.
             The first line specifies the parameters for time-sharing level
             0, the second line specifies the parameters for time-sharing
             level 1, and so on.  There must be exactly one line for each
             configured time-sharing priority level.

       EXAMPLE
             The following excerpt from a dispadmin configuration file
             illustrates the format.  Note that for each line specifying a
             set of parameters there is a comment indicating the
             corresponding priority level.  These level numbers indicate
             priority within the time-sharing class, and the mapping
             between these time-sharing priorities and the corresponding
             global scheduling priorities is determined by the
             configuration specified in the ts 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


                           Copyright 1994 Novell, Inc.               Page 3













      ts_dptbl(4)                                              ts_dptbl(4)


            dispadmin.  dispadmin assumes that the lines in the file are
            ordered by consecutive, increasing priority level (from 0 to
            the maximum configured time-sharing priority).  The level
            numbers in the comments should normally agree with this
            ordering; if for some reason they don't, however, dispadmin is
            unaffected.

            # Time-Sharing Dispatcher Configuration File
            RES=1000
            # ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait  PRIORITY LEVEL
                  500        0       10          5        10         #  0
                  500        0       11          5        11         #  1
                  500        1       12          5        12         #  2
                  500        1       13          5        13         #  3
                  500        2       14          5        14         #  4
                  500        2       15          5        15         #  5
                  450        3       16          5        16         #  6
                  450        3       17          5        17         #  7
                   .         .        .          .         .         .  .
                   .         .        .          .         .         .  .
                   .         .        .          .         .         .  .
                   50       48       59          5        59         #  58
                   50       49       59          5        59         #  59

      FILES
            /usr/include/sys/ts.h

      REFERENCES
            dispadmin(1M), priocntl(1), priocntl(2)

      NOTICES
            dispadmin does some limited sanity checking on the values
            supplied in the configuration file.  The sanity checking is
            intended to ensure that the new ts_dptbl values do not cause
            the system to panic.  The sanity checking does not attempt to
            analyze the effect that the new values will have on the
            performance of the system.  Unusual ts_dptbl configurations
            may have a dramatic negative impact on the performance of the
            system.

            No sanity checking is done on the ts_dptbl values specified in
            the ts master file.  Specifying an inconsistent or nonsensical
            ts_dptbl configuration through the ts master file could cause
            serious performance problems and/or cause the system to panic.




                          Copyright 1994 Novell, Inc.               Page 4








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