服务器硬件资源_I/O

访问应用离不开系统的磁盘数据读写,I/0读写的性能直接影响系统程序的性能,磁盘i/o是系统中最慢的部分。针对I/o场景模型,我们要考虑io的tps,平均i/o数据,平均队列长度,平均服务时间,平均等待时间,io利用率。

参考文档:https://blog.csdn.net/qq_20332637/article/details/82146753

iostat -x -k -d vda 2

选项说明
rrqm/s 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s 每秒对该设备的写请求被合并次数
r/s 每秒完成的读次数
w/s 每秒完成的写次数
rkB/s 每秒读数据量(kB为单位)
wkB/s 每秒写数据量(kB为单位)
avgrq-sz 平均每次IO操作的数据量(扇区数为单位)
avgqu-sz 平均等待处理的IO请求队列长度
await 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm 平均每次IO请求的处理时间(毫秒为单位)
%util 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

如果%util接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈,idle小于70% IO压力就较大了,一般读取速度有较多的wait。同时可以结合vmstatvirtual memory status)查看b参数(等待资源的进程数)wa参数(IO等待所占用的CPU时间的百分比,高过30%IO压力高)

另外还可以参考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)类似于收款台前有人排队的时间比例。

标准:iwait 不能低于5ms  %util 不能超过80%

参考:http://blog.51cto.com/lfsoul/1176501

一般硬盘读写速度60-120MB/s

如果硬盘是ssd,%util无法统计到。

定位在读或者写哪个文件

--------------------------------------------------------------------------------------------------------------------

原文地址:https://www.cnblogs.com/danyuzhu11/p/10256272.html