ioo Command

Purpose

Manages I/O tunable parameters.

Syntax

ioo [ -p | -r [ -K ]] [ -y ]{ -o Tunable [ =NewValue ] } 
ioo [ -p | -r [ -K ]] [ -y ] { -d Tunable } 
ioo [ -p | -r [-K ]] [ -y ] -D
ioo [ -p | -r | -K ] [  -F  ] -a
ioo -h [ Tunable ]
ioo [ -F ] [ -K ] -L [ Tunable ]
ioo [ -F ] [ -K ] -x [ Tunable ]
Note: Multiple flags such as -o, -d, -x, and -L flags are allowed.

Description

Note: The ioo command is executed only by the root user.

The ioo command configures input/output (I/O) tuning parameters. This command sets or displays the current or next boot values for all I/O tuning parameters. This command can also make permanent changes or defer changes until the next reboot. An accompanying flag determines whether the command sets or displays a parameter. The -o flag can either display the value of a parameter or set a new value for a parameter.

If a process reads sequentially from a file, the values that are specified by the minpgahead parameter determines the number of pages to be read ahead when the condition is first detected. The value that is 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 that is processed by the write behind algorithm (numclust).

Note: The tunable variables that apply to the entire system might not be modified from within a workload partition.
The effect of changing the tunable parameters
The misuse of ioo command can cause performance degradation or operating system failure. Before experimenting with the ioo command, refer Performance overview of the Virtual Memory Manager.

For more information on modifying any tunable parameter and its purpose, see the characteristics of the tunable parameter in the Tunable parameters section.

Make sure that the Diagnosis and Tuning sections of the tunable parameter applies to your situation. Changing the value of the tunable parameter might improve the performance of your system.

If both the Diagnosis and Tuning sections contain only N/A, do not change the tunable parameter unless directed by AIX development.

Flags

Table 1. Flags
Item Description
-h [ Tunable ] Displays the help information about the specified tunable parameter. If the tunable parameter is not specified, the -h flag displays the usage statement of the ioo command.
-a Displays current value, reboot value (when used with the -r flag), Live Update values (when used with the -K flag), or permanent value (when used with -p flag) for all the tunable parameters, one per line in pairs tunable = value. For the permanent option, a value is displayed for a tunable parameter only if its reboot and current values are equal. Otherwise, NONE is displayed as the value.
-d Tunable Resets the specified tunable parameters to its default value. If the tunable parameter that must be changed because it is not set to its default value, meets one or more of the following set of criterias, a warning message is displayed and no change is made to the tunable parameter:
  • The tunable parameter is of the type Bosboot or Reboot.
  • The tunable parameter is of the type Incremental and is changed from its default value, and the -r flag is not used in combination.
  • The tunable parameter is of the type Reboot and is supported across the Live Update operation.

For more information about the different types of tunable parameters, see Tunable parameters categories.

-D Resets all the tunable parameters to their default value. If the tunable parameter that must be changed because it is not set to its default value, meets one or more of the following sets of criterias, a warning message is displayed and no change is made to the tunable parameter:
  • The tunable parameter is of the type Bosboot or Reboot.
  • The tunable parameter is of the type Incremental and is changed from its default value, and the -r flag is not used in combination.
  • The tunable parameter is of the type Reboot and is supported across the Live Update operation.

For more information about the different types of tunable parameters, see Tunable parameters categories.

-F Forces restricted tunable parameters to be displayed when you specify the -a, -L, or -x flag on the command line. If you do not specify the -F flag, restricted tunables are not included, unless they are named in association with a display flag, such as -o, -a, -x, or -L flag.
-K Sets the tunable parameter value in both /etc/tunables/nextboot and /etc/tunables/nextliveupdate files. The -K flag is used only with the -r flag.

When you specify the -K flag with the -r and -d flags or with the -r and -D flags, the tunable parameter value is set to its default value in the /etc/tunables/nextboot and /etc/tunables/nextliveupdate files to be used during the next boot or Live Update operations.

When you specify the -K flag with the -L or -x flag, the ioo command displays the Live Update values.

-L [ Tunable ] Lists the characteristics of one or all tunable parameters, one per line, by using the following format:

NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE 
     DEPENDENCIES 
------------------------------------------------------------------------------------
minpgahead                2      2      2      0      4K     4KB pages         D 
     maxpgahead 
------------------------------------------------------------------------------------
maxpgahead                8      8      8      0      4K     4KB pages         D 
     minpgahead 
------------------------------------------------------------------------------------ 
pd_npages                 64K    64K    64K    1      512K   4KB pages         D 
------------------------------------------------------------------------------------ 
maxrandwrt                0      0      0      0      512K   4KB pages         D 
------------------------------------------------------------------------------------ 
numclust                  1      1      1      0             16KB/cluster      D 
------------------------------------------------------------------------------------ 
numfsbufs                 196    196    196                                    M 
-------------------------------------------------------------------------------- 
recoveryMode              1      1      1      0      1      N/A               D 
-------------------------------------------------------------------------------- 
... 
where: 
    CUR = current value 
    DEF = default value 
    BOOT = reboot value 
    MIN = minimal value 
    MAX = maximum value 
    UNIT = tunable unit of measure 
    TYPE = parameter type: D (for Dynamic), S (for Static), R (for Reboot),
               B (for Bosboot), M (for Mount), I (for Incremental),
               C (for Connect), and d (for Deprecated) 
    DEPENDENCIES = list of dependent tunable parameters, one per line
If you specify the -K flag with the -L flag, the Live Update values are also displayed.
-o Tunable [=NewValue ] Displays or sets the value of a tunable parameter to a new value. The /etc/tunables/usermodified file is updated with the new tunable parameter value when you use the -o flag to change the value of a dynamic tunable parameter. If a tunable parameter that you want to change meets one or more of the following set of criterias, a warning message is displayed and no change is made to the tunable parameter:
  • The tunable parameter is of the type Bosboot or Reboot.
  • The tunable parameter is of the type Incremental, and its current value is greater than the specified value, and the -r flag is not used in combination.
  • The tunable parameter is of the type Reboot, and the tunable parameter is supported across the Live Update operation.

For more information about the different types of tunable parameters, see Tunable parameters categories.

When you specify the -r flag without a NewValue, the nextboot value for tunable parameter is displayed. When -K flag is used in combination with the -o flag without a NewValue, the next Live Update value for the tunable parameter is displayed. When -p flag is used with the -o flag without a NewValue, a value is displayed only if the current and next boot values for the tunable parameter are the same. Otherwise, NONE is displayed as the value.

-p Specifies that the changes apply to both the current value and reboot value when you specify with the -o, -d, or -D flag. The tunable parameter enables you to update the /etc/tunables/nextboot file along with the current value. These combinations cannot be used on Reboot and Bosboot type of tunable parameters. The current value for Reboot and Bosboot type of tunable parameter cannot be changed.

When you specify -a or -o flag without specifying a new value, the values display only if the current and next boot values for a tunable parameter are the same. Otherwise, NONE is displayed as a tunable value.

-r Makes changes that apply to reboot parameter values when used with the -o, -d, or -D flag. The tunable parameter enables you to update the /etc/tunables/nextboot file. If any tunable parameter of type Bosboot is changed, the user is prompted to run the bosboot command.

When -r flag is used with the -a or -o flag without specifying a new value, next boot values for tunable parameters are displayed instead of current values. When used with the -K flag, changes apply to both /etc/tunables/nextboot file and /etc/tunables/nextliveupdate file.

-x [Tunable] Lists the characteristics of one or all tunable parameters, one per line, by using the following spreadsheet format:
tunable,current,default,reboot,min,max,unit,type,{dtunable} 


where: 
    current = current value 
    default = default value 
    reboot = reboot value
    min = minimal value 
    max = maximum value 
    unit = tunable unit of measure 
    type = parameter type: D (for Dynamic), S (for Static), R (for Reboot),
               B (for Bosboot), M (for Mount), I (for Incremental),
               C (for Connect), and d (for Deprecated) 
    dtunable = space separated list of dependent tunable parameters
If you specify the -K flag with the -x flag, the Live Update values are also displayed.
-y Suppresses the confirmation prompt before the bosboot command is run.

