The following figure illustrates the default process priorities.
Figure 4-1 Process Priorities (Programmer's View)
A process priority has meaning only in the context of a scheduler class. You specify a process priority by specifying a class and a class-specific priority value. The class and class-specific value are mapped by the system into a global priority that the system uses to schedule processes.
A system administrator's view of priorities is different from the view of a user or programmer. When configuring scheduler classes, an administrator deals directly with global priorities. The system maps priorities supplied by users into these global priorities. See System Administration Guide: Basic Administration for more information about priorities.
The priocntl(1) command and the priocntl(2) and priocntlset(2) interfaces are used to set or retrieve scheduler parameters for processes. Setting priorities generally follows the same sequence for the command and both interfaces:
Specify the target processes.
Specify the scheduler parameters that you want for those processes.
Execute the command or interface to set the parameters for the processes.
Process IDs are basic properties of UNIX processes. See Intro(2) for more information. The class ID is the scheduler class of the process. priocntl(2) works only for the time-sharing and the real-time classes, not for the system class.
The priocntl(1) utility performs four different control interfaces on the scheduling of a process:
Displays configuration information
Displays the scheduling parameters of processes
Sets the scheduling parameters of processes
Executes a command with the specified scheduling parameters
The following examples demonstrate the use of priocntl(1).
The -l option for the default configuration produces the following output:
$ priocntl -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) Configured TS User Priority Range -60 through 60 RT (Real Time) Maximum Configured RT Priority: 59
To display information on all processes, do the following:
$ priocntl -d -i all
To display information on all time-sharing processes:
$ priocntl -d -i class TS
To display information on all processes with user ID 103 or 6626, do the following:
$ priocntl -d -i uid 103 6626
To make the process with ID 24668 a real-time process with default parameters, do the following:
$ priocntl -s -c RT -i pid 24668
To make 3608 RT with priority 55 and a one-fifth second time slice:
$ priocntl -s -c RT -p 55 -t 1 -r 5 -i pid 3608
To change all processes into time-sharing processes, do the following:
$ priocntl -s -c TS -i all
To reduce TS user priority and user priority limit to -10 for uid 1122:
$ priocntl -s -c TS -p -10 -m -10 -i uid 1122
To start a real-time shell with default real-time priority, do the following:
$ priocntl -e -c RT /bin/sh
To run make with a time-sharing user priority of -10, do the following:
$ priocntl -e -c TS -p -10 make bigprog
priocntl(1) includes the interface of nice(1). nice works only on time-sharing processes and uses higher numbers to assign lower priorities. The previous example is equivalent to using nice(1) to set an increment of 10:
$ nice -10 make bigprog
priocntl(2) manages the scheduling parameters of a process or set of processes. An invocation of priocntl(2) can act on a LWP, on a single process, or on a group of processes. A group of processes can be identified by parent process, process group, session, user, group, class, or all active processes. For more details, see the priocntl man page.
The PC_GETCLINFO command gets a scheduler class name and parameters when given the class ID. This command enables you to write programs that make no assumptions about what classes are configured.
The PC_SETXPARMS command sets the scheduler class and parameters of a set of processes. The idtype and id input arguments specify the processes to be changed.