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

Performance Management Guide

Kernel Tunable Parameters

Following are kernel parameters, grouped into the following sections:

Scheduler and Memory Load Control Tunable Parameters

Most of the scheduler and memory load control tunable parameters are fully described in the schedo man page. The following are a few other related parameters:

  1. 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
  2. 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.

Virtual Memory Manager Tunable Parameters

The complete listing of the virtual memory manager tunable parameters is located in the vmo man page.

Synchronous I/O Tunable Parameters

Most of the synchronous I/O tunable parameters are fully described in the ioo man page. The following are a few other related parameters:

  1. 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.
    Refer to: Tuning Asynchronous Disk I/O
  2. 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 the 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.
  3. 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, plus 1)
    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 the 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.
  4. mount -o nointegrity
    Purpose: A new mount option (nointegrity) may enhance local file system performance for certain write-intensive applications. This optimization basically eliminates writes to the JFS log. Note that the enhanced performance is achieved at the expense of metadata integrity. Therefore, use this option with extreme caution because a system crash can make a file system mounted with this option unrecoverable. Nevertheless, certain classes of applications do not require file data to remain consistent after a system crash, and these may benefit from using the nointegrity option. Two examples in which a nointegrity file system may be beneficial is for compiler temporary files, and for doing a nonmigration or mksysb installation.
  5. 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 mkps or chps or smitty pgsp
    Change: Change is effective 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.
  6. 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 vi /sbin/rc.boot or
    Change: Change is effective 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.

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

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 131072
    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 131072
    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 131072
    Display: N/A
    Change: N/A
    Diagnosis: N/A
    Tuning: Does not require tuning because it is dynamically adjusted as needed by the kernel.

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