环境:
OS:Aix 5.3
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
查看目前系统异步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.
阅读(8002) | 评论(0) | 转发(0) |