Linux 磁盘性能指标之磁盘I/O观测与进程I/O观测
一、磁盘的性能指标
说到磁盘性能的衡量标准,必须要提到五个常见指标,也就是我们经常用到的,使用率、饱和度、IOPS、吞吐量以及响应时间等。这五个指标,是衡量磁盘性能的基本指标。
- 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
- 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
- IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。吞吐量,是指每秒的 I/O 请求大小。
- 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。
二、磁盘I/O观测
第一个要观测的,是每块磁盘的使用情况。iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些指标实际上来自 /proc/diskstats。iostat 的输出界面如下。
# -d -x表示显示所有磁盘I/O的指标 [root@10-9-170-111 ~]# iostat -d -x 1 Linux 4.19.0-6.el7.ucloud.x86_64 (10-9-170-111) 07/21/2022 _x86_64_ (12 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.00 0.07 0.02 0.59 0.37 5.53 19.54 0.00 0.12 0.21 0.11 0.34 0.02 vdb 0.46 0.03 2.33 2416.77 45.43 11880.32 9.86 0.01 0.00 0.16 0.00 0.05 12.97
这些指标中,你要注意:
- %util ,就是我们前面提到的磁盘 I/O 使用率;
- r/s+ w/s ,就是 IOPS;rkB/s+wkB/s ,就是吞吐量;
- r_await+w_await ,就是响应时间。
在观测指标时,也别忘了结合请求的大小( rareq-sz 和 wareq-sz)一起分析。
你可能注意到,从 iostat 并不能直接得到磁盘饱和度。事实上,饱和度通常也没有其他简单的观测方法,不过,你可以把观测到的,平均请求队列长度或者读写请求完成的等待时间,跟基准测试的结果(比如通过 fio)进行对比,综合评估磁盘的饱和情况。
三、进程 I/O 观测
除了每块磁盘的 I/O 情况,每个进程的 I/O 情况也是我们需要关注的重点。上面提到的 iostat 只提供磁盘整体的 I/O 性能数据,缺点在于,并不能知道具体是哪些进程在进行磁盘读写。要观察进程的 I/O 情况,你还可以使用 pidstat 和 iotop 这两个工具。
3.1 pidstat
[root@10-9-170-111 ~]# pidstat -d 1 Linux 4.19.0-6.el7.ucloud.x86_64 (10-9-170-111) 07/21/2022 _x86_64_ (12 CPU) 06:17:21 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 06:17:22 PM 996 3552 475.25 40835.64 0.00 mysqld
从 pidstat 的输出你能看到,它可以实时查看每个进程的 I/O 情况,包括下面这些内容。
- 用户 ID(UID)和进程 ID(PID) 。
- 每秒读取的数据大小(kB_rd/s) ,单位是 KB。
- 每秒发出的写请求数据大小(kB_wr/s) ,单位是 KB。
- 每秒取消的写请求数据大小(kB_ccwr/s) ,单位是 KB。
- 块 I/O 延迟(iodelay),包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。
3.2 iotop
除了可以用 pidstat 实时查看,根据 I/O 大小对进程排序,也是性能分析中一个常用的方法。这一点,我推荐另一个工具, iotop。它是一个类似于 top 的工具,你可以按照 I/O 大小对进程排序,然后找到 I/O 较大的那些进程。
[root@10-9-170-111 ~]# iotop
从这个输出,你可以看到,前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。
作者:UStarGao
链接:https://www.starcto.com/storage_scheme/303.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-02-21MySQL Binlog日志清理
- 2021-07-03MySQL压缩包安装教程-二进制
- 2021-03-04MySQL性能瓶颈分析-大事务/执行计划
- 2021-02-17搭建图形化容器镜像仓库-harbor
- 2021-08-18K8S kubectl高频命令详解