1. Overview of Oracle Solaris System Tuning
2. Oracle Solaris Kernel Tunable Parameters
4. Internet Protocol Suite Tunable Parameters
5. Network Cache and Accelerator Tunable Parameters
A. Tunable Parameters Change History
max_nprocs (Solaris 9 Releases)
ddi_msix_alloc_limit (Solaris 10 Release and OpenSolaris 2009.06 Release)
General I/O Tunable Parameters
rlim_fd_max (Solaris 8 Release)
General Kernel and Memory Parameters
zfs_arc_min (Solaris 10 Releases)
zfs_arc_max (Solaris 10 Releases)
noexec_user_stack (Solaris 9 Releases)
lwp_default_stksize (Solaris 9 Releases)
noexec_user_stack (Solaris 2.6, 7, and 8 Releases)
segkpsize (Solaris 9 12/02 Release)
fsflush and Related Parameters
dopageflush (Solaris 10 Releases)
Paging-Related Tunable Parameters
pages_pp_maximum (Solaris Releases Prior to Solaris 9 Releases)
General File System Parameters
ncsize (Solaris 9 and Previous Releases)
tmpfs:tmpfs_maxkmem (Solaris 10 Releases)
tmpfs:tmpfs_minfree (Solaris 8 Releases)
sun4u or sun4v Specific Parameters (Solaris 10 Releases)
default_tsb_size (Solaris 10 Releases)
nfs:nfs_write_error_interval (Solaris 9 8/03)
nfs:nfs_write_error_to_cons_only (Solaris 9 8/03)
nfs:nfs_disable_rddir_cache (Solaris 9 8/03)
nfs:nfs3_max_transfer_size (Solaris 9 8/03)
tcp_local_dack_interval (Solaris 10 Releases)
ip_forward_src_routed and ip6_forward_src_routed (Solaris 10 Release)
ip_multidata_outbound (Solaris 10 Release)
ip_multidata_outbound (Solaris 9 Release)
ip_squeue_fanout (Solaris 10 11/06 Release)
ip_squeue_worker_wait (Solaris 10 11/06 Release)
ip_soft_rings_cnt (Solaris 10 11/06 Release)
ip_squeue_write (Solaris 10 Release)
tcp_conn_hash_size (Solaris 9 Releases)
tcp_wscale_always (Solaris 9 Releases)
ipc_tcp_conn_hash_size (Solaris 9 Releases)
tcp_compression_enabled (Solaris 9 Releases)
ip_forwarding and ip6_forwarding (Solaris 9 Releases)
xxx:ip_forwarding (Solaris 9 Releases)
tcp_conn_req_max_q0 (Solaris 8 Release)
udp_xmit_hiwat (Solaris 9 Releases)
udp_recv_hiwat (Solaris 9 Releases)
udp_max_buf (Solaris 9 Releases)
Network Cache and Accelerator (NCA) Tunable Parameters
sq_max_size (Solaris 9 12/02 Release)
Parameters That Are Obsolete or Have Been Removed
cachefree (Solaris 8 Releases)
priority_paging (Solaris 8 Releases)
System V Message Queue Parameters
msgsys:msginfo_msgmni (Solaris 9 Releases)
msgsys:msginfo_msgtql (Solaris 9 Releases)
msgsys:msginfo_msgmnb (Solaris 9 Releases)
msgsys:msginfo_msgssz (Solaris 9 Releases)
msgsys:msginfo_msgmap (Solaris 9 Releases)
msgsys:msginfo_msgseg (Solaris 9 Releases)
msgsys:msginfo_msgmax (Solaris 9 Releases)
semsys:seminfo_semmni (Solaris 9 Releases)
semsys:seminfo_semmsl (Solaris 9 Releases)
semsys:seminfo_semopm (Solaris 9 Releases)
semsys:seminfo_semmns (Solaris 9 Releases)
semsys:seminfo_semmnu (Solaris 9 Releases)
semsys:seminfo_semume (Solaris 9 Releases)
semsys:seminfo_semvmx (Solaris 9 Releases)
semsys:seminfo_semaem (Solaris 9 Releases)
System V Shared Memory Parameters
shmsys:shminfo_shmmni (Solaris 9 Releases)
shmsys:shminfo_shmmax (Solaris 9 Releases)
shmsys:shminfo_shmmin (Solaris 8 Release)
shmsys:shminfo_shmseg (Solaris 8 Release)
The Solaris 10 description section was updated by removing the text “sun4m.”
This parameter is new starting in the Solaris 10 10/09 release and the OpenSolaris 2009.06 release. For more information, see ddi_msix_alloc_limit.
The default value is updated to include sun4v systems. For more information, see maxphys.
The text “126,976 (sun4m)” was removed from the Solaris 10 maxphys default section.
In the Solaris 8 version, the default is 1024. In later Solaris releases, the default is 65,536.
This parameter description is newly documented in the Solaris 10 10/09 release. For more information, see zfs_arc_min.
This parameter description is newly documented in the Solaris 10 10/09 release. For more information, see zfs_arc_max.
The Solaris 10 description section was updated by removing the text “and sun4m” and adding the text “64–bit SPARC and AMD64.”
The Solaris 10 description section was updated by adding default and maximum values for AMD64.
The Solaris 10 default value for SPARC platforms was changed to 24,576.
The Solaris 9 description section was updated by removing the text “and sun4d.”
In previous Solaris 9 releases, units were incorrectly identified as Mbytes instead of 8-Kbyte pages. In addition, the following text is removed from the range and default descriptions in the Solaris 10 release because this parameter is only available on systems running 64-bit kernels:
32-bit kernels, 512 Mbytes
In the Solaris 10 10/08 release, the description was clarified by including that number of physical memory pages are examined.
In the Solaris 10 versions, the range value was incorrectly documented as 1 to 1024. The actual range depends on system architecture and I/O subsystems. For more information, see maxpgio.
In the Solaris 8 versions, the default description is as follows:
Maximum of the triplet (200, tune_t_minarmem + 100, [10% of memory available at boot time])
In the Solaris 9 release and previous releases, the nfs:nrnode parameter was incorrectly identified as nfs:nfs_rnode in the when to change description.
In the Solaris 10 release, the default value of the ncsize parameter was incorrectly described as follows:
4 x (v.v_proc + maxusers) + 320 / 100
The correct default value is as follows:
(4 x (v.v_proc + maxusers) + 320) + (4 x (v.v_proc + maxusers) + 320 / 100
For more information, see ncsize.
This parameter information changed significantly in the Solaris 10 release. Please see bufhwm and bufhwm_pct for more information.
Maximum amount of memory for caching I/O buffers. The buffers are used for writing file system metadata (superblocks, inodes, indirect blocks, and directories). Buffers are allocated as needed until the amount to be allocated would exceed bufhwm. At this point, enough buffers are reclaimed to satisfy the request.
For historical reasons, this parameter does not require the ufs: prefix.
Signed integer
2% of physical memory
80 Kbytes to 20% of physical memory
Kbytes
No. Value is used to compute hash bucket sizes and is then stored into a data structure that adjusts the value in the field as buffers are allocated and deallocated. Attempting to adjust this value without following the locking protocol on a running system can lead to incorrect operation.
If bufhwm is less than 80 Kbytes or greater than the lesser of 20% of physical memory or twice the current amount of kernel heap, it is reset to the lesser of 20% of physical memory or twice the current amount of kernel heap. The following message appears on the system console and in the /var/adm/messages file.
"binit: bufhwm out of range (value attempted). Using N."
Value attempted refers to the value entered in /etc/system or by using the kadb -d command. N is the value computed by the system based on available system memory.
Since buffers are only allocated as they are needed, the overhead from the default setting is the allocation of a number of control structures to handle the maximum possible number of buffers. These structures consume 52 bytes per potential buffer on a 32–bit kernel and 104 bytes per potential buffer on a 64–bit kernel. On a 512 Mbyte 64–bit kernel this consumes 104*10144 bytes, or 1 Mbyte. The header allocations assumes buffers are 1 Kbyte in size, although in most cases, the buffer size is larger.
The amount of memory, which has not been allocated in the buffer pool, can be found by looking at the bfreelist structure in the kernel with a kernel debugger. The field of interest in the structure is bufsize, which is the possible remaining memory in bytes. Looking at it with the buf macro by using mdb:
# mdb -kLoading modules: [ unix krtld genunix ip nfs ipc ] > bfreelist$<buf bfreelist: [ elided ] bfreelist + 0x78: bufsize [ elided ] 75734016
bufhwm on this system, with 6 Gbytes of memory, is 122277. It is not directly possible to determine the number of header structures used since the actual buffer size requested is usually larger than 1 Kbyte. However, some space might be profitably reclaimed from control structure allocation for this system.
The same structure on the 512 Mbyte system shows that only 4 Kbytes of 10144 Kbytes has not been allocated. When the biostats kstat is examined with kstat -n biostats, it is seen that the system had a reasonable ratio of buffer_cache_hits to buffer_cache_lookups as well. This indicates that the default setting is reasonable for that system.
Unstable
The range description is updated to include sun4v systems. For more information, see tmpfs:tmpfs_maxkmem.
In the Solaris 8 versions, the units was incorrectly described as “Bytes,” instead of “Pages.”
The title of the Sun-4u Specific Parameters section was revised in the Solaris 10 8/07 release to include sun4v systems.
The default description has changed. For more information, see default_tsb_size.
The description and default and range values have changed. For more information, see enable_tsb_rss_sizing.
The when to change example text was changed to this:
For example, changing tsb_rss_factor to 256 (effectively, 50%) instead of 384 (effectively, 75%) might help eliminate virtual address conflicts in the TSB in some cases, but will use more kernel memory, particularly on a heavily loaded system.