性能评估-disk IO

性能评估-disk IO

****一、磁盘原理****

设备又名I/O设备,泛指计算机系统中除主机以外的所有外部设备。

1.1 计算机分类

1.1.1 按照信息传输速度分:

1.低速设备:每秒传输信息仅几个字节或者百个字节,如:键盘、鼠标等

2.中速设备:每秒传输信息数千个字节或者数万个字节,如:打印机

3.高速设备:每秒传输信息数数10万个字节,如:磁盘

1.1.2 按照信息交换单位分

1.字符设备:以字符为输入/输出信息的单位,如:键盘,显示终端

2.块设备:以数据块为单位输入/输出信息,如:磁盘

注:何为数据块:磁盘中常以一个扇区作为一个数据块,一个扇区就是一个读写单位

****一、磁盘性能指标****

1、测试磁盘性能,使用命令:dd

因数据写入磁盘,可能是缓存写,直接写(不经过缓冲区直接写入磁盘),顺序io,随机io的区别所以,这种dd测试并不是很准确。

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.

在使用前首先了解两个特殊设备

/dev/null 伪设备,回收站.写该文件不会产生IO

/dev/zero 伪设备,会产生空字符流,对它不会产生IO

通过以上方法就可以大致知道,磁盘的性能了。

从这条命令中:我们知道:IOPS(每秒io请求数)是:6.91。当前读速率是:0.44MB/s .写速率是:0.36MB/s

得出结论有:

每秒***有80个IO请求(IOPS=r/s+w/s),以写为主

io服务时间为1.56毫秒,平均等待服务时间为3.53毫秒

io队列深度为:2.4个

1、vmstat Block in /out

bi+bo过大,而且vmstat cpu wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

2、IOwait time

iostat iowait% 小于25%,说明IO性能处于良好的状态;

3、util 磁盘使用率

一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)

(1)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

(2)idle小于70% IO压力就较大了,一般读取速度有较多的wait。

(3)同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。

4、await 平均等待时间

平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)

await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。

(1)await 的参数要多和 svctm 来参考。差的过高就一定有 IO 的问题。

(2)如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;

(3)如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用。

5、avgqu-sz 平均I/O队列长度

(1)如果avgqu-sz比较大,也表示有大量io在等待。

avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如果数据拿的大,IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是讲,读写速度是这个来决定的。

由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

里面最重要的参数,actual disk read 和actual disk write 分别代表实际磁盘读写速度

然后下面,我们可以根据每一列进行io排序,就能知道io具体消耗是哪个进程导致的。

注意:TID代表的是线程号,如果是多线程的话,可以借助command 判断是哪个进程,也可以根据ps -eLf | grep TID 来获取到他的父进程号。

2.2.1 topas 获取是否存在io等待

仔细观察 “Wait”(在 CPU 部分的上部),如果改值较大则表示io可能存在瓶颈

2.2.2 获取io队列、IOPS、响应时间等

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

在上图中,hdisk2 的TPS 即为磁盘的 IOPS(每秒发出的io请求数),为 655;KBPS 即为磁盘每秒的吞吐量,为 163.9M;尤其是应该检查 ART/AWT 和 MRT/MWT,它们表示磁盘读写操作的平均和最大等待时间。比较高的值表明磁盘非常忙。AQW 表示对 I/O 设备的每个请求的平均等待队列数量。同样,比较高的值表明磁盘的速度无法跟上请求的速度。

2.2.3 查看产生瓶颈的原因

1.可以使用其他工具(如 filemon、fileplace、lsof 或 lslv)帮助确定究竟是哪个进程、适配器或者文件系统导致了瓶颈。

2.可以使用ps -ef | grep "pid" 来查看当前进程所在执行的任务

find . -type f -size +100M -print0 | xargs -0 du -h | sort -nr