1、确认磁盘 I/O 存在性能问题
对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:
平均读时间大于 15ms;
在具有写 cache 的条件下,平均写时间大于 2.5ms;
对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:
在一个磁盘上有两个连续的 I/O 流;
吞吐量不足(即远远小于磁盘 I/O 带宽);
对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。
磁盘 IOPS 与 IO service time 关系图
从经验上讲,我们在测试工作中,我们主要关注 IOPS 和吞吐量以及磁盘的 busy% 这三个数值。
如果 IOPS 和吞吐量均很低,磁盘的 busy% 也很低,我们会认为磁盘压力过小,造成吞吐量和 IOPS 过低;
只有在 IOPS 和吞吐量均很低,磁盘的 busy% 很高(接近 100%)的时候,我们才会从磁盘 I/O 方面分析 I/O 性能。
2、磁盘性能指标
五个常见指标: 使用率、饱和度、IOPS、吞吐量以及响应时间。这五个指标,是衡量磁盘性能的基本指标。
使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
吞吐量,是指每秒的 I/O 请求大小。
响应时间,是指 I/O 请求从发出到收到响应的间隔时间。
3、定位命令
iostat查看IO信息。如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
另外还需要注意iowait这个值,iowait 值高就意味着磁盘缓慢或负载过大。还有不要信任svctm这个字段。
监控swap 和系统分区,要确保virtual memory不是文件系统I/O 的瓶颈.
ps:磁盘瓶颈可以通过pidstat -d 定位程序(Centos中安装pidstat命令:yum install sysstat)
iostat(%util):
iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些数据实际上来自 /proc/diskstats。
查看设备使用率(%util)、响应时间(await)
说明:
PID:进程id;
kB_rd/s:每秒从磁盘读取的KB;
kB_wr/s:每秒写入磁盘KB;
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。;
COMMAND:task的命令名;
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈;
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化;
如果avgqu-sz比较大,也表示有当量io在等待;
idle小于70% IO压力就较大了,一般读取速度有较多的wait。
这些指标中,重点注意:
%util ,就是我们前面提到的磁盘 I/O 使用率;
r/s+ w/s ,就是 IOPS;
rkB/s+wkB/s ,就是吞吐量;
r_await+w_await ,就是响应时间。
top(iowait%):
pidstat -d:
查看活跃进程的 I/O 读写情况
说明:
PID:进程id;
kB_rd/s:每秒从磁盘读取的KB;
kB_wr/s:每秒写入磁盘KB;
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。;
COMMAND:task的命令名
iotop命令:
根据 I/O 大小对进程排序:
前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。
剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只有拼尽全力,才能看到无限的可能;只有坚持不懈,才能创造属于自己的辉煌。在奋斗的道路上,相信自己,勇往直前,你将收获意想不到的成就与成功!
努力奋斗,才能追逐梦想的光芒;坚持不懈,方能绽放成功的微笑。每一份辛劳都是前进的动力,每一次挑战都是成长的机遇。相信自己的能力,勇敢向前,未来属于那些敢于拼搏的人。
只有付出努力,才能收获成功的喜悦;只有拼尽全力,才能跨越困难的阻碍;不要等待机会,而是要创造机会;在奋斗中,你将发现无限可能!