[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]

Performance Management Guide


Kernel Tunable Parameters

Following are kernel parameters, grouped into the following sections:

Scheduler Tunable Parameters

  1. AFFINITY_LIM (Version 4.3.3.1 and later)
    Purpose: Sets the number of intervening dispatches after which the SCHED_FIFO2 policy no longer favors a thread.
    Values: Default: 7; Range: 0 to 100
    Display: schedtune
    Change: schedtune -a NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: Once a thread is running with SCHED_FIFO2 policy, tuning of this variable may or may not have an effect on the performance of the thread and workload. Ideal values should be determined by trial and error.
    Refer to: Scheduling Policy for Threads
  2. idle_migration_barrier (Version 4.3.3.1 and later)
    Purpose: Used to determine when threads can be migrated to other processors.
    Values: Default: 4: Range: 0 to 100
    Display: schedtune
    Change: schedtune -b NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: This value is divided by 16 and then multiplied by the load average. The resulting value is used to determine if jobs should be migrated to other nodes (essentially does load balancing).
  3. fixed_pri_global
    Purpose: Keep fixed priority threads on global run queue. Available in operating system version 4.3.3.1 and later releases.
    Values: Default: 0: Range: 0 or 1
    Display: schedtune
    Change: schedtune -F NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: If 1, then fixed priority threads are placed on the global run queue.
    Refer to: Scheduler Run Queue
  4. MAXSPIN (AIX 4.3.1 and later)
    Purpose: Sets the number of times to spin on a kernel lock before going to sleep.
    Values: Default: 1 on uniprocessor systems,
    16384 on MP systems (AIX 4.3.1 and later),
    -1 on MP systems that are at releases older than 4.3.1, which means to spin up to 2^32 times
    Range: -1 to 2^32
    Display: schedtune
    Change: schedtune -s NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: Increasing the value or setting it to -1 on MP systems may reduce idle time; however, it may also waste CPU time in some situations. Increasing it on uniprocessor systems is not recommended.
    Refer to: The schedtune -s Command
  5. maxuproc
    Purpose: Specifies the maximum number of processes per user ID.
    Values: Default: 40; Range: 1 to 131072
    Display: lsattr -E -l sys0 -a maxuproc
    Change: chdev -l sys0 -a maxuproc=NewValue
    Change takes effect immediately and is preserved over boot. If value is reduced, then it goes into effect only after a system boot.
    Diagnosis: Users cannot fork any additional processes.
    Tuning: This is a safeguard to prevent users from creating too many processes.
    Refer to: Responding to PDT Report Messages
  6. ncargs
    Purpose: Specifies the maximum allowable size of the ARG/ENV list (in 4KB blocks) when running exec() subroutines.
    Values: Default: 6; Range: 6 to 128
    Display: lsattr -E -l sys0 -a ncargs
    Change: chdev -l sys0 -a ncargs=NewValue
    Change takes effect immediately and is preserved over boot.
    Diagnosis: Users cannot execute any additional processes because the argument list passed to the exec() system call is too long.
    Tuning: This is a mechanism to prevent the exec() subroutines from failing if the argument list is too long. Please note that tuning to a higher ncargs value puts additional constraints on system memory resources.

  7. pacefork
    Purpose: The number of clock ticks to wait before retrying a failed fork call that has failed for lack of paging space.
    Values: Default: 10 (10-millisecond clock ticks), Range: 10 to n clock ticks
    Display: schedtune
    Change: schedtune -f NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: System is running out of paging space and process cannot be forked.
    Tuning: The system will retry a failed fork five times. For example, if a fork() subroutine call fails because there is not enough paging space available to create a new process, the system retries the call after waiting the specified number of clock ticks.
    Refer to: Tuning the fork() Retry Interval Parameter with schedtune
  8. RT_GRQ (Version 4.3.3.1 and later)
    Purpose: Causes 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/ONexport RT_GRQChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding RT_GRQ={ON|OFF} command to the /etc/environment file.
    Diagnosis: N/A
    Tuning: May be tuned on multiprocessor systems. Set to ON, will cause the thread to be put on a global run queue. In that case, the global run queue is searched to see which thread has the best priority. This might allow to get the thread dispatched sooner and can improve performance for threads that are running SCHED_OTHER, and are interrupt driven.
    Refer to: Scheduler Run Queue
  9. RT_MPC (AIX 4.3.3 and later)
    Purpose: When running the kernel in real-time mode (see bosdebug command), an MPC can be sent to a different CPU to interrupt it if a better priority thread is runnable so that this thread can be dispatched immediately.
    Values: Default: Not set; Range: ON
    Display: echo $RT_MPC
    Change: RT_MPC=ON
    export RT_MPC
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding RT_MPC=ON command to the /etc/environment file.
    Diagnosis: N/A
  10. sched_D
    Purpose: Sets the short term CPU usage decay rate.
    Values: Default: 16; Range: 0 to 32
    Display: schedtune
    Change: schedtune -d NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: The default is to decay short-term CPU usage by 1/2 (16/32) every second. Decreasing this value enables foreground processes to avoid competition with background processes for a longer time.
    Refer to: Tuning the Thread-Priority-Value Calculation
  11. sched_R
    Purpose: Sets the weighting factor for short-term CPU usage in priority calculations.
    Values: Default: 16; Range: 0 to 32
    Display: schedtune
    Change: schedtune -r NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: Run: ps al. If you find that the PRI column has priority values for foreground processes (those with NI values of 20) that are higher than the PRI values of some background processes (NI values > 20), you can reduce the r value.
    Tuning: The default is to include 1/2 (16/32) of the short term CPU usage in the priority calculation. Decreasing this value makes it easier for foreground processes to compete.
    Refer to: Tuning the Thread-Priority-Value Calculation
  12. timeslice
    Purpose: The number of clock ticks a thread can run before it is put back on the run queue.
    Values: Default: 1; Range: A positive integer value
    Display: schedtune
    Change: schedtune -t NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: Increasing this value can reduce overhead of dispatching threads. The value refers to the total number of clock ticks in a timeslice and only affects fixed-priority processes.
    Refer to: Modifying the Scheduler Time Slice with the schedtune Command
  13. usDELTA
    Purpose: Used to adjust system clock with each clock tick in the correction range -1 to +1 seconds.
    Values: Default: 100; Range: 1 to 100
    Display: schedtune
    Change: schedtune -c NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: This is used to adjust clock drifts.

