JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Solaris Tunable Parameters Reference Manual     Oracle Solaris 11 Information Library
search filter icon
search icon

Document Information

Preface

1.  Overview of Oracle Solaris System Tuning

2.  Oracle Solaris Kernel Tunable Parameters

Where to Find Tunable Parameter Information

General Kernel and Memory Parameters

physmem

zfs_arc_min

zfs_arc_max

default_stksize

lwp_default_stksize

logevent_max_q_sz

segkpsize

noexec_user_stack

fsflush and Related Parameters

fsflush

tune_t_fsflushr

autoup

dopageflush

doiflush

Process-Sizing Parameters

maxusers

reserved_procs

pidmax

max_nprocs

maxuprc

ngroups_max

Paging-Related Parameters

lotsfree

desfree

minfree

throttlefree

pageout_reserve

pages_pp_maximum

tune_t_minarmem

fastscan

slowscan

min_percent_cpu

handspreadpages

pages_before_pager

maxpgio

Swapping-Related Parameters

swapfs_reserve

swapfs_minfree

Kernel Memory Allocator

kmem_flags

kmem_stackinfo

General Driver Parameters

moddebug

ddi_msix_alloc_limit

Network Driver Parameters

igb Parameters

mr_enable

intr_force

ixgbe Parameters

tx_queue_number

rx_queue_number

intr_throttling

rx_limit_per_intr

tx_ring_size

rx_ring_size

tx_copy_threshold

rx_copy_threshold

General I/O Parameters

maxphys

rlim_fd_max

rlim_fd_cur

General File System Parameters

ncsize

dnlc_dir_enable

dnlc_dir_min_size

dnlc_dir_max_size

TMPFS Parameters

tmpfs:tmpfs_maxkmem

tmpfs:tmpfs_minfree

Pseudo Terminals

pt_cnt

pt_pctofmem

pt_max_pty

STREAMS Parameters

nstrpush

strmsgsz

strctlsz

System V Message Queues

System V Semaphores

System V Shared Memory

segspt_minfree

Scheduling

disp_rechoose_interval

Timers

hires_tick

timer_max

SPARC System Specific Parameters

consistent_coloring

tsb_alloc_hiwater_factor

default_tsb_size

enable_tsb_rss_sizing

tsb_rss_factor

Locality Group Parameters

lpg_alloc_prefer

lgrp_mem_default_policy

lgrp_mem_pset_aware

3.  NFS Tunable Parameters

4.  Internet Protocol Suite Tunable Parameters

5.  Network Cache and Accelerator Tunable Parameters

6.  System Facility Parameters

A.  Tunable Parameters Change History

B.  Revision History for This Manual

Index

General Kernel and Memory Parameters

This section describes general kernel parameters that are related to physical memory and stack configuration.

physmem

Description

Modifies the system's configuration of the number of physical pages of memory after the Oracle Solaris OS and firmware are accounted for.

Data Type

Unsigned long

Default

Number of usable pages of physical memory available on the system, not counting the memory where the core kernel and data are stored

Range

1 to amount of physical memory on system

Units

Pages

Dynamic?

No

Validation

None

When to Change

Whenever you want to test the effect of running the system with less physical memory. Because this parameter does not take into account the memory used by the core kernel and data, as well as various other data structures allocated early in the startup process, the value of physmem should be less than the actual number of pages that represent the smaller amount of memory.

Commitment Level

Unstable

zfs_arc_min

Description

Determines the minimum size of the ZFS Adaptive Replacement Cache (ARC). See also zfs_arc_max.

Data Type

Unsigned Integer (64-bit)

Default

64 MB

Range

64 MB to zfs_arc_max

Units

Bytes

Dynamic?

No

Validation

Yes, the range is validated.

When to Change

When a system's workload demand for memory fluctuates, the ZFS ARC caches data at a period of weak demand and then shrinks at a period of strong demand. However, ZFS does not shrink below the value of zfs_arc_min. Generally, you do not need to change the default value.

Commitment Level

Unstable

Change History

For information, see zfs_arc_min (Oracle Solaris 11).

zfs_arc_max

Description

Determines the maximum size of the ZFS Adaptive Replacement Cache (ARC). See also zfs_arc_min.

Data Type

Unsigned Integer (64-bit)

Default

Three-fourths of memory on systems with less than 4 GB of memory

physmem minus 1 GB on systems with greater than 4 GB of memory

Range

64 MB to physmem

Units

Bytes

Dynamic?

No

Validation

Yes, the range is validated.

When to Change

If a future memory requirement is significantly large and well defined, you might consider reducing the value of this parameter to cap the ARC so that it does not compete with the memory requirement. For example, if you know that a future workload requires 20% of memory, it makes sense to cap the ARC such that it does not consume more than the remaining 80% of memory.

Commitment Level

Unstable

Change History

