如何在Hp的主机打开异步IO

原创 2003年12月31日 14:08:00

一、说说异步IO(Aio)
   在Hp-ux中,当采用同步IO的方式时,这就意味着在下一次写IO进行之前,前一次IO必须返回"成功写完成"的信息,可以看到同步IO方式在IO负荷比较大的系统存在着性能的瓶颈。而采用异步IO方式时,在写请求发出之后操作系统会立即反回给应用一个写成功的信息,余下的事就由操作系统完成了。在Hp-ux中使用Oracle、Sybase这些数据库时,为减少IO的瓶颈、提高库的性能,建议打开异步IO,Hp在这方面相对Aix来说相对麻烦一些。

二、Hp-ux方面打开Aio需要做的设置
1、Hp-ux使用Aio的补丁要求
 a、Hp-ux 11.00的补丁要求为:
   PHKL_22126: s700_800 VM,async,hyperfabric
 b、HP-UX 11i的补丁要求为:
   PHKL_25212 vm preemption point, mlock/async_io
   PHKL_25506 asyncio driver patch
   使用swlist -l product检查一下有无如上的补丁,如没有联系Hp的supporter将其打上。
2、创建aio的字符设备
 a、建立aio字符设备
   #/sbin/mknod /dev/async c 101 0x0
 b、调整设备的属主,这个例中假定用户为oracle,组为dba
   #chown oracle:dba /dev/async
 c、调整设备的权限位
   #chmod 660 /dev/async
3、Hp-ux要要调整的内核参数
  调整内核参数据需要使用root用户
  a、把asyncdsk置为in
    sam-> Kernel Configuration -> Drivers->asyncdsk调整为in
  b、调整max_async_ports参数
    这个参数限定的是同时使用/dev/async设备的最大进程数,对于Oracle这个参数应大于等于init<sid>.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
4、其它方面设置
  重中之重的一点是一定要为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不存在,可以编辑一个。

三、数据库方面使用Aio要要做的设置
1、oracle方面
 a. 7.3.0以前的版本   :不需要配置init<sid>.ora中的参数
 b. 7.3.X             :在init<sid>.ora中设定use_async_io = TRUE
 c. 8.X 及以后的版本  :在init<sid>.ora中设定disk_asynch_io = TRUE
2、sybase方面
  默认就是打开aio的。

四、其它
1、检查一下aio是否生效了
  #fuser /dev/async
  有进程列出来说明aio已经生效了。
2、我的hp11.00+oracle8.1.6.0.0的环境启用aio时而不时的会出现坏块的问题(ora-01578),请大家注意,但在hp11i的系统与Oracle8i,9i配  合中没出现过这个问题。

Windows 异步IO的几种实现方式

Windows上的异步IO有好几种实现方式。 设备内核对象 这是最简单的一种了,直接用设备内核对象的状态。比如文件句柄,线程句柄等等,这些内核对象都是有一个触发状态的,比如当一个线程结束后...
  • zj510
  • zj510
  • 2015年03月26日 18:00
  • 7212

linux异步IO编程实例分析

linux异步IO编程实例分析
  • ixidof
  • ixidof
  • 2016年04月21日 18:16
  • 722

启用oracle异步IO机制

最近在研究如何在IO竞争的情况下,如果存储级别已经无法优化,还有其他什么办法解决IO竞争问题。最后想到了异步IO。 我的redo写磁盘的速度已经达到了最大值,无论我如何调整redo大小和组数,无论我...
  • zhou689689
  • zhou689689
  • 2014年11月21日 17:24
  • 1110

Oracle在Linux下使用异步IO配置

转自:http://blog.itpub.net/21601207/viewspace-677887/ Oracle在Linux下使用异步IO配置  最近在测试...
  • yongjiao124
  • yongjiao124
  • 2016年04月25日 08:54
  • 814

深入剖析Nodejs的异步IO

前言:Nodejs最赖以自豪的优势莫过于“单线程实现异步IO”了,也许你仍然丈二和尚摸不着头脑,Nodejs自我标榜是单线程,还能实现异步IO操作,这两者难道不是相互矛盾的么?葫芦里到底藏着什么药? ...
  • yezhenxu1992
  • yezhenxu1992
  • 2016年06月22日 00:55
  • 3830

linux异步IO的两种方式

知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上。预先知道这些数据的位置,所以预先发起异步IO读请求。等到真正需要用到...
  • u012398613
  • u012398613
  • 2014年04月03日 21:48
  • 3027

Java IO:阻塞/非阻塞式IO、同步/异步IO

引言 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实...
  • hll174
  • hll174
  • 2016年04月21日 22:57
  • 1497

linux异步IO编程实例分析

http://rdc.taobao.com/blog/cs/?p=1583#more-1583 在Direct IO模式下,异步是非常有必要的(因为绕过了pagecache,直接和磁盘交互)。l...
  • cjsycyl
  • cjsycyl
  • 2013年07月15日 14:52
  • 1612

深入理解非阻塞同步IO和非阻塞异步IO

这篇文章分析了Linux下的5种IO模型 http://blog.csdn.net/hguisu/article/details/7453390 很多人对阻塞 / 非阻塞, 同步 / 异步 的概...
  • ITer_ZC
  • ITer_ZC
  • 2014年09月15日 13:45
  • 14271

oracle数据库中的异步IO

linux 2.4以上是支持异步IO了,oracle 10g r2开始都默认使用异步IO了,关于异步IO可以参考http://www.ibm.com/developerworks/cn/linux/l...
  • jackyrongvip
  • jackyrongvip
  • 2013年07月01日 17:58
  • 893
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在Hp的主机打开异步IO
举报原因:
原因补充:

(最多只允许输入30个字)