If you modify a restricted tunable parameter, by using the -o, -d, or -D flag, it results in a warning message for the user stating that a tunable parameter of the restricted-use type is modified. If you also specify the -r or -p flag, you are prompted for confirmation of the change of the restricted tunable parameter. In addition, at system reboot, the presence of restricted tunable parameters, which are in the /etc/tunables/nextboot file, is modified to a value that is different from their default value, by using a command line that specifies the -r or -p flag. The modification of a restricted tunable parameter results in an error log entry that identifies the list of the modified tunable parameters.

When you modify a tunable parameter, you can specify a tunable parameter value by using the following abbreviations to indicate their correspondent values:
Table 2. Abbreviations for tunable parameter values
Abbreviation Power of two
K 210
M 220
G 230
T 240
P 250
E 260
Thus, a tunable parameter value of 1024 might be specified as 1 K.

A change with the -o, -d, or -D flag, to a tunable parameter of type Mount displays a warning message to the user stating that the change is only effective for future mountings.

A change with the -o, -d, or -D flag, to a tunable parameter of type Connect, restarts the inetd command and displays a warning message to the user stating that the change is only effective for future socket connections.

An attempt to change with the -o, -d, or -D flag, a tunable parameter of type Bosboot or Reboot without the -r flag, displays an error message.

An attempt to change with the -o, -d, or -D flag but without the -r flag the current value of a tunable parameter of type Incremental with a new value smaller than the current value, displays an error message.

Compatibility Mode

When you run the tunable parameter in pre-5.2 compatibility mode, which is controlled by the sys0 attribute that is called the pre520tune, reboot values for tunable parameters, except Bosboot, are not meaningful. In pre-5.2 compatibility mode they are not applied at boot time.

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

The pre-5.2 compatibility mode is automatically turned on when a machine is migrated to AIX 5.2. For complete installations, it is turned OFF and the reboot values for the tunable parameters are set by applying the content of the /etc/tunables/nextboot file during the reboot sequence. Only in that mode the -r and -p flags are fully functional. For more information, see Kernel Tuning in Performance Tools Guide and Reference.

Tunable Parameters

