Tuning a Solaris System

Solaris is a multi-threaded, scalable UNIXTM operating environment running on SPARC and Intel processors. It is self-adjusting to system load and demands minimal tuning. In some cases, however, tuning is necessary. This guide provides details about the officially supported kernel tuning options available for the Solaris environment.

The Solaris kernel is composed of a core portion, which is always loaded, and a number of loadable modules that are loaded as references are made to them. Many of the variables referred to in the kernel portion of this guide are in the core portion, but a few are located in loadable modules.

A key consideration in system tuning is that setting various system variables is often the least effective thing that can be done to improve performance. Changing the behavior of the application is generally the most effective tuning aid available. Adding more physical memory and balancing disk I/O patterns are also useful. In a few rare cases, changing one of the variables described in this guide will have a substantial effect on system performance.

Another thing to remember is that one system's /etc/system settings might not be applicable, either wholly or in part, to another environment. Carefully consider the values in the file with respect to the environment in which they will be applied. Make sure that you understand the behavior of a system before attempting to apply changes to the system variables described here.

Caution –

The variables described here and their meanings can and do change from release to release. A release is either a Solaris Update release or a new version such as Solaris 8. Publication of these variables and their description does not preclude changes to the variables and descriptions without notice.

Tuning Format

The format for the description of each variable follows:

Variable-Name

Description

Data Type

Default

Units

Range

Dynamic?

Validation

Implicit

When to Change

Commitment Level

Change History

Variable-Name

Variable-Name is the exact name that would be typed in the /etc/system file, or found in the /etc/default/facility file.

Most names are of the form variable where the variable name does not contain a colon (:). These names refer to variables in the core portion of the kernel. If the name does contain a colon, the characters to the left of the colon reference the name of a loadable module. The name of the variable within the module consists of the characters to the right of the colon. For example:

module_name:variable

Description

This section briefly describes what the variable does or controls.

Data Type

Signed or unsigned short or long integer with the following distinctions:

On a system running a 32-bit kernel, a long is the same size as an integer.

On a system running a 64-bit kernel, a long is twice the width in bits as an integer. For example, an unsigned integer = 32 bits, an unsigned long = 64 bits.

Default

What the system uses as the default value.

Units

(Optional) Description of unit type.

Range

Possible range allowed by system validation or the bounds of the data type.

MAXINT — A shorthand description for the maximum value of a signed integer (2,147,483,647).

MAXUINT — A shorthand description for the maximum value of an unsigned integer (4,294,967,295).

Dynamic?

Yes, if it can be changed on a running system with the adb, mdb, or kadb debuggers. No, if it is a boot time initialization only.

Validation

Identifies checks the system applies to the value of the variable either as entered from the /etc/system file or the default value, as well as when the validation is applied.

Implicit

(Optional) Unstated constraints that might exist on the variable, especially in relation to other variables.