Solaris Tunable Parameters Reference Manual

Process Sizing Tunables

Several variables are used to control the number of processes that are available on the system and the number of processes that an individual user can create. The foundation variable is maxusers, which drives the values assigned to max_nprocs and maxuprc.

maxusers

Description

Originally, maxusers defined the number of logged in users the system could support. Various tables were sized based on this setting when a kernel was generated. Now, the Solaris release does much of its sizing based on the amount of memory on the system, so much of the past use of maxusers has changed. There are still a number of subsystems that are derived from maxusers:

  • The maximum number of processes on the system

  • The number of quota structures held in the system

  • The size of the directory name lookup cache (DNLC)

Data Type

Signed integer

Default

Lesser of the amount of memory in Mbytes and 2048

Range

1 to 2048, based on physical memory if not set in the /etc/system file.

1 to 4096, if set in the /etc/system file.

Units

Users

Dynamic?

No. After computation of dependent variables is done, maxusers is never referenced again.

Validation

None

When to Change

When the default number of user processes derived by the system is too low. This situation is seen by the following message that displays on the system console:


out of processes

When the default number of processes is too high:

  • Database servers that have a lot of memory and relatively few running processes, can save system memory by reducing the default value of maxusers.

  • File servers that have a lot of memory and few running processes can reduce this value, but should explicitly set the size of the DNLC. (See ncsize.)

  • Compute servers that have a lot of memory and few running processes can reduce this value.

Commitment Level

Unstable

Change History

For information, see maxusers (Solaris 7 Release).

reserved_procs

Description

Specifies number of system process slots to be reserved in the process table for processes with a UID of root (0). For example, fsflush.

Data Type

Signed integer

Default

5

Range

5 to MAXINT

Units

Processes

Dynamic?

No. Not used after the initial parameter computation.

Validation

In the Solaris 8 or 9 release, any /etc/system setting is honored.

Commitment Level

Unstable

When to Change

Consider increasing to 10 + normal number of UID 0 (root) processes on system. This setting provides some cushion should it be necessary to obtain a root shell during a time when the system is otherwise unable to create user-level processes.

pidmax

Description

This parameter specifies value of largest possible process ID. Valid for Solaris 8 and later releases.

pidmax sets the value for the maxpid variable. Once maxpid is set, pidmax is ignored. maxpid is used elsewhere in the kernel to determine the maximum process ID and for constraint checking.

Attempts to set maxpid by adding an entry to the /etc/system file have no effect.

Data Type

Signed integer

Default

30,000

Range

266 to 999,999

Units

Processes

Dynamic?

No. Used only at boot time to set the value of pidmax.

Validation

Value is compared to that of reserved_procs and 999,999. If less than reserved_procs or greater than 999,999, the value is set to 999,999.

Implicit

max_nprocs range checking ensures that max_nprocs is always less than or equal to this value.

When to Change

Changing this parameter is one of the steps necessary to enable support for more than 30,000 processes on a system.

Commitment Level

Unstable

max_nprocs

Description

Maximum number of processes that can be created on a system. Includes system and user processes. Any value entered in /etc/system is used in the computation of maxuprc.

This value is also used in determining the size of several other system data structures. Other data structures where this variable plays a role are:

  • Determining the size of the directory name lookup cache (if ncsize is not specified).

  • Allocating disk quota structures for UFS (if ndquot is not specified).

  • Verifying that the amount of memory used by configured system V semaphores does not exceed system limits.

  • Configuring Hardware Address Translation resources for the sun4m and Intel platforms.

Data Type

Signed integer

Default

10 + (16 x maxusers)

Range

266 to value of maxpid

Dynamic?

No

Validation

Compared to maxpid and set to maxpid if larger. On Intel platforms an additional check is made against a platform-specific value. max_nprocs is set to the smallest value in the triplet (max_nprocs, maxpid, platform value). Both platforms use 65,534 as the platform value.

When to Change

Changing this parameter is one of the steps necessary to enable support for more than 30,000 processes on a system.

Commitment Level

Unstable

Change History

For information, see max_nprocs (Pre-Solaris 8 Releases).

maxuprc

Description

Maximum number of processes that can be created on a system by any one user.

Data Type

Signed integer

Default

max_nprocs - reserved_procs

Range

1 to max_nprocs - reserved_procs

Units

Processes

Dynamic?

No

Validation

Compared to max_nprocs - reserved_procs and set to the smaller of the two.

When to Change

When you want to specify a hard limit for the number of processes a user can create that is less than the default value of however many processes the system can create. Attempting to exceed this limit generates the following warning messages on the console or in the messages file:


out of per-user processes for uid N

Commitment Level

Unstable