The tunable parameters that are manipulated by the tuning commands, such as no, nfso, vmo, ioo, raso, and schedo commands are classified into the following tunable parameter categories:
Table 3. Tunable parameters categories
Item Description
Dynamic If the tunable parameter can be changed at any time.
Static If the tunable parameter can never be changed.
Reboot If the tunable parameter can be changed only during reboot.
Bosboot If the tunable parameter can be changed only by using bosboot command and rebooting the machine.
Mount If changes to the tunable parameter are only effective for future file systems or directory mounts.
Incremental If the tunable parameter can be incrementally increased, except at boot time.
Connect If changes to the tunable parameter are only effective for future socket connections.
Deprecated If changes to the tunable parameter are no longer supported by the current release of AIX.
For tunable parameters of type Bosboot, whenever a change is performed, the tuning commands automatically prompts the user if they want to run the bosboot command. For tunable parameters of type Connect, the tuning commands automatically restart the inetd daemon.
Note: The current set of parameters that are managed by the ioo command includes only Static, Dynamic, Mount, and Incremental types of tunable parameters.
For the default values and range of values for the tunable parameters, enter the following command:
ioo -h
The following table lists the tunable parameters along with the description:
Table 4. Tunable parameters
Item Description
aio_active
Purpose
Indicates whether the Asynchronous I/O (AIO) kernel extension is used and pinned.
Tuning
A tuning value of 1 indicates that the AIO kernel extension is used and pinned.
aio_maxreqs
Purpose
Specifies the maximum number of asynchronous I/O requests that can be outstanding at one time.
Tuning
The specified number includes I/O requests that are in progress, as well as those requests that are waiting in queues to be initiated. The maximum number of asynchronous I/O requests cannot be less than the value of AIO_MAX field, as defined in the /usr/include/sys/limits.h file, but can be greater. For a system with a high volume of asynchronous I/O it is appropriate to have a maximum number of asynchronous I/O requests larger than the value of AIO_MAX field.
aio_maxservers
Purpose
Specifies the maximum number of AIO servers (kernel processes dedicated to asynchronous I/O processing) that are allowed to service slow path I/O requests.
Tuning
The tuning value is a per CPU value. The value of aio_maxservers cannot be less than aio_minservers. There can never be more than the value of aio_maxservers tunable parameter asynchronous I/O requests in progress at one time, so this number limits the possible I/O concurrency.
aio_minservers
Purpose
Specifies the minimum number of AIO servers (kernel processes dedicated to asynchronous I/O processing) that remain active to process slow path I/O requests.
Tuning
The tuning value is a per CPU value. The value of aio_minservers cannot be greater than the value of aio_maxservers. When the kernel extension is loaded, no AIO servers are created regardless of the current or default settings. This value allows a minimal AIO footprint on systems where AIO is never used. As I/O requests are initiated, AIO servers are created to service them until the maximum value allowed by aio_maxservers is reached. Once the aio_minservers value is exceeded, the number of servers does not become less than aio_minservers.
aio_server_inactivity
Purpose
Specifies how long an AIO server sleeps without servicing an I/O request.
Tuning
When this time limit is exceeded, the server exits, unless it causes the number of available servers to become less than aio_minservers. In this case, the server goes back to sleep. The time the server sleeps in this rare case is the larger of the times that are specified for the current and default values for aio_server_inactivity. It is a rare case and indicates that there might be an imbalance between the number of available servers and the amount of I/O.
aio_delegateiotodriverkth
Purpose
Specifies the threshold value to delegate the asynchronous I/O to the Virtual Persistent Memory (vPMEM) driver kernel thread.
Tuning
The lio_listio or lio_listio64 subroutine initiates a list of asynchronous I/O requests with a single call. If the number of asynchronous I/O requests in the list is greater than the aio_delegateiotodriverkth tunable parameter value and the underlying device is vPMEM, then the vPMEM driver delegates the asynchronous I/O to the kernel thread of the vPMEM driver to improve the performance. A value of 0 disables the aio_delegateiotodriverkth tunable parameter.
start of changeaio_queue_enhanced_searchend of change
Purpose
Specifies whether to use the existing or the enhanced algorithm to locate the AIO request in the queue.
Tuning
If this tunable parameter value is set to 1, an enhanced search algorithm is used to locate the AIO request in the queue, otherwise the existing algorithm is used. The performance of the AIO search request is improved with the enhanced algorithm. To switch between the algorithms, set the aio_queue_enhanced_search tunable parameter to the required value and restart the system. By default, the aio_queue_enhanced_search tunable parameter value is set to 1 and uses the enhanced search algorithm. Setting the tunable parameter value to 0 uses the existing algorithm.
dk_closed_path_recovery
Purpose
Enables or disables the support for recovering multipath I/O (MPIO) paths that were in the failed state when the MPIO disk was closed. The recovery operation is attempted periodically after the MPIO disk is closed until the MPIO path is recovered. If the MPIO paths are in the failed state and if the MPIO disk is already closed, the failed MPIO paths cannot be recovered when you set this tunable parameter to 1. You can open and close the MPIO disk, and initiate the recovery of MPIO paths for MPIO disks that are already closed by using the following command:
lsmpio -o -l hdiskX
This feature is supported by default on AIX path-control modules (PCMs).
Tuning
A tuning value of 0 disables the support for recovering MPIO paths that are in the failed state. The default value is 0.
A tuning value of 1 enables the support for recovering MPIO paths that are in the failed state.
dk_lbp_enabled
Purpose
Enables or disables the support for the Logical Block Provisioning (LBP) also known as thin-provisioning in the AIX® operating system. When disabled, AIX does not attempt to release the blocks that are not used from a thin-provisioned disk.
Tuning
A tuning value of 1 enables the LBP support. The default value is 1.
A tuning value of 0 disables the LBP support.
dk_lbp_num_bufs
Purpose
Defines the size for the pool of pre-allocated buffers that are used for the LBP support.
Tuning
Controls the maximum number of unmap requests that can be processed by the disk driver at any given time. The buffer pool is a system-wide resource pool. On any thin-provisioned disk, only one unmap request can be active at a time. The default value for this parameter is 64 buffers. For example, if you have 64 buffers then you have 32 KB (64 buffers x 512 bytes = 32 KB) of total pinned memory. The value of this tunable is in the range of 1-1024.
dk_lbp_buf_size
Purpose
Defines the size of each buffer in the LBP buffer pool. The default value is 512 bytes. This value can be changed to 4096 (4 KB), in which case, blocks can be released for those disks that support 4 KB block size.
Tuning
The tuning value for this tunable parameter must be the same as the largest supported block size by any disk attached with the AIX system.
j2_atimeUpdateSymlink
Purpose
If the j2_atimeUpdateSymlink tunable parameter is set to 1, the access time of JFS2 file system symbolic links is updated on the readlink requests.
Tuning
A value of 0 indicates that the access time of JFS2 file system symbolic links is not updated on the readlink request. There is a performance penalty that is associated with turning j2_atimeUpdateSymlink on, so this tunable must not be changed unless there is a real need for it. SUSv3 does not require that access time be updated on the readlink request. However JFS, and many other platforms do update the access time on the readlink request. This tunable is provided for compatibility with JFS and other UNIX conformant systems.
j2_dynamicBufferPreallocation
Purpose
Specifies the number of 16 K slabs to per-allocate when the file system is running low of file system buffers that are used to temporarily store data during I/O operations (bufstructs).
Tuning
A value of 16 represents 256 K. The file system does not need remounting. The bufstructs for JFS2 file system are now dynamic. The number of buffers that start on the paging device is controlled by the j2_nBufferPerPagerDevice tunable parameter, but the buffers are allocated and destroyed dynamically after this initial value. If the number of external pager file system I/Os blocked with no fsbuf (from vmstat -v) increases, the j2_dynamicBufferPreallocation tunable parameter must be increased for that file system, as the I/O load on the file system might be exceeding the speed of preallocation. A value of 0 disables dynamic buffer allocation completely.
j2_inodeCacheSize
Purpose
Controls the amount of memory that the JFS2 file system uses for the index node (inode) cache.
Tuning
The tuning value does not explicitly indicate the amount that is used, but is instead a scaling factor. The value of the j2_inodeCacheSize tunable parameter is used in combination with the size of the main memory to determine the maximum memory usage for the inode cache. The scaling factor of the inode cache size is calculated as the product of memory of the machine and the value of j2_inodeCacheSize tunable parameter that is divided by 4000. The default value of the j2_inodeCacheSize tunable parameter is 200 that means the inode cache size takes up to 5% of the machine memory. Adding and removing dynamic memory do not automatically change the size of the cache. The default value for this tunable parameter was changed in AIX version 7.1, but systems with smaller main memory sizes and that have large numbers of concurrent users or open files might perform better with the older default value of 400.
j2_maxPageReadAhead
Purpose
Specifies the maximum number of pages to be read ahead when a sequentially accessed file is processed on the JFS2 file system.
Tuning
The difference between the minfree parameter and maxfree parameter must always be equal to or greater than the value of the j2_maxPageReadAhead tunable parameter. If run time decreases when the value of the j2_maxPageReadAhead tunable parameter increases, ensure that the performance of the other applications does not deteriorate.
j2_maxRandomWrite
Purpose
Specifies a threshold value for random write operations to accumulate in random access memory (RAM) before subsequent pages are flushed to disk by the write-behind algorithm of the JFS2 file system.
Tuning
The random write-behind threshold value is on a per-file basis. This tunable parameter is useful if large number of pages are flushed out by the syncd daemon.
j2_metadataCacheSize
Purpose
Controls the amount of memory the JFS2 file system uses for the metadata cache.
Tuning
The tuning value does not explicitly indicate the amount that is used, but is instead a scaling factor. The value of the j2_metadataCacheSize tunable parameter is used in combination with the size of the main memory to determine the maximum memory usage for the metadata cache. The scaling factor of the metadata cache size is calculated as the product of memory of the machine and the value of j2_metadataCacheSize tunable parameter that is divided by 10000. The default value of the j2_metadataCacheSize tunable parameter is 200, which means the inode metadata size takes up to 2% of the machine memory. Adding and removing dynamic memory do not automatically change the size of the cache. The default value for this tunable parameter was changed in AIX version 7.1, but systems with smaller main memory sizes and that have large numbers of concurrent users or open files might perform better with the older default value of 400.
j2_minPageReadAhead
Purpose
Specifies the minimum number of pages to be read ahead when processing a sequentially accessed file on the JFS2 file system.
Tuning
Useful to increase if there are lots of large sequential accesses. Ensure that the performances of the other applications do not deteriorate. A value of 0 might be useful if I/O pattern is purely random.
j2_nPagesPerWriteBehindCluster
Purpose
Specifies the number of pages, per cluster, that is processed by the write-behind algorithm of the JFS2 file system.
Tuning
Useful to increase if more pages must be kept in RAM before they are scheduled for I/O, when the I/O pattern is sequential. It might be appropriate to increase, if striped logical volumes or disk arrays are used.
j2_nRandomCluster
Purpose
Specifies the distance apart (in clusters) that the write operation must exceed to be considered as random by the random write-behind algorithm of the JFS.
Tuning
Useful to increase if more pages must be kept in RAM before they are scheduled for I/O, when the I/O pattern is random and random write-behind is enabled by the j2_maxRandomWrite tunable parameter.
j2_recoveryMode
Purpose
Sets the behavior for recovery from JFS2 file system write errors.
Tuning
The default value of 1 indicates that automatic recovery from JFS2 file system write errors is set. The value of 0 indicates that the file systems remain in a degraded mode until unmounted.
j2_syncByVFS
Purpose
Changes the delay between each invocation of sync processing for a JFS2 file system.
Tuning
This tunable parameter allows JFS2 file systems to be synchronized at a rate that is different from the standard sync daemon period. When this tunable is set to a nonzero value, it is the number of seconds to delay between the iterations of sync processing for each JFS2 file system. By using this tunable, the sync operations can be spread out more than the sync daemon can spread because the sync daemon handles all file systems simultaneously. It also allows changing the number of threads that handle file system sync operations.
j2_syncConcurrency
Purpose
Changes the number of threads that are run to sync data to JFS2 file systems. Each thread operates on one file system at a time.
Tuning
When there are many file systems that are mounted, it might be necessary to increase this value to get all the file systems handled by the sync operation on a timely basis.
Note: This value is effective only when the j2_syncByVFS tunable parameter is nonzero.
j2_syncDelayReport
Purpose
Notifies if the time needed to sync the file systems exceeds a specified number of seconds.
Tuning
This tunable parameter sets the number of seconds that is allowed to complete sync processing for a file system. If that number is exceeded, a message is generated in the syslog file. This message is only informative and does not change any other behavior of the sync operation.
j2_syncPageCount
Purpose
Sets the maximum number of modified pages of a file that is written to disk by the sync system call in a single operation.
Tuning
When an application that uses file system caching is run and does large numbers of random writes, it might be necessary to adjust this setting to avoid lengthy delays during sync operations.
j2_syncPageLimit
Purpose
Sets the maximum number of times that the sync system call uses the j2_syncPageCount tunable parameter. This tunable parameter limits the number of pages that are written before increasing the j2_syncPageCount tunable parameter value to allow progress on the sync operation.
Tuning
This tunable parameter must be set when the j2_syncPageCount parameter is set and must be increased if the effect of the j2_syncPageCount parameter change is not sufficient.
start of changelvm_workQ_enhanced_searchend of change
Purpose
Specifies whether to use the existing or the enhanced search algorithm to locate the overlapped I/O in the logical volume work queue.
Tuning
If the start of changelvm_workQ_enhanced_searchend of change tunable parameter value is set to 1, the enhanced search algorithm is used to locate the overlapped I/O in the logical volume work queue. Otherwise, the existing algorithm is used. The performance of searching the overlapped I/O is improved by the enhanced algorithm.
To switch between the algorithms, a logical volume must be closed and reopened by changing the value of the start of changelvm_workQ_enhanced_searchend of change tunable parameter to the required value. By default, this tunable parameter value is set to 0 and uses the existing search algorithm.
lvm_bufcnt
Purpose
Specifies the number of LVM buffers for raw physical I/Os.
Tuning
Applications performing large writes to striped raw logical volumes do not obtain the wanted throughput rate. LVM splits large raw I/Os into multiple buffers of 128 KB a piece. A 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 might help the throughput of the application. If a system performs larger than 1 MB raw I/Os, it might be useful to increase this value.
maxpgahead
Purpose
Specifies the maximum number of pages to be read ahead when a sequentially accessed file is processed.
Tuning
This tunable parameter value must be a power of two and must be greater than or equal to the minpgahead tunable parameter value. Observe the elapsed execution time of critical sequential-I/O-dependent applications with the time command. Because of limitations in the kernel, do not exceed 512 as the maximum value. The difference between minfree and maxfree parameter must always be equal to or greater than the value of maxpgahead tunable parameter. If execution time decreases with higher value of maxpgahead tunable parameter, observe other applications to ensure that their performance does not deteriorate.
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.
Tuning
The random write-behind threshold is on a per-file basis. The maximum value indicates the largest file size, in pages. You can change the value if the vmstat n command shows page-out and I/O wait time peaks at regular intervals (usually when the sync daemon is writing pages to disk). It is useful to set this value to 1 or higher if numerous I/O occurs when syncd command runs. A value of 0 disables random write-behind and indicates that random writes stay in RAM until a sync operation occurs. Setting the maxrandwrt tunable parameter ensures that these writes get flushed to disk before the sync operation occurs. However, it might degrade performance because the file is then flushed each time before a sync operation. Tune this option to favor interactive response time over throughput. After the threshold is reached, all subsequent pages are then flushed to disk. The pages up to the threshold value stay in RAM until a sync operation occurs.
numclust
Purpose
Specifies the number of 16 KB clusters that are processed by the sequential write-behind algorithm of the VMM.
Tuning
Useful to increase if more pages must be kept in RAM before they are scheduled for I/O, when the I/O pattern is sequential. It might be appropriate to increase if striped logical volumes or disk arrays are used.
numfsbufs
Purpose
Specifies the number of file system bufstructs.
Tuning
File system must be remounted. 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 wakes it up once a bufstruct is available. might be appropriate to increase if striped logical volumes or disk arrays are used.
pd_npages
Purpose
Specifies the number of pages that must be deleted in one chunk from RAM when a file is deleted.
Tuning
The maximum value indicates the largest file size, in pages. Real-time applications experience sluggish response time while files are being deleted. Tuning this option is only useful for real-time applications. If real-time response is critical, adjusting this option might improve response time by spreading the removal of file pages from RAM more evenly over a workload.
posix_aio_active
Purpose
Indicates whether the AIO kernel extension is used and pinned.
Tuning
A tunable value of 1 indicates that the AIO kernel extension is used and pinned.
posix_aio_maxreqs
Purpose
Specifies the maximum number of asynchronous I/O requests that can be outstanding at one time.
Tuning
The specified number includes I/O requests that are in progress, as well as those requests that are waiting in queues to be initiated. 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 is 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.
posix_aio_maxservers
Purpose
Specifies the maximum number of AIO servers (kernel processes dedicated to asynchronous I/O processing) allowed to service slow path I/O requests.
Tuning
This tunable parameter value is a per-processor value. The value of posix_aio_maxservers tunable parameter cannot be less than the value of posix_aio_minservers tunable parameter. There can never be more than the value of posix_aio_minservers tunable parameter asynchronous I/O requests in progress at one time, so this number limits the possible I/O concurrency.
posix_aio_minservers
Purpose
Specifies the minimum number of AIO servers (kernel processes dedicated to asynchronous I/O processing) that remain active to process slow path I/O requests.
Tuning
This tunable parameter value is a per-CPU value. The tunable value of posix_aio_minservers tunable parameter cannot be greater than the value of posix_aio_maxservers tunable parameter. When the kernel extension is loaded, no AIO servers are created, regardless of the current or default settings. This handling allows a minimal AIO footprint on systems where AIO is never used. As I/O requests are initiated, AIO servers are created to service them until the maximum value that is allowed by the posix_aio_maxservers tunable parameter is reached. Once the value of posix_aio_minservers tunable parameter values exceed, the number of servers does not become less than the value of the posix_aio_minservers tunable parameter.
posix_aio_server_inactivity
Purpose
Specifies how long an AIO server sleeps without servicing an I/O request.
Tuning
When the time limit is exceeded, the server exits, unless it causes the number of available servers to become less than the value of posix_aio_minservers tunable parameter. In this case, the server goes back to sleep. The time the server sleeps in this rare case is the larger of the times that are specified for the current and default values for posix_aio_server_inactivity tunable parameter. It is a rare case and indicates that there might be an imbalance between the number of available servers and the amount of I/O.
posix_aio_delegateiotodriverkth
Purpose
Specifies the threshold value to delegate the asynchronous I/O to the vPMEM driver kernel thread.
Tuning
The lio_listio or lio_listio64 subroutine initiates a list of asynchronous I/O requests with a single call. If the number of asynchronous I/O requests in the list is greater than the value of the posix_aio_delegateiotodrPivuerproksteh tunable parameter and the underlying device is vPMEM, then the vPMEM driver delegates the asynchronous I/O to the kernel thread of the vPMEM driver to improve the performance. A value of 0 disables the posix_aio_delegateiotodrPivuerproksteh tunable parameter.
start of changeposix_ aio_queue_enhanced_searchend of change
Purpose
Specifies whether to use an existing or enhanced search algorithm to locate the AIO request in the queue.
Tuning
If this tunable parameter value is set to 1, an enhanced search algorithm is used to locate the AIO request in the queue. Otherwise, an existing algorithm is used. The performance of AIO search request is improved with the enhanced search algorithm. To switch between the algorithms, set the posix_ aio_queue_enhanced_search tunable parameter to the required value and restart the system. By default, the posix_aio_queue_enhanced_search tunable parameter value is set to 1 and uses the enhanced search algorithm. Setting the tunable parameter value to 0 uses the existing algorithm.

