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

Commands Reference, Volume 3

ioo Command

Purpose

Manages Input/Output tunable parameters.

Syntax

ioo [ -p | -r ] { -o Tunable [ =NewValue ] }

ioo [ -p | -r ] {-d Tunable}

ioo [ -p | -r ] -D

ioo [ -p | -r ] -a

ioo -?

ioo -h Tunable

ioo -L [ Tunable ]

Note
Multiple -o, -d, and -L flags are allowed.

Description

Note
The ioo command can only be executed by root.

The ioo command configures Input/Output tuning parameters. This command sets or displays current or next boot values for all Input/Output tuning parameters. This command can also make permanent changes or defer changes until the next reboot. Whether the command sets or displays a parameter is determined by the accompanying flag. The -o flag performs both actions. It can either display the value of a parameter or set a new value for a parameter.

If a process appears to be reading sequentially from a file, the values specified by the minpgahead parameter determine the number of pages to be read ahead when the condition is first detected. The value specified by the maxpgahead parameter sets the maximum number of pages that are read ahead, regardless of the number of preceding sequential reads.

The operating system allows tuning of the number of file system bufstructs (numfsbuf) and the amount of data processed by the write-behind algorithm (numclust).

Attention: Misuse of the ioo command can cause performance degradation or operating-system failure. Before experimenting with ioo, you should be thoroughly familiar with Performance Overview of the Virtual Memory Manager (VMM).

Flags

-h Tunable Displays help about the specified Tunable parameter.
-a Displays current, reboot (when used in conjunction with -r) or permanent (when used in conjunction with -p) value for all tunable parameters, one per line in pairs tunable = value. For the permanent option, a value is only displayed for a parameter if its reboot and current values are equal. Otherwise NONE displays as the value.
-d Tunable Resets Tunable to its default value. If a Tunable needs to be changed (that is it is currently not set to its default value) and is of type Bosboot or Reboot, or if it is of type Incremental and has been changed from its default value, and -r is not used in combination, it is not changed but a warning displays.
-D Resets all tunables to their default value. If tunables needing to be changed are of type Bosboot or Reboot, or are of type Incremental and have been changed from their default value, and -r is not used in combination, they are not changed but a warning displays.
-o Tunable [=NewValue ] Displays the value or sets Tunable to NewValue. If a Tunable needs to be changed (the specified value is different than current value), and is of type Bosboot or Reboot, or if it is of type Incremental and its current value is bigger than the specified value, and -r is not used in combination, it is not changed but a warning displays.

When -r is used in combination without a NewValue, the nextboot value for tunable displays. When -p is used in combination without a NewValue, a value displays only if the current and next boot values for he Tunableare the same. Otherwise NONE displays as the value.

-p Specifies that the changes apply to both the current and reboot values when used in combination with the -o, -d or -D flags. Turns on the updating of the /etc/tunables/nextboot file in addition to the updating of the current value. These combinations cannot be used on Reboot and Bosboot type parameters, their current value cannot be changed.

When used with -a or -o without specifying a new value, the values display only if the current and next boot values for a parameter are the same. Otherwise NONE displays as the value.

-r Makes changes apply to reboot values when used in combination with the -o, -d or -D flags. That is, turns on the updating of the /etc/tunables/nextboot file. If any parameter of type Bosboot is changed, the user is prompted to run bosboot.

When used with -a or -o without specifying a new value, next boot values for tunables display instead of current values.

-L Lists the characteristics of one or all tunables, one per line, using the following format:
Name   Current  Default  Reboot   Minimum  Maximum  Unit  Type  Dependencies
       value    value    value    value    value
----------------------------------------------------------------------------

param1 5        2        4        1        10       MB/s     I  param2
                                                                param3

Parameters can be of the following types:

  • D for Dynamic if tunable can be changed at any time.
  • S for Static if tunable can never be changed.
  • R for Reboot if tunable can only be changed during reboot sequence.
  • B for Bosboot if tunable can only be changed by running bosboot and rebooting machine.
  • M for Mount if tunable is only effective for future filesystems or directory mountings.
  • I for Incremental if tunable can only be incremented, except at boot time

Any change (with -o, -d or -D) to a parameter of type Mount will result in a message being displayed to warn the user that the change is only effective for future mountings.

Any attempt to change (with -o, -d or -D) a parameter of type Bosboot or Reboot without -r, will result in an error message.

Any attempt to change (with -o, -d or -D but without -r) the current value of a parameter of type Incremental with a new value smaller than the current value, will result in an error message.

Note
The current set of parameters managed by ioo only includes Dynamic, Mount and Incremental types.
-? Displays the ioo command usage statement.

Compatibility Mode

When running in pre 5.2 compatibility mode (controlled by the pre520tune attribute of sys0, see Introduction to AIX 5L Version 5.2 tunable parameter setting in the Performance Management Guide), reboot values for parameters, except those of type Bosboot, are not really meaningful because in this mode they are not applied at boot time.

In pre 5.2 compatibility mode, setting reboot values to tuning parameters continues to be achieved by imbedding calls to tuning commands in scripts called during the boot sequence. Parameters of type Reboot can therefore be set without the -r flag, so that existing scripts continue to work.

