HP-UX AIO 配置
本文针对 HP-UX 11.31 版本,补丁为 2009Jun1131
1、为什么要采用AIO
在Hp-ux中,当采用同步IO的方式时,这就意味着在下一次写IO进行之前,前一次IO必须返回"成功写完成"的信息,可以看到同步IO方式在IO负荷比较大的系统存在着性能的瓶颈。而采用异步IO方式时,在写请求发出之后操作系统会立即反回给应用一个写成功的信息,余下的事就由操作系统完成了。在 Hp-ux中使用Oracle、Sybase这些数据库时,为减少IO的瓶颈、提高库的性能,建议打开异步IO,Hp在这方面相对Aix来说相对麻烦一些( AIX 6.1 以后 已经采用了动态的 AIO,已经没有AIO设备了)
2、如何创建 AIO
----Hp-ux11.31 使用Aio的补丁为:累积补丁包。
#swlist -l product |grep async
PHKL_38305 1.0 asyncdsk cumulative patch
----如果没有async 设备,创建aio的字符设备(HP-UX 11.31默认生成该设备 )
#ls /dev/async* //查看是否有这两个文件
/dev/async /dev/asyncdsk
#/sbin/mknod /dev/async c 101 0x0 //建立aio字符设备
#chown oracle:dba /dev/async //调整设备的属主,这个例中假定用户为oracle,组为dba
#chmod 660 /dev/async
----内核参数调整
a、把asyncdsk 11.31不需要调整
sam-> Kernel Configuration -> Drivers->asyncdsk调整为in
#reboot
b、调整max_async_ports参数
这个参数限定的是同时使用/dev/async设备的最大进程数,对于Oracle这个参数应大于等于init.ora中的 processes+后台的进程数,对于sybase它所标识的是最大的工作进程数。当max_async_ports的值达到时,其余的进程将采用同步 IO的方式。
c、调整set aio_max_ops参数
这个参数所限定的是在任意一个时间点排队的Aio操作的最大的数目,一般保持默认值就可以,可以用glance监测一下。
d、调整fs_async参数
这个参数表明的是对文件系统的写是否采用Aio的方式,设定fs_async=0指定对于文件系统写不用Aio,设定fs_async=1则指定使用aio的方式,Oracle不建议将这个什设置为1
注意:11.31不需要调整以上参数,都是动态的。
aio_iosize_max Dynamic 0 0 0 - aio
aio_listio_max Dynamic 256 256 256 - aio
aio_max_ops Dynamic 2048 2048 2048 - aio
aio_monitor_run_sec Dynamic 30 30 30 - aio
aio_physmem_pct Dynamic 10 10 10 - aio
aio_prio_delta_max Dynamic 20 20 20 - aio
aio_proc_max Dynamic 0 0 0 - aio
aio_proc_thread_pct Dynamic 70 70 70 - aio
aio_proc_threads Dynamic 1024 1024 1024 - aio
aio_req_per_thread Dynamic 1 1 1 - aio
fs_async Static 0 0 0 - fs
max_async_ports Dynamic 4096 4096 4096 - asyncdsk
-----oracle用户的组
(一般为dba)设定MLOCK的权限,否则在数据库启动会报错或在库运行时会出现莫名其妙的数据库hang的现象。
两种方式设置:
a、涉及到两个命令getprivgrp用于检查组有什么权限,setprivgrp用于设定组的权限,举个例子大家就明白了
eg1:检查dba组是否有MLOCK的权限
root#getprivgrp dba
eg2:设定dba组的MLOCK的权限
roolt#setprivgrp dba MLOCK
b、也可以把设定加入配置文件中,这样在下次启动时就自动生效了。
在/etc/privgroup中加入如下的一行:
dba MLOCK
如果privgroup不存在,可以编辑一个。
#setprivgrp -f /etc/privgroup
3、检查一下aio是否生效了
#fuser /dev/async
/dev/async: 9064o 27599o 8898o 27601o 19524o 16677o 27605o
有进程列出来说明aio已经生效了。
查看oracle $ORACLE_BASE/admin/$ORACLE_SID/udump 是否生成 .trc 文件产生 AIO 相关的错误报告
查看oracle $ORACLE_BASE/admin/$ORACLE_SID/bdump 是否生成 .trc 文件产生 AIO 相关的错误报告
#su - oracle
#cd $ORACLE_BASE/admin/$ORACLE_SID/
#ls
adump bdump cdump dpdump pfile udump
#cd udump
#rm -f *
#ls -l //确认是否生成.trc文件
#cd ../bdump
#rm -f *
#ls -l //确认是否还生成.trc文件
4、oracle数据库相关参数配置
SQL> show parameter disk_asyn
SQL> show parameter filesystemio_option
a、当oracle数据库存储方式采用 裸设备时。采用以下参数设计:
SQL> alter system set disk_asynch_io=TRUE scope=spfile //该参数不是动态的
SQL> alter system set filesystemio_options=async scope=spfile //该参数不是动态的
b、当oracle10.2版本的数据库存储方式为 文件系统时,采用以下参数设计:
SQL> alter system set disk_asynch_io=false scope=spfile //该参数不是动态的
SQL> alter system set filesystemio_options=none scope=spfile //该参数不是动态的
以上参数的改变都要重启数据库。
-----------------------------------------------------------------------------------------------------------
说明:
On HP-UX, when the Oracle datafiles reside on a filesystem, then the DBWR
process(es) make synchronous writes to these datafiles. This means that each
write must return with a 'succesful completion' before the next write is
issued. This serial operation can lead to a i/o bottleneck. There are two ways
to counteract this:
a. configure multiple DBWR processes
b. use asynchronous i/o
Before deciding on one of these two options, it should be noted that on HP-UX,
aio is *only* possible on a raw device. Put in another way, aio *cannot* be used
on a filesystem.
Multiple DBWRs can be used on a filesystem.
It is not recommended to use both multiple DBWRs and aio.
oracle数据库参数 FILESYSTEMIO_OPTIONS 说明:
You can use the FILESYSTEMIO_OPTIONS initialization parameter to enable or
disable asynchronous I/O or direct I/O on file system files. This parameter is
platform-specific and has a default value that is best for a particular platform. It can be dynamically changed to update the default setting.
FILESYTEMIO_OPTIONS can be set to one of the following values:
■ ASYNCH: enable asynchronous I/O on file system files, which has no timing
requirement for transmission.
■ DIRECTIO: enable direct I/O on file system files, which bypasses the buffer
cache.
■ SETALL: enable both asynchronous and direct I/O on file system files.
■ NONE: disable both asynchronous and direct I/O on file system files.
阅读(13304) | 评论(0) | 转发(0) |