Go to main content

Oracle® Solaris 11.3 Tunable Parameters Reference Manual

Exit Print View

Updated: July 2017
 
 

General Kernel and Memory Parameters

This section describes general kernel parameters that are related to physical memory and stack configuration. For ZFS-related memory parameters, see Oracle Solaris ZFS Tunable Parameters.

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 with sun4u processors

  • 4 x PAGESIZE on SPARC systems with sun4v processors

  • 5 x PAGESIZE on x64 systems

Range

Minimum is the default values:

  • 3 x PAGESIZE on SPARC systems with sun4u processors

  • 4 x PAGESIZE on SPARC systems with sun4v processors

  • 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 the getpagesize(3C) man page.

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

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 the ddi_log_sysevent(9F) and sysevent_post_event(3SYSEVENT) man pages.

When to Change

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

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. Any stack size that you specify is increased by a one-page redzone.

Data Type

Integer

Default
  • Default SPARC stack size is 3 pages (3 x 8,192 = 24,576) + 8 KB redzone

  • Default x64 stack size is 5 pages (5 x 4,096 = 20,480) + 4 KB redzone

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 the getpagesize(3C) man page.

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

noexec_user_stack


Note -  Although noexec_user_stack is still operational, this parameter is deprecated in this Oracle Solaris release. Use the nxheap and nxstack security extensions instead. You can control and configure Oracle Solaris extensions at the system level and at the process level with the sxadm command.

For procedures and examples that show the use of nxheap and nxstack, see Protecting the Process Heap and Executable Stacks From Compromise in Securing Systems and Attached Devices in Oracle Solaris 11.3.

For more information about the sxadm command, see the sxadm(1M) man page.

For guidelines to secure and harden Oracle Solaris, see Oracle Solaris 11.3 Security and Hardening Guidelines.


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 the stacks of all 32-bit applications nonexecutable by default if they weren't linked with the nxstack security extensions flag. This parameter, together with noexec_user_stack_log, can be set in a file in the /etc/system.d directory. See Protecting the Process Heap and Executable Stacks From Compromise in Securing Systems and Attached Devices in Oracle Solaris 11.3

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 the mprotect(2) man page.

Commitment Level

Unstable

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

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. Default system thread stack sizes are described in lwp_default_stksize.

  • SPARC: This parameter can be modified in a file in the /etc/system.d directory.

  • x64: This parameter can be only be modified as follows:

    • Boot under the kernel debugger

    • Set a breakpoint at the beginning of the system startup process

    • Set the desired value

Data Type

Unsigned long

Default

2 GB x the smaller result of nCPUs / 128 or the amount of physical memory / 256 GB

Range

512 MB to 64 GB (SPARC)

200 MB to 8 GB (x64)

Units

Pages

Dynamic?

No

Validation

Value is compared to minimum and maximum sizes. If smaller than the minimum or larger than the maximum, it is reset to 2 GB. A message to that effect is displayed.

On SPARC systems, the segkpsize value cannot exceed twice the size of physical memory. On x64 systems, the value cannot exceed the size of physical memory.

When to Change

Required to support large numbers of processes on a system. The default size allows creation of 32- KB stacks for 65,535 kernel threads. The size of a kernel stack in a 64-bit kernel is the same whether the process is a 32-bit process or a 64-bit process.

Commitment Level

Unstable