Memory Load Control Tunable Parameters

  1. v_exempt_secs
    Purpose: Sets the number of seconds that a recently resumed process that was previously suspended is exempt from suspension.
    Values: Default: 2
    Display: schedtune
    Change: schedtune -e NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: This parameter is only examined if thrashing is occurring.
    Refer to: VMM Memory Load Control Facility and Tuning VMM Memory Load Control with the schedtune Command
  2. v_min_process
    Purpose: Sets the minimum number of processes that are exempt from suspension.
    Values: Default: 2
    Display: schedtune
    Change: schedtune -m NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: This number is in addition to kernel processes, processes with fixed priority less than 60, processes with pinned memory, or processes awaiting events. This parameter is only examined if there are threads on the suspended queue.
    Refer to: VMM Memory Load Control Facility and Tuning VMM Memory Load Control with the schedtune Command
  3. v_repage_hi
    Purpose: Sets the systemwide criteria used to determine when process suspension begins and ends (system is thrashing).
    Values: Default: 6 unless system RAM is 128 MB or more (in this case it is 0)
    Display: schedtune
    Change: schedtune -h NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: If v_repage_hi * page_outs/sec is > page_steals, then processes may get suspended.
    Tuning: If system is paging and causing scheduler to think it is thrashing but thrashing is not actually occuring, then it may be useful to desensitize the algorithm by decreasing the -h value or setting it to 0.
    Refer to: VMM Memory Load Control Facility and Tuning VMM Memory Load Control with the schedtune Command
  4. v_repage_proc
    Purpose: Sets the per-process criterion used to determine which processes to suspend
    Values: Default: 4
    Display: schedtune
    Change: schedtune -p NewValueChange takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: Diagnosis:
    Tuning: This requires a higher level of repaging by a given process before it is a candidate for suspension by memory load control. This parameter is examined only if thrashing is occurring.
    Refer to: VMM Memory Load Control Facility and Tuning VMM Memory Load Control with the schedtune Command
  5. v_sec_wait
    Purpose: Sets the number of seconds to wait after thrashing ends before making suspended processes runnable.
    Values: Default: 1
    Display: schedtune
    Change: schedtune -w NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding schedtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: This parameter is examined only if thrashing is occurring.
    Refer to: VMM Memory Load Control Facility and Tuning VMM Memory Load Control with the schedtune Command

