Miscellaneous tunable parameters
Several of the miscellaneous parameters available in AIX are tunable.
AIX_TZCACHE
-
Table 1. AIX_TZCACHE
tunable parameterItem Descriptor Purpose Stores a fixed copy of the TZ variable for the length of a process. Values Default: Not set Possible Values: ON (enables parameter)
Display $AIX_TZCACHE
Change export AIX_TZCACHE=ON
The changes take effect for all processes that later start from this shell. Informs an application to always use the initial starting value of the TZ variable. This process improves performance if frequent time zone lookups are called by an application. For example, if an application frequently checks the local time. However, any changes to the TZ variable are not recognized when the application has already started.
Diagnosis This parameter is not recommended for universal system configuration in the /etc/environment file. Use this parameter for applications that do not alter the TZ variable, but make frequent time zone requests. Tuning Not applicable EXTSHM
-
Table 2. EXTSHM
tunable parameterItem Descriptor Purpose Turns on the extended shared memory facility. Values Default: Not set Possible Values: ON, 1SEG, MSEG
Display echo $EXTSHM
Change export EXTSHM
Change takes effect immediately in this shell. Change is effective until logging out of this shell. Permanent change is made by adding
EXTSHM=ON
,EXTSHM=1SEG
, orEXTSHM=MSEG
command to the /etc/environment file.Diagnosis Not applicable Tuning Setting the value to ON, 1SEG, or MSEG allows a process to allocate shared memory segments as small as 1 byte, rounded to the nearest page. This option effectively removes the limitation of 11 user shared memory segments. For 32-bit processes, the maximum size of all memory segments is 2.75 GB. Setting
EXTSHM
to ON has the same effect as setting the variable to 1SEG. With either setting, any shared memory less than 256 MB is created internally as a mmap segment, and thus has the same performance implications of mmap. Any shared memory greater or equal to 256 MB is created internally as a working segment.If
EXTSHM
is set to MSEG, all shared memory is created internally as a mmap segment, allowing for better memory utilization.For more information, see Extended Shared Memory.
LDR_CNTRL
-
Table 3. LDR_CNTRL
tunable parameterItem Descriptor Purpose Allows tuning of the kernel loader. Values Default: Not set Possible Values: PREREAD_SHLIB, LOADPUBLIC, IGNOREUNLOAD, USERREGS, MAXDATA, MAXDATA32, MAXDATA64, DSA, PRIVSEG_LOADS, DATA_START_STAGGER, LARGE_PAGE_TEXT, LARGE_PAGE_DATA, HUGE_EXEC, NAMEDSHLIB, SHARED_SYMTAB, SED, or LLU
Display echo $LDR_CNTRL
Change LDR_CNTRL={PREREAD_SHLIB | LOADPUBLIC| ...}
export LDR_CNTRL
Change takes effect immediately in this shell. Change is effective until logging out of this shell. A permanent change is made by adding the following line to the /etc/environment file:LDR_CNTRL=
{PREREAD_SHLIB | LOADPUBLIC| ...}Diagnosis Not applicable Tuning The LDR_CNTRL
environment variable can be used to control one or more aspects of the system loader behavior. You can specify multiple options with theLDR_CNTRL
variable. When specifying this option, separate the options with the @ sign. The following example shows how to specify multiple options:LDR_CNTRL
=PREREAD_SHLIB@LOADPUBLICSpecifying the PREREAD_SHLIB option causes entire libraries to be read when they are accessed. With the VMM readahead tuned, a library can be read from the disk and can be also cached in memory by the time the program starts to access its pages. While this method might use more memory, it might also enhance the performance of programs that use many shared library pages if the access pattern is nonsequential (for example, Catia).
Specifying the LOADPUBLIC option directs the system loader to load all modules requested by an application into the global shared library segment. If a module cannot be loaded publicly into the global shared library segment, then it is loaded privately for the application.
Specifying the IGNOREUNLOAD option prevents the application from unloading libraries. This specification might prevent memory fragmentation and eliminate the overhead that is incurred when libraries are repeatedly loaded and unloaded. If you do not specify the IGNOREUNLOAD option, you might end up with two data instances of a module. Two data instances of a module are created if the module was loaded at application load time and then the module was requested to be dynamically loaded and unloaded multiple times.
Specifying the USERREGS option tells the system to save all general-purpose user registers across system calls made by an application. This option can be helpful for applications that does garbage collection.
Specifying the MAXDATA option sets the maximum heap size for a process, which includes overriding any maxdata value that is specified in the executable. The maxdata value is used to set the initial soft data resource limit of the process. For 32-bit programs, a nonzero maxdata value enables the large address-space mode. For more information, see Large Program Support. To disable the large address-space model, specify a maxdata value of zero by setting
LDR_CNTRL=MAXDATA=0
. For 64-bit programs, the maxdata value provides a guaranteed maximum size for the data heap of the program. The portion of the address space that is reserved for the heap cannot be used by the shmat or mmap subroutines, even if an explicit address is provided. Any value can be specified, but the data area cannot extend past 0x06FFFFFFFFFFFFFF regardless of the maxdata value specified.The two additional maxdata options exist to allow finer control based on whether the process is 32-bit or 64-bit. These additional maxdata options override the MAXDATA option for the corresponding object mode. Specifying the MAXDATA32 option results in identical behavior to MAXDATA except that the value is ignored for 64-bit processes. Specifying the MAXDATA64 option results in identical behavior to MAXDATA except that the value is ignored for 32-bit processes.
Specifying the PRIVSEG_LOADS option directs the system loader to put dynamically loaded private modules into the process private segment. This specification might improve the availability of memory in large memory model applications that perform private dynamic loads and tend to run out of memory in the process heap. If the process private segment lacks sufficient space, the PRIVSEG_LOADS option has no effect. The PRIVSEG_LOADS option is only valid for 32-bit applications with a non-zero MAXDATA value.
Specifying the
DATA_START_STAGGER=Y
option starts the data section of the process at a per-MCM offset that is controlled by thedata_stagger_interval
option of the vmo command. The nth large-page data process executed on a specified MCM has its data section start at offset (n *data_stagger_interval
* PAGESIZE) % 16 MB. TheDATA_START_STAGGER=Y
option is only valid for 64-bit processes on a 64-bit kernel.Specifying the
LARGE_PAGE_TEXT=Y
option indicates that the loader might attempt to use large pages for the text segment of the process. TheLARGE_PAGE_TEXT=Y
option is only valid for 64-bit processes on a 64-bit kernel.Specifying the
LLU=yes
option enables the Live Library Update (LLU) function andLLU=no
disables the LLU function when the llu_mode parameter is set to 1 or 2 by using the raso command.Specifying the LARGE_PAGE_DATA=M option allocates only enough large pages for the data segment up to the
brk
value. Otherwise, the entire segment is allocated when the LARGE_PAGE_DATA=M option is not specified. The changes to thebrk
value might fail if there are not enough large pages to support the change to thebrk
value.Specifying the RESOLVEALL option forces the loader to resolve all undefined symbols that are imported at program load time or when the program loads the dynamic modules. Symbol resolution is performed in the standard AIX depth-first order. If you specify LDR_CNTRL=RESOLVEALL and the imported symbols cannot be resolved, the program or the dynamic modules fail to load.
Specifying the HUGE_EXEC option provides user control over the location of the process address space of the read-only segments for certain 32-bit executables. For more information, see 32-bit Huge Executable.
Specifying theNAMEDSHLIB=name,[attr1],[attr2]...[attrN]
option enables a process to access or create a shared library area that is identified by the name that is specified. You can create a named shared library area with the following methods:- With no attributes
- With the
doubletext32
attribute, which creates the named shared library area with two segments that are dedicated to shared library text
NAMEDSHLIB=name,[attr1],[attr2]...[attrN]
option is ignored. Valid names are of positive length and contain only alphanumeric, underscore, and period characters.Specifying the
SHARED_SYMTAB=Y
option causes the system to create a shared symbol table for a 64-bit program, if the program exports any symbols. If multiple instances of the program run concurrently, by using a shared symbol table can reduce the amount of system memory that is required by the program.Specifying the
SHARED_SYMTAB=N
option prevents the system from creating a shared symbol table for a 64-bit program. This option overrides theAOUT_SHR_SYMTAB
flag in the XCOFF auxiliary header.Specifying the SED option sets the stack execution disable (SED) mode for the process, by ignoring any other SED mode that is specified by the executable. This option must be set to one of the following values:SED=system SED=request SED=exempt
LDR_PRELOAD
orLDR_PRELOAD64
-
Table 4. LDR_PRELOAD64
tunable parameterItem Descriptor Purpose Requests preloading of shared libraries. The LDR_PRELOAD option is for 32-bit processes, and the LDR_PRELOAD64 option is for 64-bit processes. During symbol resolution, the preloaded libraries that are listed in this variable are searched first for every imported symbol, and only when it is not found in those libraries the normal search is used. Preempting of symbols from preloaded libraries works for both AIX default linking and runtime linking. Deferred symbol resolution is unchanged. Values Default: Not set Possible values: One or more library namesNote: If more than one library is listed, separate them with a colon (:). Place members of archive libraries between parentheses.Display echo $LDR_PRELOAD
echo $LDR_PRELOAD64
Change $LDR_PRELOAD="libx.so:liby.a(shr.o)"
Resolves any symbols needed first from the libx.so shared object, then from the shr.o member of liby.a, and finally within the dependencies of the process. All dynamically loaded modules (modules that are loaded with dlopen or load subroutines) are also resolved first from the preloaded libraries that are listed by the variable.
Diagnosis Not applicable NODISCLAIM
-
Table 5. NODISCLAIM
tunable parameterItem Descriptor Purpose Controls how calls to free subroutine are being handled. When PSALLOC
is set to early, all free subroutine calls result in a disclaim subroutine call. WhenNODISCLAIM
is set to true, the disclaim subroutine is not called.Values Default: Not set Possible Value: True
Display echo $NODISCLAIM
Change NODISCLAIM=true export NODISCLAIM
Change takes effect immediately in this shell. Change is effective until logging out of this shell. Permanent change is made by adding NODISCLAIM=true command to the /etc/environment file.
Diagnosis If the number of disclaim subroutine calls is high, you might want to set this variable. Tuning Setting this variable eliminates calls to the disclaim subroutine option from free subroutine if PSALLOC
is set to early.For more information, see Early page space allocation.
NSORDER
-
Table 6. NSORDER
tunable parameterItem Descriptor Purpose Overwrites the search order of the set name resolution. Values Default: bind, nis, local Possible Values: bind, local, nis, bind4, bind6, local4, local6, nis4, or nis6
Display echo $NSORDER
This option is turned on internally, so the initial default value are not seen with the echo command.
Change NSORDER=value, value, ...
export NSORDER
Change takes effect immediately in this shell. Change is effective until logging out of this shell. Permanent change is made by adding the
NSORDER=value
command to the /etc/environment file.Diagnosis Not applicable Tuning NSORDER
overrides the /etc/netsvc.conf file.For more information, see Name resolution tuning.
PSALLOC
-
Table 7. PSALLOC
tunable parameterItem Descriptor Purpose Sets the PSALLOC
environment variable to determine the paging-space allocation policy.Values Default: Not set Possible Value: early
Display echo $PSALLOC
Change PSALLOC=early export PSALLOC
Change takes effect immediately in this shell. Change is effective until logging out of this shell.
Diagnosis Not applicable Tuning To ensure that a process is not killed due to low paging conditions, this process can preallocate paging space by using the Early Page Space Allocation policy. However, this option might result in wasted paging space. You might also want to set the NODISCLAIM
environment variable.For more information, see Allocation and reclamation of paging space slots and Early page space allocation.
RT_GRQ
-
Table 8. RT_GRQ
tunable parameterItem Descriptor Purpose Causes the thread to be put on a global run queue rather than on a per-CPU run queue. Values Default: Not set Range: ON, OFF
Display echo $RT_GRQ
Change RT_GRQ={OFF/ON
export RT_GRQ
The change takes effect immediately. The change is effective until next boot. Permanent change is made by adding the
RT_GRQ={ON|OFF}
command to the /etc/environment file.Diagnosis Not applicable Tuning Might be tuned on multiprocessor systems. Setting this variable to ON causes the thread to be put in a global run queue. In that case, the global run queue is searched to see which thread has the best priority. This option might allow the system to get the thread dispatched sooner and can improve performance for threads that are running SCHED_OTHER and are interrupt that is driven. For more information, see Scheduler run queue.
RT_MPC
-
Table 9. RT_MPC
tunable parameterItem Descriptor Purpose When you are running the kernel in real-time mode, an MPC is sent to a different CPU to interrupt it if a better priority thread is runnable so that this thread is dispatched immediately. For more information, see the bosdebug command. Values Default: Not set Range: ON
Display echo $RT_MPC
Change RT_MPC=ON
export RT_MPC
The change takes effect immediately. The change is effective until next boot. Permanent change is made by adding the
RT_MPC=ON
command to the /etc/environment file.Diagnosis Not applicable TZ
-
Table 10. TZ
tunable parameterItem Descriptor Purpose Sets the time zone. Values Default: Olson time zone Possible values: Olson time zone or POSIX time zone
Display echo $TZ
Change TZ = value export TZ
The change takes effect immediately in the shell. The change is effective until you log out of the shell. Permanent change can be made by adding the
TZ= value
command to the /etc/environment file.Diagnosis Not applicable Tuning POSIX might be used by applications that are performance sensitive and do not rely on accurate changes to time zone rules and Daylight Saving Time. VMM_CNTRL
-
Table 11. VMM_CNTRL
tunable parameterItem Descriptor Purpose Allows tuning the virtual memory manager. Values Default: Not set Possible Values:
vmm_fork_policy
,ESID_ALLOCATOR
,SHM_1TB_SHARED
,SHM_1TB_UNSHARED
,SHM_AUTO_1TB
,MMAP_ANON_PSIZE
Display echo $VMM_CNTRL
Change VMM_CNTRL={vmm_fork_policy=… | ESID_ALLOCATOR=… | ...}
export VMM_CNTRL
Change takes effect immediately in this shell. Change is effective until you log out of this shell. Permanent change can be made by adding the
VMM_CNTRL=
environment variable to the /etc/environment file.Diagnosis Not applicable Tuning The VMM_CNTRL
environment variable can be used to control the virtual memory manager. You can specify multiple options by using theVMM_CNTRL
environmental variable and by separating the options with the '@' sign. The following example shows how to specify multiple options:VMM_CNTRL=vmm_fork_policy=COW@SHM_1TB_SHARED=5
When you specify the
vmm_fork_policy=COW
option, thevmm
uses the copy-on-write fork-tree policy whenever a process is forked. This option is the default behavior. To prevent thevmm
from using the copy-on-write policy, use thevmm_fork_policy=COR
option. If thevmm_fork_policy
option is specified, the globalvmm_fork_policy
tunable is ignored.If
ESID_ALLOCATOR
option is specified, it controls the allocator from undirectedshmat
andmmap
allocations. See 1 TB Segment Aliasing for detailed information.If
SHM_1TB_SHARED
orSHM_1TB_UNSHARED
is specified, it controls the use of 1 TB shared memory regions. See 1 TB Segment Aliasing for detailed information.If
SHM_AUTO_1TB
is specified, it controls the autonomic promotion of 1 TB segment size for shared memory regions. See Creating shared memory objects with 1 TB segment size for detailed information.If the
VMM_CNTRL
environment variable is set toMMAP_ANON_PSIZE=64K
, the anonymous memory regions are supported by 64 KB page size. This setting affects all the anonymous memory regions that are created for the process for the duration that the environment variable is set. By default, the anonymous memory regions are supported by 4 KB page size. AIX_STDBUFSZ
-
Table 12. AIX_STDBUFSZ:
tunable parameterItem Descriptor Purpose Configures the I/O buffer size for the read and write system calls generated by cp, mv, cat, and cpio commands. This option is also applicable for stream buffering. Values Default: Not set. Possible values: Integer value that specifies the buffer size in bytes, KB, MB.
Display echo $AIX_STDBUFSZ
Change AIX_STDBUFSZ=1024
export AIX_STDBUFSZ
(To configure 1024 buffer size)Changes take effect immediately in this shell. Change is effective until you log out of this shell. Permanent change to the buffer size can be made by adding the
AIX_STDBUFSZ
environment variable to the /etc/environment file.Diagnosis Not applicable Tuning Specify the value in the following ways.- Specify an integer value by using the format
export AIX_STDBUFSZ=1024
- Specify a hex value by using the format
export AIX_STDBUFSZ=0x400
- Limits: The minimum limit is 64 bytes and the maximum limit is 127 MB.
- A valid integer outside these limits are reverted to the nearest limit value.
- If the specified value is not in power of 2, it is rounded off to the nearest value in power of 2 that is less than the specified value.
- If the value of
AIX_STDBUFSZ
parameter is invalid, it is ignored.
- Specify an integer value by using the format
AIX_LDSYM
-
Table 13. AIX_LDSYM
tunable parameterItem Descriptor Purpose The source line information in a Lightweight_core
file is not displayed by default when the text page size is 64 K. When the text page size is 64 K, use the environment variableAIX_LDSYM=ON
to get the source line information in aLightweight_core
file.Values Default: Not set. Possible values: ON.
Display echo $AIX_LDSYM
Change export AIX_LDSYM=ON
Changes take effect immediately in this shell. Change is effective until you log out of this shell. Permanent change to the system can be made by adding the
AIX_LDSYM=ON
environment variable to the /etc/environment file.Diagnosis Not applicable Tuning Use this parameter for applications that have 64 K text page size and needs source line information in its
Lighweight_core
file. AIX_CWD_CACHE
-
Table 14. AIX_CWD_CACHE
tunable parameterItem Descriptor Purpose Disables the caching algorithm that is used by the getcwd and getwd subroutines to retrieve the path name of the current working directory. Values Default: Not set.
Possible values: OFF
Display echo $AIX_CWD_CACHE
Change export AIX_CWD_CACHE=OFF
Changes take effect for all processes that start from this shell later. Set the value of the
AIX_CWD_CACHE
parameter before a process makes an initial call to the getcwd or getwd subroutines. After a process calls the getcwd or getwd subroutines, further changes to theAIX_CWD_CACHE
parameter are not effective.Diagnosis Not applicable Tuning Not applicable printer_scalability
Table 15. printer_scalability
tunable parameterItem Descriptor Purpose Sets the environmental variables to enables scalable improvements for the AIX printer subsystem. Values Default: Not set.
Possible values: OFF
Display echo $printer_scalability
Change printer_scalability = ON
startsrc -s qdaemon -e printer_scalability=ON
startsrc -s lpd -e printer_scalability=ON
Changes take effect immediately in the shell. Change is effective till you log out of the shell. Permanent changes are made by adding the
printer_scalability = ON
command to the ~/.profile file.Diagnosis Not applicable Tuning Not applicable