赞
踩
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也可以统计磁盘的读写性能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。