Document Information
Preface
1. Overview of Solaris System Tuning
2. Solaris Kernel Tunable Parameters
Where to Find Tunable Parameter Information
fsflush and Related Parameters
Process-Sizing Parameters
Paging-Related Parameters
Swapping-Related Parameters
Kernel Memory Allocator
General Driver Parameter
General I/O Parameters
General File System Parameters
UFS Parameters
TMPFS Parameters
Pseudo Terminals
STREAMS Parameters
System V Message Queues
System V Semaphores
System V Shared Memory
Scheduling
Timers
sun4u or sun4v Specific Parameters
Solaris Volume Manager Parameters
Network Driver Parameters
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 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
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
2 x PAGESIZE on x86 systems
5 x PAGESIZE on AMD64 systems
- Range
Minimum is the default values:
3 x PAGESIZE on SPARC systems
2 x PAGESIZE on x86 systems
5 x PAGESIZE on AMD64 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
-
8192 for x86 platforms
24,576 for SPARC platforms
20,480 for AMD64 platforms
- Range
Minimum is the default values:
3 x PAGESIZE on SPARC systems
2 x PAGESIZE on x86 systems
5 x PAGESIZE on AMD64 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
- Change History
For information, see lwp_default_stksize (Solaris 9 Releases).
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. This parameter can only be set on a system running a 64-bit kernel. A system running a 64-bit kernel uses 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 to 24 Gbytes
- Units
8-Kbyte pages
- Dynamic?
No
- Validation
Value is compared to minimum and maximum sizes (512 Mbytes and 24 Gbytes for 64-bit systems). If smaller than the minimum or larger than the maximum, it is reset to 2 Gbytes. 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 Gbytes, assuming at least 1 Gbyte of physical memory is present. This default size 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 (Solaris 9 12/02 Release).
noexec_user_stack
- Description
Enables the stack to be marked as nonexecutable, which helps make buffer-overflow attacks more difficult. A 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 on systems running 64-bit or 32-bit kernels.
Note - This parameter exists on all systems running the Solaris 2.6, 7, 8, 9, or 10 releases, but it is only effective on 64–bit SPARC and AMD64 architectures.
- 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
- Change History
For information, see noexec_user_stack (Solaris 9 Releases).
|