Process management

The priocntl command

The priocntl command comes in four forms:

priocntl -l
This displays configuration information. Here is the output for the default configuration.
   $ priocntl -l
   CONFIGURED CLASSES
   ==================
   

SYS (System Class)

FC (Time sharing) Configured FC User Priority Range: -30 through 30

TS (Time Sharing) Configured TS User Priority Range: -20 through 20

FP (Fixed Priority) Maximum Configured FP Priority: 59

priocntl -d
This displays the scheduler parameters of a process or LWP or a set of processes or LWPs. The syntax for this option is
   priocntl -d -i idtype  idlist
idtype tells what kind of IDs are in idlist. idlist is a list of IDs separated by white space. Here are the valid values for idtype and their corresponding ID types in idlist:

idtype idlist
lwpid LWP IDs
pid process IDs
ppid parent process IDs
pgid process group IDs
sid session IDs
class class names (TS or FP)
uid effective user IDs
gid effective group IDs
all  

 idtype   idlist
 lwpid    LWP IDs
 pid      process IDs
 ppid     parent process IDs
 pgid     process group IDs
 sid      session IDs
 class    class names (TS or FP)
 uid      effective user IDs
 gid      effective group IDs
 all

Here are some examples of the -d option of priocntl:

   $ # display info on all processes and LWPs
   $ priocntl -d -i all
   	.
   	.
   	.
   $ # display info on all time-sharing processes and LWPs:
   $ priocntl -d -i class TS
   	.
   	.
   	.
   $ # display info on all processes and LWPs with user ID 103 or 6626
   $ priocntl -d -i uid 103 6626
   	.
   	.
   	.

priocntl -s
This sets scheduler parameters for a process or LWP or a set of processes or LWPs. The syntax for this option is
   priocntl -s -c class  class_options -i idtype  islist
idtype and idlist are the same as for the -d option described above.

class is TS for time-sharing or FP for fixed priority. You must have appropriate privilege to create a fixed priority process or LWP, to raise a time-sharing user priority above a per-process or LWP limit, or to raise the per-process or LWP limit above zero. Class options are class-specific:

Class-specific options for priocntl

Class -c class Options Meaning
fixed priority FP -p pri
-t tslc
-r res
priority
time slice
resolution
time-sharing TS -p upri
-m uprilim
user priority
user priority limit
fixed class FC -p upri
-m uprilim
user priority
user priority limit

 Class            -c class   Options      Meaning
 fixed priority    FP        -p pri       priority
                             -t tslc      time slice
                             -r res       resolution
 time-sharing     TS         -p upri      user priority
                             -m uprilim   user priority
                                          limit
 fixed class      FC         -p upri      user priority
                             -m uprilim   user priority
                                          limit

For a fixed priority process or LWP you may assign a priority and a time slice.

  • The priority is a number from 0 to the fixed priority maximum as reported by priocntl -l; the default maximum is 59.

  • You specify the time slice as a number of clock intervals and the resolution of the interval. Resolution is specified in intervals per second. The time slice, therefore, is tslc/res seconds. To specify a time slice of one-tenth of a second, for example, you could specify a tslc of 1 and a res of 10. If you specify a time slice without specifying a resolution, millisecond resolution (a res of 1000) is assumed.

If you change a time-sharing process or LWP into a fixed priority process or LWP, it gets a default priority and time slice if you do not specify one. If you want to change only the priority of a fixed priority process or LWP and leave its time slice unchanged, omit the -t option. If you want to change only the time slice of a fixed priority process or LWP and leave its priority unchanged, omit the -p option.

For a time-sharing process or LWP you may assign a user priority and a user priority limit.

  • The user priority is the user-controlled component of a time-sharing priority. The scheduler calculates the global priority of a time-sharing process or LWP by combining this user priority with a system-controlled component that depends on process or LWP behavior. The user priority has the same effect as a value set by nice (except that nice uses higher numbers for lower priority).

  • The user priority limit is the maximum user priority a process or LWP may set for itself without being a privileged user. By default, the user priority limit is 0. You must have appropriate privilege to set a user priority limit above 0.

Both the user priority and the user priority limit must be within the user priority range reported by the priocntl -l command. The default range is -20 to +20.

There is no limit for the number of times a process or LWP may lower and raise its user priority, as long as the value is below its user priority limit. As a courtesy to other users, lower your user priority for big chunks of low-priority work. However, remember that if you lower your user priority limit, you must have appropriate privilege to raise it. A typical use of the user priority limit is to reduce permanently the priority of child processes or LWPs, or another set of low-priority processes or LWPs.

The user priority can never be greater than the user priority limit. If you set the user priority limit below the user priority, the user priority is lowered to the new user priority limit. If you attempt to set the user priority above the user priority limit, the user priority is set to the user priority limit.

Here are some examples of the -s option of priocntl:

   # # make process with ID 24668 a fixed priority process with default parameters:
   # priocntl -s -c FP -i pid 24668
   

# # make 3608 FP with priority 55 and a one-fifth second time slice: # priocntl -s -c FP -p 55 -t 1 -r 5 -i pid 3608

# # change all processes or LWPs into time-sharing processes or LWPs: # priocntl -s -c TS -i all

# # for uid 1122, reduce TS user priority and user priority limit to -10: # priocntl -s -c TS -p -10 -m -10 -i uid 1122

priocntl -e
This sets scheduler parameters for a specified command and executes the command. The syntax for this option is
   priocntl -e -c class  class_options  command  [command arguments]
The class and class options are the same as for the -s option described above.
   # # start a fixed priority shell with default fixed priority:
   # priocntl -e -c FP /bin/sh
   

$ # run make with a time-sharing user priority of -10: $ priocntl -e -c TS -p -10 make bigprog

The priocntl command subsumes the function of nice, which continues to work as in previous releases. nice works only on time-sharing processes and LWPs and uses higher numbers to assign lower priorities. The final example above is equivalent to using nice to set an ``increment'' of 10:

   nice -10 make bigprog

Next topic: The priocntl system call
Previous topic: Process priorities (programmer view)

© 1999 The Santa Cruz Operation, Inc. All rights reserved.
UnixWare 7 Release 7.1 - 19 March 1999