`

AIX 下磁盘 I/O 性能分析

 
阅读更多

转自:http://www.ibm.com/developerworks/cn/aix/library/1203_weixy_aixio/

磁盘 I/O 的概念

I/O 的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在 I/O。比如,CPU 有 I/O,内存有 I/O, VMM 有 I/O, 底层磁盘上也有 I/O,这是广义上的 I/O. 通常来讲,一个上层的 I/O 可能会产生针对磁盘的多个 I/O,也就是说,上层的 I/O 是稀疏的,下层的 I/O 是密集的。

磁盘的 I/O,顾名思义就是磁盘的输入输出。输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。


衡量磁盘 I/O 性能的指标

图 1. 物理磁盘的架构以及常见磁盘类型

图 1. 物理磁盘的架构以及常见磁盘类型

我们常见的磁盘类型有 ATA、SATA、FC、SCSI、SAS。这几种磁盘中,服务器常用的是 SAS 和 FC 磁盘,一些高端存储也使用 SSD 盘。每一种磁盘的性能是不一样的。

我们在测试工作中,衡量磁盘 I/O 性能主要参考 IOPS 和吞吐量两个参数。下面,将介绍一下这两个参数的含义。

IOPS 与吞吐量的概念

磁盘的 IOPS,也就是在一秒内,磁盘进行多少次 I/O 读写。

磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。

IOPS 与吞吐量的关系

每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。从公式可以看出: I/O SIZE 越大,IOPS 越高,那么每秒 I/O 的吞吐量就越高。因此,我们会认为 IOPS 和吞吐量的数值越高越好。实际上,对于一个磁盘来讲,这两个参数均有其最大值,而且这两个参数也存在着一定的关系。

下图为各种磁盘的 IOPS 极限值。

表 1. 常见磁盘类型及其 IOPS

表 1. 常见磁盘类型及其 IOPS

Figure xxx. Requires a heading

注:上表源自维基百科 http://en.wikipedia.org/wiki/IOPS

在 AIX 中,对于同一个磁盘(或者 LUN),随着每次 I/O 读写数据的大小不通,IOPS 的数值也不是固定不变的。例如,每次 I/O 写入或者读出的都是连续的大数据块,此时 IOPS 相对会低一些;在不频繁换道的情况下,每次写入或者读出的数据块小,相对来讲 IOPS 就会高一些。


I/O 读写的类型

大体上讲,I/O 的类型可以分为:读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。在这几种类型中,我们主要讨论一下:大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。

大 / 小块 I/O

这个数值指的是控制器指令中给出的连续读出扇区数目的多少。如果数目较多,如 64,128 等,我们可以认为是大块 I/O;反之,如果很小,比如 4,8,我们就会认为是小块 I/O,实际上,在大块和小块 I/O 之间,没有明确的界限。

连续 / 随机 I/O

连续 I/O 指的是本次 I/O 给出的初始扇区地址和上一次 I/O 的结束扇区地址是完全连续或者相隔不多的。反之,如果相差很大,则算作一次随机 I/O

连续 I/O 比随机 I/O 效率高的原因是:在做连续 I/O 的时候,磁头几乎不用换道,或者换道的时间很短;而对于随机 I/O,如果这个 I/O 很多的话,会导致磁头不停地换道,造成效率的极大降低。

顺序 / 并发 I/O

从概念上讲,并发 I/O 就是指向一块磁盘发出一条 I/O 指令后,不必等待它回应,接着向另外一块磁盘发 I/O 指令。对于具有条带性的 RAID(LUN),对其进行的 I/O 操作是并发的,例如:raid 0+1(1+0),raid5 等。反之则为顺序 I/O。


磁盘 I/O 性能的监控

监控磁盘的 I/O 性能,我们可以使用 AIX 的系统命令,例如:sar -d, iostat, topas, nmon 等。下面,我将以 nmon 和 topas 为例,讲述在系统中如何观察磁盘 I/O 的性能。

topas

登录 AIX 操作系统,输入 topas,然后按 D,会出现如下界面:

Figure xxx. Requires a heading

在上图中,TPS 即为磁盘的 IOPS,KBPS 即为磁盘每秒的吞吐量。由于服务器处于空闲的状态,我们可以看到 IOPS,KBPS 的数据都非常低。

我们使用 dd if 命令向磁盘 hdisk2 发读 I/O,block 大小为 1MB:

Figure xxx. Requires a heading

利用 topas 进行监控:

Figure xxx. Requires a heading

此时,hdisk2 的吞吐量为 163.9M,IOPS 为 655。

我们再启动一个 dd if,使 hdisk 的 busy 数值达到 100%:

Figure xxx. Requires a heading


从上图可以看出,在磁盘 busy 达到 100% 的时候,其吞吐量为 304.1M,IOPS 为 1200。

hdisk2 是本地集成的 SAS 盘,我们可以查出本地集成 SAS 通道的带宽为 3Gb:

Figure xxx. Requires a heading

对于 3Gb 的 SAS 通道,304.1M 的磁盘吞吐量已经接近其 I/O 带宽的峰值了。

需要指出的是,使用 dd if 测量磁盘的带宽是可行的,但是由此来确定业务 I/O 的 IOPS 和吞吐量是不科学的。因为,dd if 所发起的读写仅为顺序 I/O 读写,在 OLTP 的业务中,这种读写是不常见的,而是随机小 I/O 比较多,因此,测量业务的磁盘 I/O 性能,需要在运行业务的时候进行监控。

nmon

在系统中输入 nmon,按 d,可以得到如下界面 :

Figure xxx. Requires a heading

可以得到此时磁盘 hdisk2 吞吐量为 318M。

使用 nmon 收集一个时间段的数据,然后使用 nmon analyzer 进行分析,可以得出更为直接的图表:

Figure xxx. Requires a heading

将收集好的 nmon 文件使用 nmon analyzer 进行分析,得出如下报表:

图 2.nmon 图表显示磁盘性能

图 2.nmon 图表显示磁盘性能


磁盘 I/O 性能调优

确认磁盘 I/O 存在性能问题

对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

  1. 平均读时间大于 15ms
  2. 在具有写 cache 的条件下,平均写时间大于 2.5ms

对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

  1. 在一个磁盘上有两个连续的 I/O 流
  2. 吞吐量不足(即远远小于磁盘 I/O 带宽)

对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。

图 3. 磁盘 IOPS 与 IO service time 关系图

图 3. 磁盘 IOPS 与 IO service time 关系图

从经验上讲,我们在测试工作中,我们主要关注 IOPS 和吞吐量以及磁盘的 busy% 这三个数值。如果 IOPS 和吞吐量均很低,磁盘的 busy% 也很低,我们会认为磁盘压力过小,造成吞吐量和 IOPS 过低;只有在 IOPS 和吞吐量均很低,磁盘的 busy% 很高(接近 100%)的时候,我们才会从磁盘 I/O 方面分析 I/O 性能。

通过调整 AIX 参数改善磁盘 I/O 性能

在 AIX 系统中,有关磁盘 I/O 性能相关的参数我们主要调整的参数如下图:

图 4.AIX 常见的磁盘 I/O 性能参数

图 4.AIX 常见的磁盘 I/O 性能参数

需要注意的是,下面几个参数的调整值,只是经验数值;对于不同的应用,不同的场景,应具体情况具体分析。

调整I/O 队列长度

queue_depth 是 AIX 一次可以传送到磁盘设备的命令的数量,把命令放在队列中再传送给磁盘可以提高 I/O 性能。AIX 中定义的每个磁盘在 ODM 库中都有 queue_depth 属性。这个属性限制了 AIX 可以传送到设备的最大命令的数量。

queue_depth 默认数值为 4

Figure xxx. Requires a heading

将 hdisk2 的队列长度从 16 调整为 64:

Figure xxx. Requires a heading

max_transfer 参数

这个参数的含义是,存储 driver 可以向存储发的最大的 I/O。通过增加 max_transfer 的数值,我们可以允许 VG 的 LTG 的数值更大。

这个参数我们可以从 64M 调整到 128M。

Figure xxx. Requires a heading

光纤卡num_cmd_elems参数

如果是通过光纤卡连接的外置存储,可以考虑调整 num_cmd_elems,这个参数的作用是:controls maximum number of in-flight Ios

这个参数的默认值为 500,我们将其修改为 1000:

Figure xxx. Requires a heading

光纤卡 max_xfer_size 参数 : attribute also controls a DMA memory area used to hold data for transfer, and at the default is 16 MB. 这个参数是控制 DMA 区域的,用于保持传输的数据的的区域,它的默认值是 16MB,可以把这个数值调整成 128MB,这样光纤卡的带宽会高一些 .

Figure xxx. Requires a heading

FSCSI 设备

对于 FSCSI 设备而言,我们可以通过设置参数:dyntrk 和 fc_err_recov 来达到路径快速切换的目的:This sets the adapters to fast fail over and reduces the amount of time required to select a new data path.

Figure xxx. Requires a heading

修改完毕以后,荣如下命令进行确认:

Figure xxx. Requires a heading

总结

在 AIX 下调整磁盘 I/O 性能是一个相对复杂的工作,参数的数值往往是根据环境的变化而不通。这就要求我们在熟悉磁盘 I/O 性能架构的基础上,灵活调整。

分享到:
评论

相关推荐

    AIX性能问题诊断和调优

    本文从CPU、内存、磁盘I/O等方面来对AIX系统进行性能诊断和调优进行分析。

    nmon性能测试资源监测工具

    nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度、传输和读/写比率 文件系统中的可用空间 磁盘适配器 网络 I/O...

    AIX常用的性能监控命令

    AIX常用的性能监控命令,机器性能优化主要从四个方面去考虑:CPU,内存,磁盘I/O,网络。

    UNIX-IBMAIX5L参考-性能管理指南.chm

    逻辑卷和磁盘 I/O 性能 监视磁盘 I/O 调整影响性能的逻辑卷属性 物理卷注意事项 卷组建议 重组逻辑卷 使用磁盘 I/O 调步 调谐逻辑卷条纹 使用裸磁盘 I/O 使用 sync/fsync 调用 设置 SCSI 适配器和磁盘设备队列限制 ...

    nmon_linux_14i.tar (1).gz

    nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度、传输和读/写比率 文件系统中的可用空间 磁盘适配器 网络 I/O...

    nmon16g_x86.tar.zip

    nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度、传输和读/写比率 文件系统中的可用空间 磁盘适配器 ...

    nmon_工具+使用方法.zip

    nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度、传输和读/写比率 文件系统中的可用空间 磁盘适配器 网络 I/O...

    AIX优化及维护案

    1.7 AIX 5.3主机性能评估-磁盘的I/O性能评估 43 1.8 AIX 5.3主机性能评估-CPU性能评估 57 1.9 AIX 5.3主机性能评估-NETWORK性能评估 66 1.10 AIX网络诊断及解决现场实例 72 1.11 AIX 5.3主机性能评估-topas的使用...

    aix 优化及维护案例

    1.7 AIX 5.3主机性能评估-磁盘的I/O性能评估 43 1.8 AIX 5.3主机性能评估-CPU性能评估 57 1.9 AIX 5.3主机性能评估-NETWORK性能评估 66 1.10 AIX网络诊断及解决现场实例 72 1.11 AIX 5.3主机性能评估-topas的使用...

    AIX 系统维护下载

    第 42 楼:组织规划逻辑卷以增加系统的I/O性能及可靠性 第 43 楼:深入讨论lvm,你该如何换硬盘? 第 44 楼:模拟硬盘更换 第 45 楼:AIX资源监控与调制工具 第 46 楼:关于AIX系统文件安全性方面的几点考虑 第 47 ...

    IBM AIX性能调整

    15. AIX 5L 新特性(四):如何查看每个vg及lv上的I/O 24 16. AIX 5L 新特性(五):如何平衡过于繁忙的lv? 25 17. 如何监控裸设备I/O? 25 18. AIX内核参数调整之vmtune -M(5)? 25 19. AIX内核参数调整之vmtune -r -...

    HDS多路径软件HDLM FOR AIX安装

    它使用最优的调度算法使连接主机与磁盘阵列的各I/O通道间的I/O自动达到均衡,这样可提高系统的I/O吞吐量,提高整个系统的性能。Dynamic Link Manager另一个功能是I/O通道故障自动隔离。当主机与磁盘系统之间的I/O...

    IBM AIX 应用技巧

    AIX使用异步I/O(aio)提高系统性能 AIX系统日常管理 AIX中查看用户对系统资源的使用情况 AIX中如何解决不能释放光驱的问题 AIX资源监控与调制工具 AS400安装纪录 RS6000 更换硬盘的过程 AIX技巧: "Volume Group...

    在_AIX_中运行_Oracle_性能方面的技巧和诀窍

    我们将讨论虚拟内存管理器 (VMM,Virtual Memory Manager)、CPU、内存和 I/O(磁盘以及网络)等方面。我们将研究一些可用于分析瓶颈问题的工具,同时还将对系统进行某些更改。最后,我们还将回顾一些可用于帮助您...

    AIX优化及维护案例2009版

    1.7 AIX 5.3主机性能评估-磁盘的I/O性能评估 43 1.8 AIX 5.3主机性能评估-CPU性能评估 57 1.9 AIX 5.3主机性能评估-NETWORK性能评估 66 1.10 AIX网络诊断及解决现场实例 72 1.11 AIX 5.3主机性能评估-topas的使用...

    AIX 5L V5.3 性能管理指南(中文)

    性能管理 <br>本主题为应用程序员、客户工程师、系统工程师、系统管理员、资深最终用户和系统程序员提供有关如何执行任务(例如评估和调整处理器、文件系统、内存、磁盘 I/O、NFS、JAVA 和通信 I/O 的性能)的...

    AIX系统调优指导书

    性能调整的核心围绕着资源的利用,这些资源分别为物理的和逻辑的,物理的如:CPU、内存、输入输出设备(包括磁盘空间、磁盘读写臂、I/O总线、通讯线和各种卡等),逻辑的如:逻辑卷管理器、虚存管理器、文件系统、...

    nmon_linux_14g.tar

    • 磁盘 I/O 速度、传输和读/写比率 • 文件系统中的可用空间 • 磁盘适配器 • 网络 I/O 速度、传输和读/写比率 • 页面空间和页面速度 • CPU 和 AIX 规范 • 消耗资源最多的进程 • IBM HTTP Web 缓存 • 用户...

    nmon性能测试

    nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中...

    UNIX常用性能监控命令.doc

    命令查看网络的连通性 检查网络的接口 检查主机的路由情况 磁盘I/O性能监控 特定的 AIX 内存监视

Global site tag (gtag.js) - Google Analytics