Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF (772 KB)
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.
- 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 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 the Solaris
2.6, 7, or 8 releases, 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.
|