This mode is automatically turned ON when a machine is MIGRATED to AIX 5L Version 5.2. For complete installations, it is turned OFF and the reboot values for parameters are set by applying the content of the /etc/tunables/nextboot file during the reboot sequence. Only in that mode are the -r and -p flags fully functional. See "AIX 5L Version 5.2 kernel tuning" in the Performance Tools Guide and Reference for details about the new AIX 5.2 mode.

Tunable Parameters

hd_pbuf_cnt
Purpose:
Specifies the total number of pbufs that the LVM uses.
Values:
  • Default: For the 32-bit kernel, the default is (4 + number of physical disks with an open logical volume) * 64. For the 64-bit kernel, the default is (4 + number of physical disks with an open logical valume) * 128.
  • Range:
  • Type: Incremental
Diagnosis:
Value of hd_pendqblked is non-zero, which indicates that LVM had to wait for pbufs. To see value of hd_pendqblked, use the vmstat -v command.
Tuning:
Useful to increase if there are a substantial number of simultaneous I/Os and value of hd_pendqblked is non-zero.
Refer To:
Miscellaneous I/O Tuning Parameters
lvm_bufcnt
Purpose:
Specifies the number of LVM buffers for raw physical I/Os.
Values:
  • Default: 9
  • Range: 1 to 64
  • Type: Dynamic
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
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
  • Type: Dynamic
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
maxrandwrt
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
  • Type: Dynamic
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
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)
  • Type: Dynamic
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
numclust
Purpose:
Specifies the number of 16 k clusters processed by the sequential write-behind algorithm of the VMM.
Values:
  • Default: 1
  • Range: 0 to any positive integer
  • Type: Dynamic
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
numfsbufs
Purpose:
Specifies the number of file system bufstructs.
Values:
  • Default: 186 (value is dependent on the size of the bufstruct)
  • Range:
  • Type: Mount
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
pd_npages
Purpose:
Specifies the number of pages that should be deleted in one chunk from RAM when a file is deleted.
Values:
  • Default: 65536
  • Range: 1 to largest filesize_in_pages
  • Type: Dynamic
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
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
  • Type: Dynamic
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
j2_maxPageReadAhead
Purpose:
Specifies the maximum number of pages to be read ahead when processing a sequentially accessed file on Enhanced JFS.
Values:
  • Default: 8
  • Range:
  • Type: Dynamic
Diagnosis:
N/A
Tuning:
The difference between minfree and maxfree should always be equal to or greater than j2_maxPageReadAhead. If run time decreases with higher a j2_maxPageReadAhead value, observe other applications to ensure that their performance has not deteriorated.
j2_maxRandomWrite
Purpose:
Specifies a threshold for random writes to accumulate in RAM before subsequent pages are flushed to disk by the Enhanced JFS's write-behind algorithm. The random write-behind threshold is on a per-file basis.
Values:
  • Default: 0
  • Range:
  • Type: Dynamic
Diagnosis:
N/A
Tuning:
Useful if too many pages are flushed out by syncd.
j2_minPageReadAhead
Purpose:
Specifies the minimum number of pages to be read ahead when processing a sequentially accessed file on Enhanced JFS.
Values:
  • Default: 2
  • Range:
  • Type: Dynamic
Diagnosis:
N/A
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.
j2_nBufferPerPagerDevice
Purpose:
Specifies the number of file system bufstructs for Enhanced JFS.
Values:
  • Default: 512
  • Range:
  • Type: Mount
Diagnosis:
Using vmstat -v, the value of xpagerbufwaitcnt increases fast.
Tuning:
If the kernel must wait for a free bufstruct, it puts the process on a 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.
j2_nPagesPerWriteBehindCluster
Purpose:
Specifies the number of pages per cluster processed by Enhanced JFS's write behind algorithm.
Values:
  • Default: 32
  • Range:
  • Type: Dynamic
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.
j2_nRandomCluster
Purpose:
Specifies the distance apart (in clusters) that writes have to exceed in order for them to be considered as random by the Enhanced JFS's random write behind algorithm.
Values:
  • Default: 0
  • Range:
  • Type: Dynamic
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 random and random write behind is enabled (j2_maxRandomWrite).

Examples

  1. To list the current and reboot value, range, unit, type and dependencies of all tunables parameters managed by the ioo command, type:
    ioo -L 
  2. To turn sync_release_ilock on, type:
     ioo -o sync_release_ilock=1  
  3. To display help on j2_nPagesPerWriteBehindCluster, type:
    ioo -h j2_nPagesPerWriteBehindCluster 
  4. To set maxrandwrt to 4 after the next reboot, type:
    ioo -r -o maxrandwrt=4
  5. To permanently reset all ioo tunable parameters to default, type:
     ioo -p -D 
  6. To list the reboot value of all ioo parameters, type:
     ioo -r -a

Related Information

The nfso command, no command, schedo command, tuncheck command, tundefault command, tunrestore command, tunsave command, and vmo command.

Kernel Tuning in AIX 5L Version 5.2 Performance Tools Guide and Reference.

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