Solaris Tunable Parameters Reference Manual

Appendix A Tunable Parameter Change History

This section describes the change history of specific parameters. Parameters whose functionality has been removed are listed also.

Kernel Parameters

Process Sizing Tunables

maxusers (Solaris 7 Release)

Description

The maxusers parameter drives max_nprocs and maxuprc.

Data Type

Signed integer

Default

Lesser of the amount of memory in Mbytes and 1024

Range

1 to 2048


Note –

Values greater than 1024 must be specified in /etc/system. If a value greater than 2048 is provided, calculations clamps the value at 2048, but later processing sets the value to the provided value.


Units

Users

Dynamic?

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

Validation

None

When to Change

If the default number of user processes derived by the system is insufficient. This insufficiency is seen by the following messages on the system console or messages file.


out of processes
Commitment Level

Unstable

max_nprocs (Pre-Solaris 8 Releases)

Description

Maximum number of processes that can be created on a system. Includes system and user processes. Prior to the Solaris 8 release, the value was determined by computation and then used in the setting of maxuprc.

This value is also used in determining the size of several other system data structures. For releases prior to Solaris 8, if a value is provided in /etc/system it is used rather than the computed value. 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 sun4d, sun4m, and Intel platforms

Data Type

Signed integer

Default

10 + (16 x maxusers)

Range

266 to value of pidmax

Dynamic?

No. max_nprocs is assigned to the v_proc element of the v structure after the initial parameter calculation is completed. Changing v.v_proc on a running system almost certainly results in a system crash or silent data corruption.

Validation

Compared to maxpid and set to maxpid, if larger. On the sun4d and 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

Starting with the Solaris 8 release, this value can be changed to enable more than 30,000 processes on a system. Changing this parameter is one of the steps necessary to enable support for more than 30,000 processes on a system.

Commitment Level

Unstable

Paging Related Tunables

In certain revisions of the Solaris 2.6 kernel patch (105181-10 for SPARC platforms and 105182-09 for Intel platforms) and in the Solaris 7 release, a new parameter is introduced: priority paging. A new starting point for pageout thread activity (cachefree) is also used. When available memory is between cachefree and lotsfree, priority paging modifies the page-checking algorithm to skip the page, if it came from an executable (text, stack, or data). After memory falls below lotsfree, every page is considered equally. The facility is not enabled by default, but can be enabled by either setting cachefree to a value greater than lotsfree or by setting the priority_paging variable to a non-zero value, which sets cachefree to 2 times lotsfree.

priority_paging (Solaris 2.6 and 7 Releases)

Description

Enables priority paging feature. When set, this variable sets cachefree to 2 times lotsfree, thereby enabling priority paging.

Data Type

Signed integer

Default

0

Range

0 (priority paging disabled unless cachefree set separately) or 1 (enabled)

Units

Toggle (on/off)

Dynamic?

No. Sets the value of cachefree at boot time only. Runtime enabling can be achieved by setting cachefree with adb while the system is running.

Validation

None

When to Change

Should always be enabled unless the system is tight on memory, and does excessive I/O where the contents of the files are needed in the future.

Commitment Level

Obsolete

cachefree (Solaris 2.6 and Solaris 7 Releases)

Description

Enables priority paging feature, provided cachefree is greater than lotsfree. This variable is available for systems running the Solaris 2.6 release, with at a minimum, revision 10 of patch 105181 installed, and for systems running the Solaris 7 release. By default, this feature (cachefree equals lotsfree) is disabled.

Data Type

Unsigned long

Default

Value of lotsfree unless priority_paging is set, which means cachefree is 2 times lotsfree

Range

lotsfree to physical memory on system

Units

Pages

Dynamic?

Yes

Validation

If less than lotsfree, it is reset to the value of lotsfree.

When to Change

Should always be enabled unless the system is tight on memory, and does excessive I/O where the contents of the files are needed in the future.

Commitment Level

Obsolete

General Kernel Variables

noexec_user_stack (Solaris 2.6 and Solaris 7 Releases)

Description

Introduced in the Solaris 2.6 release to allow the stack to be marked as non-executable. This helps make buffer-overflow attacks more difficult.

In the Solaris 2.6 release, the value does not affect threaded applications. All 64-bit Solaris applications effectively make all stacks non-executable irrespective of the setting of this variable.


Note –

This variable exists on all systems running Solaris 2.6 or later, but it is only effective on sun4u, sun4m, and sun4d architectures.


Data Type

Signed integer

Default

0 (disabled)

Range

0 (disabled), 1 (enabled)

Units

Toggle (on/off)

Dynamic?

Yes. Does not affect currently running processes—only those created after the value is set.

Validation

None

When to Change

Should be enabled at all times unless applications are deliberately placing executable code on the stack without using mprotect(2) to make the stack executable.

Commitment Level

Unstable

General I/O

rlim_fd_cur (Solaris 7 Release and Earlier)

Description

"Soft" limit on file descriptors that a single process can have open. A process might adjust its file descriptor limit to any value up to the "hard" limit defined by rlim_fd_max by using the setrlimit() call or issuing the limit command in whatever shell it is running. You do not require superuser privilege to adjust the limit to any value less than or equal to the hard limit.

Data Type

Signed integer

Default

64

Range

1 to MAXINT

Units

File descriptors

Dynamic?

No. Loaded into rlimits structure.

