docs.sun.com/db/doc/816-0607/6m735r5ev?a=view
Chapter 1 Overview of Solaris System Tuning This section provides overview information about the format of the tuning information in this manual. Tuning a Solaris System Tuning Format Tuning the Solaris Kernel Tuning a Solaris System Solaris is a multi-threaded, scalable UNIX TM operating environment running on SPARC and Intel processors. 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 systems /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 Changes From Previous Release 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 : . 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.
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. 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. Yes, if it can be changed on a running system with the adb , mdb , or kadb debuggers. 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. When to Change Why someone might want to change this value including error messages or return codes. Many of the parameters in this manual are still evolving and are classified as unstable. Change History If applicable, contains a link to the Change History appendix, which describes parameter changes from release to release. Changes From Previous Release If applicable, contains a link to the Revision History appendix, which describes corrections from release to release. Tuning the Solaris Kernel The table below describes the different ways tuning parameters can be applied.
Values specified in this file are read at boot time and are applied. Any changes made to the file are not applied to the operating system until the system is rebooted. Prior to the Solaris 8 release, /etc/system entries that set the values of system variables were applied in two phases: The first phase obtains various bootstrap variables for example, maxusers to initialize key system parameters. The second phase calculates the base configuration by using the bootstrap variables, and all values entered in the /etc/system file are applied. In the case of the bootstrap variables, reapplied values replace the values calculated or reset in the initialization phase. The second phase sometimes caused confusion to users and administrators by setting variables to values that seem to be impermissible or assigning values to variables for example, max_nprocs that have a value overridden during the initial configuration. In the Solaris 8 release, one pass is made to set all the values before the configuration parameters are calculated. ExampleSetting a Parameter in /etc/system The following /etc/system entry sets the number of read-ahead blocks that are read for file systems mounted using NFS version 2 software.
Replace maxusers with the actual address of the item to be changed as well as the value the variable is to be set to. See the Solaris Modular Debugger Guide for more information on using the modular debugger. When using adb , kadb , and mdb , the module name prefix is not required because after a module is loaded, its symbols form a common name space with the core kernel symbols and any other previously loaded module symbols. For example, ufs:ufs_WRITES would be accessed as ufs_WRITES in each of the debuggers assuming the UFS module is loaded, but would require the ufs: prefix when set in the /etc/system file. Including the module name prefix using adb or kadb results in an undefined symbol message. Special Structures Solaris tuning variables come in a variety of forms.
After the kernel is initialized, all references to values of these variables are found in the appropriate field of the tune structure. Various documents for example, previous versions of Solaris System Administration Guide, Volume 2 have stated that the proper way to set variables in the tune structure is to use the syntax, tune: field-name where field name is replaced by the actual variable name listed above. The proper way to set variables for this structure at boot time is to initialize the special variable corresponding to the desired field name. The system initialization process then loads these values into the tune structure. A second structure into which various tuning parameters are placed is the var structure named v .
|