|
| 以 PDF 格式下載這本書 (834 KB)
Appendix A Tunable Parameter Change History
This chapter 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
the/etc/system
file 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.
cachefree (Solaris 8 Releases)
- Description
-
The Solaris 8 release
changes the way file system pages are cached. These changes subsume the priority
paging capability.
Note –
Remove both cachefree and priority_paging settings in the /etc/system
file.
The caching changes remove most of the pressure on the virtual memory
system resulting from file system activity. Several statistics exhibit new
behavior:
-
Page reclaims are higher because pages are now explicitly
added to the free list after I/O completes.
-
Free memory is now higher because the free memory count now
includes a large component of the file cache.
-
Scan rates are drastically reduced.
- Commitment Level
-
Obsolete
- Change History
-
See cachefree (Solaris 2.6 and Solaris 7 Releases)
for more information.
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
priority_paging (Solaris 8 Releases)
- Description
-
This variable sets cachefree to 2 times lotsfree.
The Solaris 8 release changes the way file system pages are cached.
These changes subsume the priority paging capability.
Note –
Remove both cachefree and priority_paging settings in the /etc/system
file.
- Commitment Level
-
Obsolete
- Change History
-
See priority_paging (Solaris 2.6 and 7 Releases)
for more information.
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 mdb 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
tmpfs:tmpfs_minfree
- Description
-
Minimum amount of swap
space that TMPFS leaves for the rest of the system.
- Data Type
-
Signed long
- Default
-
256
- Range
-
0 to maximum swap space size
- Units
-
Bytes
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
To maintain a reasonable
amount of swap space on systems with large amounts of TMPFS usage, you can
increase this number. The limit has been reached when the console or system
messages file displays the following message.
fs-name: File system full, swap space limit exceeded
|
- Commitment Level
-
Unstable
pages_pp_maximum (Pre-Solaris 9 Releases)
- Description
-
Defines the number of
pages that the system requires be unlocked. If a request to lock pages would
force available memory below this value, that request is refused.
- Data Type
-
Unsigned long
- Default
-
Maximum of the triplet (200, tune_t_minarmem + 100, [10% of memory available at boot time])
- Range
-
Default value to no more than
20% of physical memory. The systems does no enforcement of this range other
than that described in the Validation section.
- Units
-
Pages
- Dynamic?
-
Yes, unless dynamic reconfiguration
operations that add or delete memory occur. At that point, the value is reset
to whatever was provided in the /etc/system file or was
calculated.
- Validation
-
Maximum of the quadruplet
(200, tune_t_minarmem + 100, [10% of memory available],
and the value from /etc/system). No message is displayed
if the value from /etc/system is increased. Done only
at boot time.
- When to Change
-
When memory locking
requests or attaching to a shared memory segment with the SHARE_MMU flag fails, yet the amount of memory available seems to be sufficient.
Keeping 10% of memory free on a 32-Gbyte system might be excessive.
Excessively large values can cause memory locking requests to fail unnecessarily.
- Commitment Level
-
Unstable
General Kernel Variables
noexec_user_stack (Solaris 2.6, 7, and 8 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 release, 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 (Pre-Solaris 7 and the Solaris 7 Release)
- 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
rlim_fd_max (Solaris 8 Release)
- Description
-
“Hard” limit
on file descriptors that a single process might have open. To override this
limit requires superuser privilege.
- Data Type
-
Signed integer
- Default
-
1024
- Range
-
1 to MAXINT
- Units
-
File descriptors
- Dynamic?
-
No
- Validation
-
None
- When to Change
-
When the maximum
number of open files for a process is not enough. Note that other limitations
in system facilities can mean that a larger number of file descriptors is
not as useful as it might be:
-
A 32-bit program using standard I/O is limited to 256 file
descriptors. A 64-bit program using standard I/O can use up to 2 billion descriptors.
-
select(3C)
is by default limited to 1024 descriptors per fd_set. Starting
with the Solaris 7 release, 32-bit application code can be recompiled with
a larger fd_set size (less than or equal to 65,536). A
64-bit application sees an fd_set size of 65,536, which
cannot be changed.
An alternative to changing this on a system wide basis is to use the plimit(1) command.
If a parent process has its limits changed by plimit, all
children inherit the increased limit. This is useful for daemons such as inetd.
- Commitment Level
-
Unstable
General File System
segkpsize (Solaris 9 4/03 Release)
This parameter was moved to the General Parameters section of Chapter 2, Solaris Kernel Tunables and was updated. For more information, see segkpsize.
segkpsize (Solaris 9 12/02 Release)
- 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
systems running 64–bit kernels. Systems running 64-bit kernels use a
default stack size of 24 Kbytes.
- 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
-
Value is compared to
minimum and maximum sizes (512 Mbytes and 24 Gbytes for 64-bit systems) and
if smaller than the minimum or larger than the maximum, it is reset to 2 Gbytes
and a message to that effect is displayed.
The actual size used in creation of the cache is the lesser of the value
specified in segkpsize after the constraints checking and
50% of physical memory.
- When to Change
-
This is one of the
steps necessary to support large numbers of processes on a system. The default
size of 2 Gbytes, assuming at least 1 Gbyte of physical memory is present,
allows creation of 24–Kbyte stacks for more than 87,000 kernel threads.
The size of a stack in a 64-bit kernel is the same whether the process is
a 32-bit process or a 64-bit process. If more than this number is needed, segkpsize can be increased assuming sufficient physical memory exists.
- Commitment Level
-
Unstable
- Change History
-
For information,
see segkpsize (Pre-Solaris 7 and the Solaris 7 Release).
segkpsize (Pre-Solaris 7 and the Solaris 7 Release)
- 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 (Pre-Solaris 7 and the Solaris 7 Release)
- 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
System V Shared Memory
shmsys:shminfo_shmmax (Solaris 9 12/02)
- Description
-
Maximum size of system
V shared memory segment that can be created. This parameter is an upper limit
that is checked before the system sees if it actually has the physical resources
to create the requested memory segment.
Attempts to create a shared memory section whose size is zero or whose
size is larger than the specified value will fail with an EINVAL error.
- Data Type
-
Unsigned long
- Default
-
8,388,608
- Range
-
0 - MAXINT on 32-bit systems,
MAXINT64 on 64-bit systems
- Units
-
Bytes
- Dynamic?
-
No. Loaded into shmmax field of shminfo structure.
- Validation
-
None
- When to Change
-
When the default
value is too low. Generally changed at the recommendation of software vendors,
but unless the size of a shared memory segment needs to be constrained, setting
this parameter to the maximum possible value has no side effects.
- Commitment Level
-
Unstable
Network Cache and Accelerator (NCA) Tunable Parameters
sq_max_size (Solaris 9 12/02 Release)
- Description
-
The depth of the syncq
(number of messages) before a destination streams queue generates a QFULL message.
- Default
-
2 messages
- Range
-
1 to 0 (unlimited)
- Dynamic?
-
No
- When to Change
-
When NCA is running
on a system with a lot of memory, increase this parameter to allow drivers
to queue more packets of data. If a server is under heavy load, increase this
parameter so modules and drivers may process more data without dropping
packets or getting backlogged.
- 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 msginfostructure.
- 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.
System V Shared Memory
shmsys:shminfo_shmmin
Obsolete. Variable is present in kernel for compatibility reasons but
is no longer used.
shmsys:shminfo_shmseg
Obsolete. Variable is present in kernel for compatibility reasons but
is no longer used.
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.
|