Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24997202
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类:

2009-08-18 18:36:02

AIX 5.3中的异步I/O

Document #: 2811084I22000

Body:
[标题]

AIX 5.3 中的异步I/O

内容提要:


AIX 5.3对 异步I/O 的增强,以及提供的监视 异步I/O 的工具

说明:


AIX 5.3 中的异步I/O


    异步I/O 通过专用的I/O 进程处理应用对文件的访问,来提高I/O 的性能。AIX 5.3 提供两种异步I/O 的驱动:
    l 传统的异步I/O
    l POSIX 标准的异步I/O
    两种异步I/O 的驱动大体上是相同的,POSIX 标准的异步I/O 符合POSIX 对于异步I/O 的标准,并实现了此标准的扩展。下图说明了异步I/O 流从应用到逻辑卷的过程



    用户的应用调用aio_write()aio_read()lio_listio() 系统调用来从数据缓存向文件读写数据,这里所指的文件可以是传统意义上的文件,也可以是裸设备。

    当前系统中异步I/O 队列的数量是固定的,此数量在将来可能会改变。异步I/O 的驱动程序将需要从缓存中传输的数据送到其中一个异步I/O 队列中,系统有内部的算法来分配异步I/O 队列,通常对于同一文件系统的写操作会被分配到同一异步I/O 队列中,但也存在对于不同文件系统的写操作在同一异步I/O 队列中,或对于同一文件系统的写操作在不同异步I/O 队列中的情况。

    在异步I/O 队列中的写操作会被aioserver 的核心进程处理,这些aioserver 的核心进程真正完成I/O 操作,POSIX 标准的异步I/O 进程为posix_aioserver ,用户可以通过ps aux 命令查看它们。

    如果是对于裸设备的读写,异步I/O 的驱动通过快捷路径方式而不是通过在异步I/O 队列进行操作,快捷路径方式将缓存中的数据直接写到裸设备上,而不通过异步I/O 队列和aioserver 核心进程。

    为了使用异步I/O ,用户需要激活异步I/O 启动,可以用命令mkdev –l aio0smit aio 通过smit 菜单,如果需要激活POSIX 异步I/O ,则采用mkdev –l posix_aiosmit posixaio 菜单。

    AIX 5.3 以前的版本中,没有工具可以监视异步I/O 。在AIX 5.3 中修改的系统核心库,增加了对异步I/O 的统计信息,用户可以通过iostat 命令监视异步I/O 的运行情况。iostat 命令增加了以下的参数:
    A 显示传统异步I/O 信息
    P 显示POSIX 标准的异步I/O 信息
    q 显示异步I/O 队列
    Q 显示文件系统异步I/O 信息

    iostat -A


    avgc 每秒非快捷方式异步I/O 的请求的数量
    avfc 每秒快捷方式异步I/O 的请求的数量
    maxg 每秒最大非快捷方式异步I/O 的请求的数量
    maxf 每秒最大快捷方式异步I/O 的请求的数量
    maxr 系统允许的最大异步I/O 请求的数量,与maxreqs 参数设置相同

    用户需要注意的是如果avgcmaxg 的值接近maxr 的值,则需要调整maxreqsmaxservers 参数,避免异步I/O 核心进程的数量成为瓶颈。如果使用裸设备,则用户可以参考avfcmaxf ,由于快捷方式不使用异步I/O 队列,所以以上两个参数仅仅提供参考信息。

    iostat -Aq




    如果其中一个队列中的值比其他队列高很多,说明用户应用主要对某一文件系统进行读写,通常一个队列对应一个文件系统。

    通常用户希望了解异步I/O 队列与文件系统的对应关系,使用iostat –AQ 命令可以显示出这种对应关系,还可以了解各个文件系统上异步I/O 操作的数量。
    iostat -AQ



    如果希望了解POSIX 标准的异步I/O 的信息,则使用-P 参数代替-A 参数。



    参考资料:
阅读(650) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~