Aix平台打开异步io需要fileset支持
引用
# lslpp -l bos.rte.aio
  Fileset                      Level  State      Description        
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  bos.rte.aio               5.3.0.60  COMMITTED  Asynchronous I/O Extension
Path: /etc/objrepos
  bos.rte.aio               5.3.0.60  COMMITTED  Asynchronous I/O Extension

查看异步io是否已经打开,available表示已经开启
引用
# lsattr -El aio0
autoconfig available STATE to be configured at system restart True
fastpath   enable    State of fast path                       True
kprocprio  39        Server PRIORITY                          True
maxreqs    4096      Maximum number of REQUESTS               True
maxservers 10        MAXIMUM number of servers per cpu        True
minservers 1         MINIMUM number of servers                True
 
引用
# aioo -a
               minservers = 1
               maxservers = 10
                  maxreqs = 4096
               fsfastpath = 0
 
当然也可以通过以下命令启用aio
引用
# chdev -P -l aio0 -a autoconfig='available'
aio0 changed
修改maxreqs时报如下错误
引用
# chdev -l aio0 -a maxreqs=16384
Method error (/usr/lib/methods/chgaio):
        0514-064 Cannot perform the requested function because the
                 AIO kernel extension is permanent and cannot be unloaded.
解决办法如下
引用
#  chdev -l aio0 -P  -a maxreqs=16384
aio0 changed
可以仔细了解一下-P参数的作用
引用
-P
Changes the device's characteristics permanently in the Customized Devices object class without actually changing the device.This is useful for devices that cannot be made unavailable and cannot be changed while in the available state. The change ismade to the database, and the changes are applied to the device when the system is rebooted. This flag cannot be used withthe -T flag. Not all devices support the -P flag.

查看aio进程数
引用
# pstat -a | grep aio
20 a    1478      1   1478     0     0     1  posix_aioserver 
21 a    1540      1   1540     0     0     1  aioserver 
48 a    30c4      1   30c4     0     0     1  aioserver 
50 a    3250      1   3250     0     0     1  aioserver 
68 a    44be      1   44be     0     0     1  aioserver 
75 a    4baa      1   4baa     0     0     1  aioserver 
76 a    4ca6      1   4ca6     0     0     1  aioserver 
80 a    50b6      1   50b6     0     0     1  aioserver 
89 a    59bc      1   59bc     0     0     1  aioserver 
125 a    7d28      1   7d28     0     0     1  aioserver 
127 a    7f0c      1   7f0c     0     0     1  aioserver 

查看目前系统异步io是否遇到瓶颈
引用
# iostat -A 1 1
System configuration: lcpu=1 drives=3 paths=0 vdisks=0
aio: avgc avfc maxg maif maxr avg-cpu: % user % sys % idle % iowait
        0    0   33    0 4096             0.4   0.8   98.8      0.0
Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk1           0.0       0.0       0.0          0         0
hdisk0           0.0       0.0       0.0          0         0
cd0              0.0       0.0       0.0          0         0

下面的列表描述了用于监视 AIO 子系统的一些参数。
    * avfc:这个参数用于报告在指定的时间间隔内每秒的平均快速路径请求计数。
    * avgc:这个参数用于报告在指定的时间间隔内每秒的平均全局异步 I/O 请求。
    * maxgc:这个参数用于报告从上一次获取这个值以来最大的全局异步 I/O 请求。
    * maxfc:这个参数用于报告从上一次获取这个值以来快速路径请求计数的最大值。
    * maxreqs:这个参数是允许的、异步 I/O 请求的最大值。
在我们的示例中,AIO 服务器不是系统瓶颈。
需要注意的是在AIX 6L中异步io会自动开启,maxreqsminservers、maxservers也会根据应用而自动调整,无须人工干预,当然也没有smitty aio这条命令了,呵呵
附:metalink的说明
Solution
AIX 5L supports asynchronous I/O (AIO) for database files created both on file system partitions and on raw devices.
AIO on raw devices is implemented fully into the AIX kernel, and does not require database processes to service the AIO requests.
When using AIO on file systems, the kernel database processes (aioserver) control each request from the time a request is taken off the queue to the time it is completed. The number of aioserver servers determines the number of AIO requests that can be processed in the system concurrently. So, it is important to tune the number of aioserver processes when using file systems to store Oracle Database data files.
Use one of the following commands to set the number of servers. This applies only when using
asynchronous I/O on file systems rather than raw devices:
smit aio
chdev -l aio0 -a maxservers=' m ' -a minservers='n'
Set the minimum value to the number of servers to be started when the system is started. Set the maximum value to the number of servers that can be started in response to a large number of concurrent requests. These parameters apply to file systems only. They do not apply to raw devices.
The default value for the minimum number of servers is 1. The default value for the maximum number of servers is 10. These values are usually too low to run Oracle Database on large systems with 4 CPUs or more, if you are not using kernelized AIO. Oracle recommends that you set the parameters to the values listed in the following table.
Parameter Values
=============

minservers
Oracle recommends an initial value equal to the number of CPUs on the system or 10, whichever is lower.

maxservers
Starting with AIX 5L version 5.2, this parameter counts the maximum number of AIO servers per CPU. On previous versions of AIX, it was a systemwide value. If you are using GPFS, then set maxservers to worker1threads divided by the number of CPUs. This is the optimal setting.
Increasing maxservers does not lead to improved I/O performance. If you are using JFS/JFS2, then set the initial value to 10 times the number of logical disks divided by the number of CPUs.

Monitor the actual number of aioservers started during a typical workload using the pstat or ps commands. If the actual number of active aioservers is equal to the maxservers, then increase the maxservers value.

maxreqs
Set the initial value to 4 times the number of logical disks multiplied by the queue depth. You can determine the queue depth by running the following command:
$ lsattr -E -l hdiskxx
Typically, the queue depth is 3.
If the value of the maxservers or maxreqs parameter is set too low, then the following warning messages are repeatedly displayed:
"Warning: lio_listio returned EAGAIN
Performance degradation may be seen."
You can avoid these errors by increasing the value of the maxservers parameter. To display the number of AIO servers running, enter the following commands as the root user:
# pstat -a | grep -c aios
# ps -k | grep aioserver
Check the number of active AIO servers periodically, and change the values of the minservers and maxservers parameters if required. The changes take place when the system is restarted.