Linux下磁盘IO性能评估

来源:互联网 发布:a股实时数据接口 编辑:程序博客网 时间:2024/06/09 05:06

Linux下磁盘IO性能评估

1、  sar –d命令


【说明】:

l  DEV表示磁盘设备名称

l  tps:表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个IO请求,多个逻辑请求可以被合并为一个物理I/O请求。

l  rd_sec/s:表示每秒从设备读取的扇区数(1扇区=512字节)

l  wr_sec/s:表示每秒写入扇区的数目。

l  Avgrq-sz:表示平均每次设备I/O操作的数据大小(以扇区为单位)

l  Avgqu-sz:表示平均I/O队列长度

l  Await:表示平均每次设备I/O操作的等待时间(以毫秒为单位)

l  Svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)

l  %util:表示一秒钟有百分之几的时间用于I/O操作

 

linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购物排队系统的理解,可以很快掌握Linux中I/O运行机制。比如:

l  Avgrq-sz:平均请求扇区的大小,类似于超市排队中每人所买东西的多少

l  Avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。类似于超市排队中单位时间内平均排队的人数

l  Await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

l  Svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

l  %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util =0.8/1 = 80%,所以该参数暗示了设备的繁忙程度

。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

评价标准:

l  一般情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也对svctm值造成影响,过多的请求也会间接导致svctm值的增加。

l  Await的值一般取决于svctm的值和I/O队列长度以及I/O请求模式。如果svctm的值与await的值很接近,就表示几乎没有I/O等待,磁盘性能很好;如果await的值远高于svctm的值,则表示I/O队列等待太长,系统运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

l  %util的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,就表示磁盘产生的I/O请求太多,I/O系统已经满负荷地在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

2、  iostat –d命令


l  Blk_read/s:表示每秒读取的数据块数

l  Blk_wrtn/s:表示每秒写入的数据块数

l  Blk_read:表示读取的所有块数

l  Blk_wrtn:表示写入的所有块数

如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或优化程序;如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。

对于以上两个值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则是可以遵循的,即长期的、超大的数据读写肯定是不正常的,这种情况肯定会影响系统的性能。

另外iostat  -x还提供对每个磁盘的单独统计,如果不指定磁盘,则默认是对所有磁盘进行统计,如下所示:

 

 

l  rrqm/s:表示每秒进行merged的读操作数目

l  wrqm/s:表示每秒进行merged的写操作数目

l  r/s:表示每秒完成读I/O设备的次数

l  w/s:表示每秒完成写I/O设备的次数

l  rsec/s:表示每秒读取的扇区数

l  wsec/s:表示每秒写入的扇区数

3、  vmstat –d也可以统计磁盘的读写性能