For information, see zfs_arc_max (Oracle Solaris 11).

default_stksize

Description

Specifies the default stack size of all threads. No thread can be created with a stack size smaller than default_stksize. If default_stksize is set, it overrides lwp_default_stksize. See also lwp_default_stksize.

Data Type

Integer

Default
  • 3 x PAGESIZE on SPARC systems

  • 5 x PAGESIZE on x64 systems

Range

Minimum is the default values:

  • 3 x PAGESIZE on SPARC systems

  • 5 x PAGESIZE on x64 systems

Maximum is 32 times the default value.

Units

Bytes in multiples of the value returned by the getpagesize parameter. For more information, see getpagesize(3C).

Dynamic?

Yes. Affects threads created after the variable is changed.

Validation

Must be greater than or equal to 8192 and less than or equal to 262,144 (256 x 1024). Also must be a multiple of the system page size. If these conditions are not met, the following message is displayed:

Illegal stack size, Using N

The value of N is the default value of default_stksize.

When to Change

When the system panics because it has run out of stack space. The best solution for this problem is to determine why the system is running out of space and then make a correction.

Increasing the default stack size means that almost every kernel thread will have a larger stack, resulting in increased kernel memory consumption for no good reason. Generally, that space will be unused. The increased consumption means other resources that are competing for the same pool of memory will have the amount of space available to them reduced, possibly decreasing the system's ability to perform work. Among the side effects is a reduction in the number of threads that the kernel can create. This solution should be treated as no more than an interim workaround until the root cause is remedied.

Commitment Level

Unstable

lwp_default_stksize

Description

Specifies the default value of the stack size to be used when a kernel thread is created, and when the calling routine does not provide an explicit size to be used.

Data Type

Integer

Default
  • 24,576 for SPARC platforms

  • 20,480 for x64 platforms

Range

Minimum is the default values:

  • 3 x PAGESIZE on SPARC systems

  • 5 x PAGESIZE on x64 systems

Maximum is 32 times the default value.

Units

Bytes in multiples of the value returned by the getpagesize parameter. For more information, see getpagesize(3C).

Dynamic?

Yes. Affects threads created after the variable is changed.

Validation

Must be greater than or equal to 8192 and less than or equal to 262,144 (256 x 1024). Also must be a multiple of the system page size. If these conditions are not met, the following message is displayed:

Illegal stack size, Using N

The value of N is the default value of lwp_default_stksize.

When to Change

When the system panics because it has run out of stack space. The best solution for this problem is to determine why the system is running out of space and then make a correction.

Increasing the default stack size means that almost every kernel thread will have a larger stack, resulting in increased kernel memory consumption for no good reason. Generally, that space will be unused. The increased consumption means other resources that are competing for the same pool of memory will have the amount of space available to them reduced, possibly decreasing the system's ability to perform work. Among the side effects is a reduction in the number of threads that the kernel can create. This solution should be treated as no more than an interim workaround until the root cause is remedied.

Commitment Level

Unstable

logevent_max_q_sz

Description

Maximum number of system events allowed to be queued and waiting for delivery to the syseventd daemon. Once the size of the system event queue reaches this limit, no other system events are allowed on the queue.

Data Type

Integer

Default

5000

Range

0 to MAXINT

Units

System events

Dynamic?

Yes

Validation

The system event framework checks this value every time a system event is generated by ddi_log_sysevent and sysevent_post_event.

For more information, see ddi_log_sysevent(9F) and sysevent_post_event(3SYSEVENT).

When to Change

When error log messages indicate that a system event failed to be logged, generated, or posted.

Commitment Level

Unstable

segkpsize

Description

Specifies 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. A system running a 64-bit kernel uses a default stack size of 24 KB.

Data Type

Unsigned long

Default

2 GB

Range

512 MB to 24 GB

Units

8-KB pages

Dynamic?

No

Validation

Value is compared to minimum and maximum sizes (512 MB and 24 GB). If smaller than the minimum or larger than the maximum, it is reset to 2 GB. 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 validation checking or 50 percent of physical memory.

When to Change

Required to support large numbers of processes on a system. The default size of 2 GB, assuming at least 1 GB of physical memory is present. This default size allows creation of 24-KB stacks for more than 87,000 kernel threads. The size of a stack 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

noexec_user_stack

Description

Enables the stack to be marked as nonexecutable, which helps make buffer-overflow attacks more difficult.

An Oracle Solaris system running a 64-bit kernel makes the stacks of all 64-bit applications nonexecutable by default. Setting this parameter is necessary to make 32-bit applications nonexecutable.

Data Type

Signed integer

Default

0 (disabled)

Range

0 (disabled) or 1 (enabled)

Units

Toggle (on/off)

Dynamic?

Yes. Does not affect currently running processes, only processes 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 to make the stack executable. For more information, see mprotect(2).

Commitment Level

Unstable