Validation

Compared to rlim_fd_max and if rlim_fd_cur is greater than rlim_fd_max, rlim_fd_cur is reset to rlim_fd_max.

When to Change

When the default number of open files for a process is not enough. Increasing this value means only that it is possibly not necessary for a program to use setrlimit(2) to increase the maximum number of file descriptors available to it.

Commitment Level

Unstable

segkpsize (Solaris 7 and Earlier Releases)

Description

Specify the amount of kernel pageable memory available. This memory is used primarily for kernel thread stacks. Increasing this number allows either larger stacks for the same number of threads or more threads. This parameter can only be set on 64–bit kernels. 64-bit kernels use a default stack size of 24 Kbytes.

Available for the Solaris 7 release with patch 106541-04 or the Solaris 7 5/99 and Solaris 8 releases.

Data Type

Unsigned long

Default

64–bit kernels, 2 Gbytes

32–bit kernels, 512 Mbytes

Range

64–bit kernels, 512 Mbytes - 24 Gbytes

32-bit kernels, 512 Mbytes

Units

Mbytes

Dynamic?

No

Validation

None

When to Change

Increase when more threads are desired.

Commitment Level

Unstable

Pseudo Terminals

pt_cnt (Solaris 7 and Earlier Releases)

Description

Number of /dev/pts (the pseudo terminal devices used by telnet or rlogin for network logins) entries to create on a reconfiguration boot. This parameter effectively limits the number of users that can simultaneously be logged in across the net to the value of pt_cnt. You must do a reconfiguration boot (boot -r) after making the change to the /etc/system file for the additional device nodes to be created.

Data Type

Signed integer

Default

48

Range

0 to maxpid

Units

logins/windows

Dynamic?

No

Validation

None. Excessively large values hang the system.

When to Change

When the desired number of users cannot log in to the system.

Commitment Level

Unstable

Sun4u Specific

enable_grp_ism (Solaris 2.6 Release)

Description

Enables a shared memory Translation Setaside Buffer (TSB) capability for System V Shared Memory that has been attached with the SHARE_MMU flag set. This parameter is available in, at minimum, patch 105181-05 for the Solaris 2.6 release. Starting with the Solaris 7 release, the parameter name has been removed, but the system implements this parameter by default.

Data Type

Signed integer

Default

0

Range

0 (disabled) or 1 (enabled)

Dynamic?

No

Validation

None

When to Change

Turn on when using System V Shared Memory attached with the SHARE_MMU flag set.

Commitment Level

Unstable

Parameters With No Functionality

The following section describes parameters whose functionality has been removed, but the parameter might still be available for compatibility reasons. These parameters are ignored if they are set.

Paging-Related Tunables

tune_t_gpgslo

Description

Obsolete. Variable left in place for compatibility reasons.

tune_t_minasmem

Description

Obsolete. Variable left in place for compatibility reasons.

System V Message Parameters

msgsys:msginfo_msgssz

Description

Specifies size of chunks system uses to manage space for message buffers. Obsolete since the Solaris 8 release.

Data Type

Signed integer

Default

40

Range

0 to MAXINT

Dynamic?

No. Loaded into msgtql field of msginfo structure.

Validation

The space consumed by the maximum number of data structures that would be created to support the messages and queues is compared to 25% of the available kernel memory at the time the module is loaded. If the number is too big, the message queue module refuses to load and the facility is unavailable. This computation does include the space that might be consumed by the messages. This situation occurs only when the module is first loaded.

When to Change

When the default value is not enough. Generally changed at the recommendation of software vendors.

Commitment Level

Obsolete

msgsys:msginfo_msgmap

Description

Number of messages the system supports. Obsolete since the Solaris 8 release.

Data Type

Signed integer

Default

100

Range

0 to MAXINT

Dynamic?

No

Validation

The space consumed by the maximum number of data structures that would be created to support the messages and queues is compared to 25% of the available kernel memory at the time the module is loaded. If the number is too big, the message queue module refuses to load and the facility is unavailable. This computation does include the space that might be consumed by the messages. This situation occurs only when the module is first loaded.

When to Change

When the default value is not enough. Generally changed at the recommendation of software vendors.

Commitment Level

Obsolete

msgsys:msginfo_msgseg

Description

Number of msginfo_msgssz segments the system uses as a pool for available message memory. Total memory available for messages is msginfo_msgseg * msginfo_msgssz. Obsolete as of the Solaris 8 release.

Data Type

Signed short

Default

1024

Range

0 to 32,767

Dynamic?

No

Validation

The space consumed by the maximum number of data structures that would be created to support the messages and queues is compared to 25% of the available kernel memory at the time the module is loaded. If the number is too big, the message queue module refuses to load and the facility is unavailable. This computation does not include the space that might be consumed by the messages. This situation occurs only when the module is first loaded.

When to Change

When the default value is not enough. Generally changed at the recommendation of software vendors.

Commitment Level

Obsolete

System V Semaphore Parameters

semsys:seminfo_semmap

Obsolete. Variable is present in kernel for compatibility reasons but is no longer used.

semsys:seminfo_semusz

Obsolete. Any values entered are ignored.

NFS Module Parameters

nfs:nfs_32_time_ok

Obsolete as of the Solaris 8 release.

nfs:nfs_acl_cache

Obsolete as of the Solaris 2.6 release.