如何使用iostat查看linux硬盘IO性能
作者:疯了的小蜗 发布时间:2023-09-02 11:13:01
TOP 观察:IO等待所占用的CPU时间的百分比,高过30%时IO压力高其次、用iostat -x 1 10
[root@controller ~]#iostat -d -k 1 10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 19.00 0.00 112.00 0 112
sda1 0.00 0.00 0.00 0 0
sda2 0.00 0.00 0.00 0 0
sda3 0.00 0.00 0.00 0 0
sda4 0.00 0.00 0.00 0 0
sda5 3.00 0.00 16.00 0 16
sda6 0.00 0.00 0.00 0 0
sda7 16.00 0.00 96.00 0 96
tps:该设备每秒的传输次数,一次传输的意思是“一次I/O请求”
kB_read/s:每秒从设备读取的数据量
kB_wrtn/s:每秒向设备写入的数据量
kB_read:读取的总数据量
kB_wrtn :写入的总数量数据量
使用-x获得更多信息
使用-x获得更多信息
查看设备使用率(%util)、响应时间(await)
[root@controller ~]#iostat -d -x -k 1 10
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 22.00 0.00 18.00 0.00 160.00 17.78 0.07 3.78 3.78 6.80
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda3 0.00 15.00 0.00 2.00 0.00 68.00 68.00 0.01 6.50 6.50 1.30
sda4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda7 0.00 7.00 0.00 16.00 0.00 92.00 11.50 0.06 3.44 3.44 5.50
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/O设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rkB/s:每秒读K字节数。是rsect/s的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:每秒写K字节数。是wsect/s的一半。(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)。
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(use)/s/1000(因为use的单位为毫秒)
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70%IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat查看查看b参数()和wa参数()
另外还可以参考
svctm 一般要小于await(因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致svctm的增加。await 的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O 几乎没有等待时间;如果await远大于svctm,说明I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核elevator 算法,优化应用,或者升级CPU。
队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但由于avgqu-sz是按照单位时间的平均值,所以不能反映瞬间的I/O洪水。
别人一个不错的例子.(I/O系统vs.超市排队)
举 一个例子,我们在超市排队checkout时,怎么决定该去哪个交款台呢?首当是看排的队人数,5个人总比20人要快吧? 除了数人头,我们也常常看看前面人购买的东西多少,如果前面有个采购了一星期食品的大妈,那么可以考虑换个队排了。还有就是收银员的速度了,如果碰上了连 钱都点不清楚的新手,那就有的等了。另外,时机也很重要,可能5 分钟前还人满为患的收款台,现在已是人去楼空,这时候交款可是很爽啊,当然,前提是那过去的5分钟里所做的事情比排队要有意义 (不过我还没发现什么事情比排队还无聊的)。
I/O系统也和超市排队有很多类似之处:
r/s+w/s类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数
平均服务时间(svctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少
I/O操作率(%util)类似于收款台前有人排队的时间比例。
我们可以根据这些数据分析出I/O请求的模式,以及I/O的速度和响应时间。
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
)
部署一个程序时(我测试的是一个实时上传日志的程序),对系统的cpu、内存、io等都要有所考虑,保证系统高效的运行。
如果程序本身处理的包特别小,事件很多,压力大且没有间隔的话,占用CPU的资源会很多
如果用磁盘缓存,不用内存缓存的话,能够支持断点重传,保证数据的可靠性上传,如突然断电等情况,存入磁盘缓存的数据等到恢复后会依然上传,而不会丢失,但是相对的也会增加读写磁盘的次数,如果数据量比较小,速度还是可以忍受的。
下面是别人写的这个参数输出的分析
# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.24 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0 0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1 0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
上面的iostat输出表明秒有28.57次设备I/O操作:总IO(io)/s=r/s(读)+w/s(写)=1.02+27.55=28.57(次/秒)其中写操作占了主体(w:r=27:1)。
平均每次设备I/O操作只需要5ms就可以完成,但每个I/O请求却需要等上78ms,为什么?因为发出的I/O请求太多(每秒钟约29个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:
平均等待时间=单个I/O服务时间*(1+2+…+请求总数-1)/请求总数
应用到上面的例子:平均等待时间=5ms*(1+2+…+28)/29=70ms,和iostat给出的78ms的平均等待时间很接近。这反过来表明I/O是同时发起的。
每秒发出的I/O请求很多(约29个),平均队列却不长(只有2个左右),这表明这29个请求的到来并不均匀,大部分时间I/O是空闲的。
一秒中有14.29%的时间I/O队列中是有请求的,也就是说,85.71%的时间里I/O系统无事可做,所有29个I/O请求都在142毫秒之内处理掉了。
delta(ruse+wuse)/delta(io) =await=78.21=>delta(ruse+wuse)/s=78.21*delta(io)/s= 78.21*28.57=2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms=2.23,而iostat给出的平均队列长度(avgqu-sz)却为22.35,为什么?!因为 iostat中有bug,avgqu-sz值应为2.23,而不是22.35。
来源:https://www.cnblogs.com/insane-Mr-Li/p/11211843.html
猜你喜欢
- 因为对属性了解不多,所以给出我一上午自己琢磨出来的方法。这个方法主要是适合运用在XP系统下无法安装IIS来进行配置ASP环境和不会安装Apa
- 通过性能监测和分析,您可以知道服务器的运行状况,即在当前的工作负载下服务器是否出色运行。正如网络中的瓶颈一样,它可以帮助您找到服务器配置中的
- 一。相对大小的字号在英文页面中,固定字号被称为“ frozen font sizes”,使用固定大小
- 真的都是些小建议,如果你是学生站长的话,如果你有个几分钟闲余时间的话,不妨看完这篇文章,看看有没有一点帮助。学生站长的定义:在这里我定的比较
- 用博客来推广网站很有用,经常听到很多人说,通过大量的注册博客,可以提高网站的流量,但是我想说的是开博客没错,而且也很有效,请不要忽视博客的质
- 2009年10月10号,美图秀秀官网发布了2.0周年版,小编这才发现原来美图秀秀已经一岁了。在感叹时间飞逝的同时,小编针对美图秀秀一年来的改
- Discuz!7.0中,对于会员来说,主题关注功能非常实用。在逛论坛的时候,发现了一个自己感兴趣的帖子,想跟踪此帖,关注此贴的发展,并且参与
- 10月16日消息,对于大多数企业来说,升级到微软公司即将推出的操作系统Windows 7是不可避免的趋势。全球技术研究和咨询公司Gartne
- asp之家注:对于初次接触服务器的站长或网管朋友,相信一定都为PHP,mysql的配置烦扰过,因为配置这些确实很烦琐,他不像配置asp环境那
- 10月14日消息,据国外媒体报道,在过去的几周里谷歌尝试了一种新的广告形式,在侧边栏中的赞助商链接中直接加入产品的相关信息。例如,搜索&am
- 数据显示:2009年第一季度,百度市场份额高达74.1%,在多达十余家搜索引擎的中国市场,几乎占据了整个网络搜索行业。也说明,百度已经成为中
- 方法1、因为没有像PHP自带的ReWrite模块,所以需要下载IIS Rewrite模块:http://www.isapirewrite.c
- 很大意义上的传统社区指的论坛,论坛是伴着一些老网虫们共同成长起来的,泡论坛成了网虫们的爱好之一,从个人主页的时代到现在SNS满天飞的世界,论
- 115网络U盘(http://u.115.com)是由雨林木风在今年5月推出的一款免费网络数据存储服务,该服务面市不久就获得了众多网民的热捧
- 技术对于站长发展中的作用一直存在争论,但现在残酷的竞争面前,仅仅依靠通用论坛程序或者文档管理系统建立千篇一律的个人站点已经毫无出路。个人站长
- 下面是一个关键字标签"Keywords"的使用样例:<meta name="keywords"
- 一、WSUS 安装要求1、硬件要求:对于多达 500 个客户端的服务器,建议使用以下硬件:* 1 GHz 的处理器* 1 GB 的 RAM2
- 步骤:终端运行sudo a2enmod程序提示可供激活的模块名称,输入:其中rewrite修改/etc/apache2/sites-enab
- 关于链接的价值相对于其他链接策略,这是一个可以辩论的话题。并且毫无疑问,一个双向链接,到目前为止,价值是相互的。不过,如果做的正确,对等链接
- 很多网站,一开始做的时候就想要利用网站怎么样快速赚钱,怎么样让网站获利,不可否认的是互联网的发展的确给我们带来了许多便利,也造就了很多百万富