Virtual Memory Manager and File System Tunable Parameters

  1. defps (AIX 4.3.2 and later)
    Purpose: Turns on/off Deferred Page Space Allocation (DPSA) policy.
    Values: Default: 1; Range: 0 or 1; Value of 1 means DPSA is on
    Display: vmtune
    Change: vmtune -d NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: May be useful to turn off DPSA policy if you are concerned about page-space overcommitment. Having the value on reduces paging space requirements.
    Refer to: Choosing between LPSA and DPSA with the vmtune Command
  2. lrubucket
    Purpose: Specifies the number of memory frames per bucket. The page-replacement algorithm divides real memory into buckets of frames. On systems with multiple memory pools, the lrubucket parameter is per memory pool.
    Values: Default: 131072 frames; Range: 1 to total_number_of_memory_frames
    Display: vmtune
    Change: vmtune -l NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: Tuning this parameter is not recommended on most systems. Instead of scanning every frame in the system looking for a free frame, the page replacement algorithm scans through the contents of a bucket and scans the same bucket for the second pass before going on to the next bucket.
    Refer to: Tuning lrubucket to Reduce Memory Scanning Overhead
  3. maxbuf
    Purpose: Number of (4 KB) pages in the block-I/O buffer cache.
    Values: Default: 20, Range: 20 to 1000
    Display: lsattr -E -l sys0 -a maxbuf
    Change: chdev -l sys0 -a maxbuf=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: If the sar -b command shows breads or bwrites with %rcache and %wcache being low, you might want to tune this parameter.
    Tuning: This parameter normally has little performance effect on systems, where ordinary I/O does not use the block-I/O buffer cache.
  4. maxfree
    Purpose: Specifies the number of frames on the free list at which page-stealing is to stop.
    Values: Default: MIN (#of memory pages/128, 128); Range: 16 to 204800
    Display: vmtune
    Change: vmtune -F NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Observe free-list-size changes with vmstat n.
    Tuning: If vmstat n shows free-list size frequently driven below minfree by application demands, increase maxfree to reduce calls to replenish the free list. Generally, keep maxfree - minfree equal to or less than 100. Setting the value too high causes page replacement to run for a longer period of time. Value must be at least 8 greater than minfree.
    Refer to: Tuning VMM Page Replacement with the vmtune Command
  5. maxperm
    Purpose: Specifies the point above which the page-stealing algorithm steals only file pages.
    Values: Default: (Total_Ram - 4 MB)*0.8 or ((# of total memory frames)-1024)*0.8; Range: 1 to 100
    Display: vmtune
    Change: vmtune -P NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Monitor disk I/O with iostat n.
    Tuning: This value is expressed as a percentage of the total real-memory page frames in the system. Reducing this value may reduce or eliminate page replacement of working storage pages caused by high number of file page accesses. Increasing this value may help NFS servers that are mostly read-only. For example, if some files are known to be read repetitively, and I/O rates do not decrease with time from startup, maxperm may be too low.
    Refer to: Tuning VMM Page Replacement with the vmtune Command
  6. maxpgahead
    Purpose: Specifies the maximum number of pages to be read ahead when processing a sequentially accessed file.
    Values: Default: 8 (the default should be a power of two and should be greater than or equal to minpgahead); Range: 0 to 4096
    Display: vmtune
    Change: vmtune -R NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Observe the elapsed execution time of critical sequential-I/O-dependent applications with the time command.
    Tuning: Because of limitations in the kernel, do not exceed 512 as the maximum value used. The difference between minfree and maxfree should always be equal to or greater than maxpgahead. If execution time decreases with higher maxpgahead, observe other applications to ensure that their performance has not deteriorated.
    Refer to: Sequential Read-Ahead
  7. maxpin
    Purpose: Specifies the maximum percentage of real memory that can be pinned.
    Values: Default: 80 percent; Range: 1 to 99
    Display: vmtune
    Change: vmtune -M NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Cannot pin memory, although free memory is available.
    Tuning: If this value is changed, the new value should ensure that at least 4 MB of real memory will be left unpinned for use by the kernel. The maxpin values must be greater than one and less than 100. The value under maxpin is converted to a percentage at the end of the output of the vmtune command. Change this parameter only in extreme situations, such as maximum-load benchmarking.
  8. maxpout
    Purpose: Specifies the maximum number of pending I/Os to a file.
    Values: Default: 0 (no checking); Range: 0 to n (n should be a multiple of 4, plus 1)
    Display: lsattr -E -l sys0 -a maxpout
    Change: chdev -l sys0 -a maxpout=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: If foreground response time sometimes deteriorates when programs with large amounts of sequential disk output are running, sequential output may need to be paced.
    Tuning: Set maxpout to 33 and minpout to 16. If sequential performance deteriorates unacceptably, increase one or both. If foreground performance is still unacceptable, decrease both.
    Refer to: Using Disk-I/O Pacing
  9. maxrandwrt (AIX 4.1.3 and later)
    Purpose: Specifies a threshold (in 4 KB pages) for random writes to accumulate in RAM before subsequent pages are flushed to disk by the write-behind algorithm. The random write-behind threshold is on a per-file basis.
    Values: Default: 0, Range: 0 to largest_file_size_in_pages
    Display: vmtune
    Change: vmtune -W NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: vmstat n shows page out and I/O wait peaks on regular intervals (usually when the sync daemon is writing pages to disk).
    Tuning: Useful to set this value to 1 or higher if too much I/O occurs when syncd runs. Default is to have random writes stay in RAM until a sync operation. Setting maxrandwrt ensures these writes get flushed to disk before the sync operation has to occur. However, this could degrade performance because the file is then being flushed each time. Tune this option to favor interactive response time over throughput. After the threshold is reached, all subsequent pages are then immediately flushed to disk. The pages up to the threshold value stay in RAM until a sync operation. A value of 0 disables random write-behind.
    Refer to: VMM Write-Behind
  10. mempools (AIX 4.3.3 and later)
    Purpose: Changes the number of memory pools that will be configured at system boot time.
    Values: Default: MAX (Number of CPUs/8, RAM in GB/16) but not more than the number of CPUs and not less than 1
    Display: vmtune
    Change: vmtune -m NewValue
    Change takes effect at next boot and is permanent.
    Diagnosis: N/A
    Tuning: The change is written to the kernel file if it is an MP kernel (the change is not allowed on a UP kernel). A value of 0 will restore the default number of memory pools. By default, the vmtune -m command will write to /usr/lib/boot/unix_mp, but this can be changed with the command vmtune -U <path to unix file>. Before changing the kernel file, the vmtune command will save the original file as <name of original file>.sav.
    Refer to: Tuning Memory Pools
  11. minfree
    Purpose: Specifies the minimum number of frames on the free list at which the VMM starts to steal pages to replenish the free list.
    Values: Default: maxfree - 8; Range: 8 to 204800
    Display: vmtune
    Change: vmtune -f NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: vmstat n
    Tuning: Page replacement occurs when the number of free frames reaches minfree. If processes are being delayed by page stealing, increase minfree to improve response time. The difference between minfree and maxfree should always be equal to or greater than maxpgahead.
    Refer to: Tuning VMM Page Replacement with the vmtune Command
  12. minperm
    Purpose: Specifies the point below which the page-stealer will steal file or computational pages regardless of repaging rates.
    Values: Default: (Total_RAM -4 MB)*0.2 or ((number of total memory frames) - 1024)*0.2; Range: 1 to 100
    Display: vmtune
    Change: vmtune -p NewValue_as_a_percentage
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Monitor disk I/O with iostat n.
    Tuning: Can be useful to decrease this parameter if large number of file pages in memory is causing working storage pages to be replaced. On the other hand, if some files are known to be read repetitively, and I/O rates do not decrease with time from startup, minperm may be too low.
    Refer to: Tuning VMM Page Replacement with the vmtune Command
  13. minpgahead
    Purpose: Specifies the number of pages with which sequential read-ahead starts.
    Values: Default: 2; Range: 0 to 4096 (should be a power of two)
    Display: vmtune
    Change: vmtune -r NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Observe the elapsed execution time of critical sequential-I/O-dependent applications with time command.
    Tuning: Useful to increase if there are lots of large sequential accesses. Observe other applications to ensure that their performance has not deteriorated. Value of 0 may be useful if I/O pattern is purely random.
    Refer to: Sequential Read-Ahead
  14. minpout
    Purpose: Specifies the point at which programs that have reached maxpout can resume writing to the file.
    Values: Default: 0 (no checking); Range: 0 to n (n should be a multiple of 4 and should be at least 4 less than maxpout)
    Display: lsattr -E -l sys0 -a minpout
    Change: chdev -l sys0 -a minpout=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: If foreground response time sometimes deteriorates when programs with large amounts of sequential disk output are running, sequential output may need to be paced.
    Tuning: Set maxpout to 33 and minpout to 16. If sequential performance deteriorates unacceptably, increase one or both. If foreground performance is still unacceptable, decrease both.
    Refer to: Using Disk-I/O Pacing
  15. nokillroot (Version 4.3.3.0 to 4.3.3.1)
    Purpose: If set to 1, it will exempt root-owned processes from getting killed due to low page-space conditions.
    Values: Default: 0 (off); Range 0 or 1
    Display: vmtune
    Change: vmtune -n NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: System out of paging space and system administrator's processes are getting killed.
    Tuning: Set to 1 in order to protect system admin processes from getting killed or ensure there is sufficient paging space available.
    Refer to: Choosing npswarn and npskill Settings
  16. nokilluid (Version 4.3.3.2 and later)
    Purpose: User IDs lower than this value will be exempt from getting killed due to low page-space conditions.
    Values: Default: 0 (off); Range: Any positive integer
    Display: vmtune
    Change: vmtune -k NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: System out of paging space and system administrator's processes are getting killed.
    Tuning: Set to 1 in order to protect specific user ID processes from getting killed due to low page space or ensure there is sufficient paging space available.
    Refer to: Choosing npswarn and npskill Settings
  17. npskill
    Purpose: Specifies the number of free paging-space pages at which the operating system begins killing processes.
    Values: Default: MAX (64, number_of_paging_space_pages/128)
    Display: vmtune
    Change: vmtune -n NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: The npskill value must be greater than zero and less than the total number of paging space pages on the system.
    Refer to: Choosing npswarn and npskill Settings
  18. npswarn
    Purpose: Specifies the number of free paging-space pages at which the operating system begins sending the SIGDANGER signal to processes.
    Values: Default: MAX (512,4*npskill)
    Display: vmtune
    Change: vmtune -w NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: The value of npswarn must be greater than zero and less than the total number of paging space pages on the system. Increase the value if you experience processes being killed because of low paging space.
    Refer to: Choosing npswarn and npskill Settings
  19. numclust
    Purpose: Specifies the number of 16 k clusters processed by the sequential write-behind algorithm of the VMM.
    Values: Default: 1 in AIX Version 4 to AIX 4.2; 0 in AIX 4.2.1; 1 in Version 4.3 and later; Range: 0 to any positive integer
    Display: vmtune
    Change: vmtune -c NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: N/A
    Tuning: Useful to increase if there is a need to keep more pages in RAM before scheduling them for I/O when the I/O pattern is sequential. May be appropriate to increase if striped logical volumes or disk arrays are being used.
    Refer to: VMM Write-Behind
  20. numfsbufs
    Purpose: Specifies the number of file system bufstructs.
    Values: Default: 93 (value is dependent on the size of the bufstruct)
    Display: vmtune
    Change: vmtune -b NewValue
    Change takes effect when a file system is mounted. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab. File system must be remounted.
    Diagnosis: N/A
    Tuning: If the VMM must wait for a free bufstruct, it puts the process on the VMM wait list before the start I/O is issued and will wake it up once a bufstruct has become available. May be appropriate to increase if striped logical volumes or disk arrays are being used.
    Refer to: Miscellaneous I/O Tuning Parameters
  21. pagecoloring (Version 4.3.3.2 and later)
    Purpose: Turns on (-C 1) or off (-C 0) page coloring in the VMM.
    Values: Default: 0 (off); Range: 0 or 1
    Display: vmtune
    Change: vmtune -C NewValue
    Change takes effect at next boot and is permanent.
    Diagnosis: N/A
    Tuning: This parameter is useful for some applications that run on machines that have a direct mapped cache. By default, the vmtune -C command will write to /usr/lib/boot/unix_mp, but this can be changed with the command vmtune -U <path to unix file>. Before changing the kernel file, the vmtune command will save the original file as <name of original file>.sav.
  22. Paging Space Size
    Purpose: The amount of disk space required to hold pages of working storage.
    Values: Default: configuration-dependent; Range: 32 MB to n MB for hd6, 16 MB to n MB for non-hd6
    Display: lsps -a
    Change: mkps or chps or smitty pgsp
    Change takes effect immediately and is permanent. Paging space is not necessarily put into use immediately, however.
    Diagnosis: Run: lsps -a. If processes have been killed for lack of paging space, monitor the situation with the psdanger() subroutine.
    Tuning: If it appears that there is not enough paging space to handle the normal workload, add a new paging space on another physical volume or make the existing paging spaces larger.
    Refer to: Placement and Sizes of Paging Spaces
  23. pd_npages
    Purpose: Specifies the number of pages that should be deleted in one chunk from RAM when a file is deleted.
    Values: Default: largest file size in pages; Range: 1 to largest filesize_in_pages
    Display: vmtune
    Change: vmtune -N NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Real-time applications that experience sluggish response time while files are being deleted.
    Tuning: Tuning this option is only useful for real-time applications. If real-time response is critical, adjusting this option may improve response time by spreading the removal of file pages from RAM more evenly over a workload.
    Refer to: Miscellaneous I/O Tuning Parameters
  24. strict_maxperm (AIX 4.3.3 and later)
    Purpose: If set to 1, the maxperm value will be a hard limit on how much of RAM can be used as a persistent file cache.
    Values: Default: 0 (off); Range 0 or 1
    Display: vmtune
    Change: vmtune -h NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Excessive page outs to page space caused by too many file pages in RAM.
    Tuning: Set to 1 in order to make the maxperm value a hard limit (use in conjunction with the tuning of the maxperm parameter).
    Refer to: Placing a Hard Limit on Persistent File Cache with strict_maxperm
  25. sync_release_ilock
    Purpose: If set, will cause a sync() to flush all I/O to a file without holding the i-node lock, and then use the i-node lock to do the commit.
    Values: Default: 0 (off); Range 0 or 1
    Display: vmtune
    Change: vmtune -s NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: I/O to a file is blocked when the syncd daemon is running.
    Tuning: Default value of 0 means that the i-node lock is held while all dirty pages of a file are flushed.
    Refer to: Tuning File Syncs
  26. syncd Interval
    Purpose: The time between sync() calls by syncd.
    Values: Default: 60 ; Range: 1 to any positive integer
    Display: grep syncd /sbin/rc.boot
    Change: vi /sbin/rc.boot
    Change takes effect at next boot and is permanent. An alternate method is to use the kill command to terminate the syncd daemon and restart it from the command line with the command /usr/sbin/syncd interval.
    Diagnosis: I/O to a file is blocked when syncd is running.
    Tuning: At its default level, this parameter has little performance cost. No change is recommended. Significant reductions in the syncd interval in the interests of data integrity (as for HACMP) could have adverse performance consequences.
    Refer to: Using sync/fsync Calls
  27. v_pinshm (AIX 4.3.3 and later)
    Purpose: If set to 1, will allow pinning of shared memory segments.
    Values: Default: 0 (off); Range 0 or 1
    Display: vmtune
    Change: vmtune -S NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Too much overhead in pinning or unpinning of AIO buffers from shared memory segments.
    Tuning: Useful only if application also sets SHM_PIN flag when doing a shmget()call and if doing async I/O from shared memory segments
    Refer to: Miscellaneous I/O Tuning Parameters

Asynchronous I/O Tunable Parameters

  1. maxreqs
    Purpose: Specifies the maximum number of asynchronous I/O requests that can be outstanding at any one time.
    Values: Default: 4096; Range: 1 to AIO_MAX (/usr/include/sys/limits.h)
    Display: lsattr -E -l aio0 -a maxreqs
    Change: chdev -l aio0 -a maxreqs=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: N/A
    Tuning: This includes requests that are in progress, as well as those that are waiting to be started. The maximum number of asynchronous I/O requests cannot be less than the value of AIO_MAX, as defined in the /usr/include/sys/limits.h file, but can be greater. It would be appropriate for a system with a high volume of asynchronous I/O to have a maximum number of asynchronous I/O requests larger than AIO_MAX.
    Refer to: Tuning Asynchronous Disk I/O
  2. maxservers
    Purpose: Specifies the maximum number of AIO kprocs that will be created.
    Values: Default: 10
    Display: lsattr -E -l aio0 -a maxservers
    Change: chdev -l aio0 -a maxservers=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: N/A
    Tuning: This value limits the number of concurrent asynchronous I/O requests. The value should be about the same as the expected number of concurrent AIO requests. This tunable parameter only affects AIO on JFS file systems (or Virtual Shared Disks (VSD) before AIX 4.3.2).
    Refer to: Tuning Asynchronous Disk I/O
  3. minservers
    Purpose: Specifies the number of AIO kprocs that will be created when the AIO kernel extension is loaded.
    Values: Default: 1
    Display: lsattr -E -l aio0 -a maxservers
    Change: chdev -l aio0 -a minservers=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: N/A
    Tuning: Making this a large number is not recommended, because each process takes up some memory. Leaving this number small is acceptable in most cases because AIO will create additional kprocs up to maxservers as needed. This tunable is only effective for AIO on JFS file systems (or VSDs before AIX 4.3.2).
    Refer to: Tuning Asynchronous Disk I/O

Logical Volume Manager Tunable Parameters

  1. hd_pbuf_cnt
    Purpose: Specifies the total number of pbufs that the LVM uses.
    Values: Default: 64 or more depending on the number of disks that have open logical volumes (default value is 64 + 16 for each additional physical disk with an open logical volume)
    Display: vmtune
    Change: vmtune -B NewValue
    Change takes effect immediately. Change is effective until next boot. New value cannot be reduced because memory is pinned. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Value of hd_pendqblked in /dev/kmem is non-zero, which indicates that LVM had to wait for pbufs.
    Tuning: Useful to increase if there are a substantial number of simultaneous I/Os and value of hd_pendqblked is non-zero. To see value of hd_pendqblked, use the vmtune -a or crash command.
    Refer to: Miscellaneous I/O Tuning Parameters
  2. lvm_bufcnt (AIX Version 4)
    Purpose: Specifies the number of LVM buffers for raw physical I/Os.
    Values: Default: 9; Range: 1 to 64
    Display: vmtune
    Change: vmtune -u NewValue
    Change takes effect immediately. Change is effective until next boot. Permanent change is made by adding vmtune command to /etc/inittab.
    Diagnosis: Applications performing large writes to striped raw logical volumes are not obtaining the desired throughput rate.
    Tuning: LVM splits large raw I/Os into multiple buffers of 128 K a piece. Default value of 9 means that about 1 MB I/Os can be processed without waiting for more buffers.

     
    If a system is configured to have striped raw logical volumes and is doing writes greater than 1.125 MB, increasing this value may help the throughput of the application.

     
    If performing larger than 1 MB raw I/Os, it might be useful to increase this value.

    Refer to: Miscellaneous I/O Tuning Parameters

Disk and Disk Adapter Tunable Parameters

  1. Disk Adapter Outstanding-Requests Limit
    Purpose: Maximum number of requests that can be outstanding on a SCSI bus. (Applies only to the SCSI-2 Fast/Wide Adapter.)
    Values: Default: 40; Range: 40 to 128
    Display: lsattr -E -l scsin -a num_cmd_elems
    Change: chdev -l scsin -a num_cmd_elems=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: Applications performing large writes to striped raw logical volumes are not obtaining the desired throughput rate.
    Tuning: Value should equal the number of physical drives (including those in disk arrays) on the SCSI bus, times the queue depth of the individual drives.
  2. Disk Drive Queue Depth
    Purpose: Maximum number of requests the disk device can hold in its queue.
    Values: Default: IBM disks=3; Non-IBM disks=0; Range: specified by manufacturer
    Display: lsattr -E -l hdiskn
    Change: chdev -l hdiskn -a q_type=simple -a queue_depth=NewValue
    Change is effective immediately and is permanent. If the -T flag is used, the change is immediate and lasts until the next boot. If the -P flag is used, the change is deferred until the next boot and is permanent.
    Diagnosis: N/A
    Tuning: If the non-IBM disk drive is capable of request-queuing, make this change to ensure that the operating system takes advantage of the capability.
    Refer to: Setting SCSI-Adapter and Disk-Device Queue Limits

Interprocess Communication Tunable Parameters

  1. msgmax
    Purpose: Specifies maximum message size.
    Values: Dynamic with maximum value of 4 MB
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  2. msgmnb
    Purpose: Specifies maximum number of bytes on queue.
    Values: Dynamic with maximum value of 4 MB
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  3. msgmni
    Purpose: Specifies maximum number of message queue IDs.
    Values: Dynamic with maximum value of 4096
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  4. msgmnm
    Purpose: Specifies maximum number of messages per queue.
    Values: Dynamic with maximum value of 524288
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  5. semaem
    Purpose: Specifies maximum value for adjustment on exit.
    Values: Dynamic with maximum value of 16384
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  6. semmni
    Purpose: Specifies maximum number of semaphore IDs.
    Values: Dynamic with maximum value of 4096
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  7. semmsl
    Purpose: Specifies maximum number of semaphores per ID.
    Values: Dynamic with maximum value of 65535
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  8. semopm
    Purpose: Specifies maximum number of operations per semop() call.
    Values: Dynamic with maximum value of 1024
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  9. semume
    Purpose: Specifies maximum number of undo entries per process.
    Values: Dynamic with maximum value of 1024
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  10. semvmx
    Purpose: Specifies maximum value of a semaphore.
    Values: Dynamic with maximum value of 32767
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  11. shmmax
    Purpose: Specifies maximum shared memory segment size.
    Values: Dynamic with maximum value of 256 MB for 32-bit processes and 0x80000000u for 64-bit
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  12. shmmin
    Purpose: Specifies minimum shared-memory-segment size.
    Values: Dynamic with minimum value of 1
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.
  13. shmmni
    Purpose: Specifies maximum number of shared memory IDs.
    Values: Dynamic with maximum value of 4096
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.


[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]