Memory usage and statistics

  • To display the memory usage of the file system, enter the following command:
    cat /proc/sys/fs/jfs2/memory_usage

    This returns the metadata cache, the inode cache, and the total memory usage in bytes.

  • To display the statistics of the file system, enter the following command:
    cat /proc/sys/fs/jfs2/statistics

    This returns the number of icache hits, icache misses, and icache activates.

  • To display the system statistics that are related to the LBP support such as the number of times the out-of-buffer value appears and the number of times the unmap operation failed, enter the following command:
    cat/proc/sys/disk/lbp/statistics

Security

Attention RBAC users: This command can perform privileged operations. Only privileged users can run privileged operations. For more information about authorizations and privileges, see Privileged Command Database in Security. For a list of privileges and the authorizations that are associated with this command, see the lssecattr command or the getcmdattr subcommand.

Examples

  1. To list the current and reboot value, range, unit, type, and dependencies of the tunable parameters that are managed by the ioo command, enter the following command:
    ioo -L 
  2. To list the current, default, and reboot values, range, unit, and type of the j2_recoveryMode tunable parameter, enter the following command:
    ioo -L j2_recoveryMode
    The result might be similar to the following output:
    NAME              CUR    DEF    BOOT   MIN    MAX    UNIT          TYPE
    -----------------------------------------------------------------------
    recoveryMode       1      1       1     0      1      n/a            D
    -----------------------------------------------------------------------
  3. To display the help information for the j2_nPagesPerWriteBehindCluster tunable parameter, enter the following command:
    ioo -h j2_nPagesPerWriteBehindCluster 
  4. To set the maxrandwrt tunable parameter to 4 after the next reboot, enter the following command:
    ioo -r -o maxrandwrt=4
  5. To permanently reset all ioo tunable parameters to default, enter the following command:
    ioo -p -D 
  6. To list the reboot value of all ioo tunable parameters, enter the following command:
    ioo -r -a
  7. To list as spreadsheet format, the current value and reboot value, range, unit, type, and dependencies of the tunables parameters that are managed by the ioo command, enter the following command:
    ioo -x