MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


File Formats                                          rtdptbl(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 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 pro-
     cess with the highest global scheduling priority in the sys-
     tem.  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, depend-
     ing 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 parame-
     ter  table  (rtdptbl).  The  rtdptbl  consists of an array
     (configrtdptbl[])   of   parameter   structures    (struct
     rtdpentt),  one  for  each  of  the  n priority levels. The
     structure are accessed via a  pointer,  (rtdptbl),  to  the
     array. The properties of a given priority level i are speci-
     fied  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  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 start-
                   ing  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 com-
                   mand or the priocntl system call.



SunOS 5.11          Last change: 15 Oct 2002                    1






File Formats                                          rtdptbl(4)



                   In the high resolution clock mode  (hirestick
                   set  to  1),  the  value of hz is set to 1000.
                   Increase quantums to maintain the  same  abso-
                   lute time quantums.



     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:  reconfigure
     with   a   loadable   module   at   boot-time  or  by  using
     dispadmin(1M) at run-time.

  rtdptbl Loadable Module
     The rtdptbl can be  reconfigured  with  a  loadable  module
     which  contains  a  new real time dispatch table. The module
     containing the dispatch table is separate from the RT  load-
     able  module  which  contains  the  rest  of  the  real time
     software. 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.  The
     relevant procedure and source code is described in the Exam-
     ples section.

  dispadmin Configuration File
     The rtquantum values in the rtdptbl can  be  examined  and
     modified  on  a  running system using the dispadmin(1M) com-
     mand. 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 configura-
     tion 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.




SunOS 5.11          Last change: 15 Oct 2002                    2






File Formats                                          rtdptbl(4)



     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.
     There must be exactly one line for each configured real-time
     priority level. Each rtquantum entry must be either a posi-
     tive integer specifying the desired  time  quantum  (in  the
     resolution  given  by  res),  or  the value -2 indicating an
     infinite time quantum for that level.

EXAMPLES
     Example 1 A Sample dispadmin Configuration File


     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 priori-
     ties is determined by the  configuration  specified  in  the
     RTDPTBL loadable module. 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,  increasing  priority level (from 0 to the max-
     imum 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  unaf-
     fected.


       # Real-Time Dispatcher Configuration File
       RES=1000

       # TIME QUANTUM PRIORITY
       # (rtquantum)LEVEL
       100#   0
       100#   1
       100#   2
       100#   3
       100#   4
       100#   5
       90 #   6
       90 #   7
       ..    .
       ..    .
       ..    .
       10#   58
       10#   59





SunOS 5.11          Last change: 15 Oct 2002                    3






File Formats                                          rtdptbl(4)



     Example 2 Replacing The rtdptbl Loadable Module


     In order to change the size of the real time dispatch table,
     the loadable module which contains the dispatch table infor-
     mation will have to be built. It  is  recommended  that  you
     save  the  existing  module  before using the following pro-
     cedure.


         1.   Place the dispatch table code shown below in a file
              called  rtdptbl.c An example of an rtdptbl.c file
              follows.

         2.   Compile the code using the  given  compilation  and
              link lines supplied.

                cc -c -0 -DKERNEL rtdptbl.c
                ld -r -o RTDPTBL rtdptbl.o



         3.   Copy    the    current    dispatch     table     in
              /usr/kernel/sched to RTDPTBL.bak.

         4.   Replace the current RTDPTBL in /usr/kernel/sched.

         5.   You will have to make changes  in  the  /etc/system
              file  to  reflect  the  changes to the sizes of the
              tables. See system(4). The rtmaxpri  variable  may
              need changing. The syntax for setting this is:

                set RT:rtmaxpri=(class-specific value for maximum \
                        real-time priority)


         6.   Reboot the system to use the new dispatch table.


     Great care should be used in replacing  the  dispatch  table
     using this method. If you don't get it right, the system may
     not behave properly.



     The following is an example of a rtdptbl.c  file  used  for
     building the new rtdptbl.


       /*  BEGIN rtdptbl.c  */
       #include 
       #include 



SunOS 5.11          Last change: 15 Oct 2002                    4






File Formats                                          rtdptbl(4)



       #include 
       #include 
       #include 
       #include 
       /*
        * This is the loadable module wrapper.
        */
       #include 
       extern struct modops modmiscops;
       /*
        * Module linkage information for the kernel.
        */
       static struct modlmisc modlmisc = {
            &modmiscops, "realtime dispatch table"
       };
       static struct modlinkage modlinkage = {
            MODREV1, &modlmisc, 0
       };
       init()
       {
            return (modinstall(&modlinkage));
       }
       info (struct modinfo *modinfop)
       {
            return (modinfo(&modlinkage, modinfop));
       }
       rtdpentt       configrtdptbl[] = {

       /*   prilevel Time quantum  */

       100,100,
       101,100,
       102,100,
       103,100,
       104,100,
       105,100,
       106,100,
       107,100,
       108,100,
       109,100,
       110,80,
       111,80,
       112,80,
       113,80,
       114,80,
       115,80,
       116,80,
       117,80,
       118,80,
       119,80,
       120,60,
       121,60,



SunOS 5.11          Last change: 15 Oct 2002                    5






File Formats                                          rtdptbl(4)



       122,60,
       123,60,
       124,60,
       125,60,
       126,60,
       127,60,
       128,60,
       129,60,
       130,40,
       131,40,
       132,40,
       133,40,
       134,40,
       135,40,
       136,40,
       137,40,
       138,40,
       139,40,
       140,20,
       141,20,
       142,20,
       143,20,
       144,20,
       145,20,
       146,20,
       147,20,
       148,20,
       149,20,
       150,10,
       151,10,
       152,10,
       153,10,
       154,10,
       155,10,
       156,10,
       157,10,
       158,10,
       159,10,

       };
       /*
        * Return the address of configrtdptbl
        */ rtdpentt *
           rtgetdptbl()
       {
                  return (configrtdptbl);
       }


SEE ALSO
     priocntl(1), dispadmin(1M), priocntl(2), system(4)




SunOS 5.11          Last change: 15 Oct 2002                    6






File Formats                                          rtdptbl(4)



     System Administration Guide: Basic Administration


      Programming Interfaces Guide



















































SunOS 5.11          Last change: 15 Oct 2002                    7



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™