Linux中监测磁盘IO性能

Linux 存储系统 I/O 栈由文件系统层(file system layer)、通用块层( general block layer)和设备层(device layer)构成。

其中,通用块层是 Linux 磁盘 I/O 的核心。向上,它为访问文件系统和应用程序的块设备提供了标准接口;向下,它将各种异构磁盘设备抽象为一个统一的块设备,并响应文件系统和应用程序发送的 I/O。

在衡量磁盘性能时,我们经常提到五个常见指标:利用率、饱和度、IOPS、吞吐量和响应时间。这五个指标是衡量磁盘性能的基本指标。

  • 利用率(Utilization):磁盘处理 I/O 的时间百分比。过度使用(如超过 80%)通常意味着磁盘 I/O 存在性能瓶颈。
  • 饱和度(Saturation):指磁盘处理 I/O 的繁忙程度。过度饱和意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
  • IOPS(Input/Output Per Second):指每秒 I/O 请求的数量。
  • 吞吐量(Throughput):每秒 I/O 请求的大小。
  • 响应时间(Response time):指发送 I/O 请求和接收响应之间的间隔时间。

iostart

iostat 是最常用的磁盘 I/O 性能观察工具。它提供了各种常用性能指标,例如每个磁盘的利用率、IOPS 和吞吐量。当然,这些指标实际上来自 /proc/diskstats。

iostat -d -x 1

Linux 3.10.0-1160.el7.x86_64 (m01) 04/29/2022   _x86_64_ (1 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
sda 0.00   129.59    2.04  180.61    77.55 88322.45   967.96     0.32    1.78    0.50    1.79   0.60  11.02
dm-0              0.00     0.00    2.04  172.45    77.55 87771.43  1006.92     0.30    1.73    0.50    1.74   0.49   8.57
dm-1              0.00     0.00    0.00  137.76     0.00   551.02     8.00     0.51    3.72    0.00    3.72   0.18   2.45

在上述指标中,您需要注意的是:

  • %util 是我们前面提到的磁盘 I/O 使用情况
  • r/s 和 w/s 是 IOPS
  • rkB/s 和 wkB/s 是吞吐量
  • r_await 和 w_await 是响应时间

pidstat

不仅可以查看每个磁盘的 I/O 情况,还可以查看每个进程的 I/O 情况

~ pidstat -d 1

Linux 3.10.0-1160.el7.x86_64 (m01) 04/29/2022   _x86_64_  (1 CPU)

12:37:07 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
12:37:08 AM   998       655    700.99      0.00      0.00  chronyd
12:37:08 AM     0       697   1287.13      0.00      0.00  NetworkManager
12:37:08 AM     0     39905      0.00 498102.97      0.00  dd

12:37:08 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
12:37:09 AM   998       655    122.45      0.00      0.00  chronyd
12:37:09 AM     0     39905      0.00 512677.55      0.00  dd
12:37:09 AM     0     39909    228.57      0.00      0.00  pidstat

从 pidstat 的输出可以看出,它可以实时查看每个进程的 I/O 情况,这包括以下内容:

  • 用户 ID (UID) 和进程 ID (PID)。
  • 每秒读取的数据大小 (kB_rd/s),以 KB 为单位。
  • 每秒发出的写请求数据的大小(kB_wr/s),单位为 KB。
  • 每秒取消写入请求的数据大小 (kB_ccwr/s),以 KB 为单位。
  • 块 I/O 延迟 (iodelay),包括等待同步块(synchronized block)I/O 和换入块(swap-in block)I/O 完成的时间,以时钟周期为单位。

iotop

它是一个类似于 top 的工具,您可以按 I/O 大小对进程进行排序,并找到具有更大 I/O 的进程。

~ iotop

Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
   TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
 39295 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.01 % [kworker/0:2]
     1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 22
     2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
  • 从该输出可以看到,前两行分别代表进程的磁盘读写总大小和磁盘的实际读写总大小。由于缓存、缓冲区、I/O 合并等因素,它们可能不相等。
  • 剩下的部分从各个角度代表了进程的 I/O 情况,包括 线程 ID、I/O 优先级、每秒磁盘读取大小、每秒磁盘写入大小、换入百分比和等待 I/O 时钟百分比。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6275

(0)
郭靖的头像郭靖
上一篇 2022年12月1日 下午5:03
下一篇 2022年12月2日 下午5:13

相关推荐

  • systemd:实现 Linux 服务 Crash 后自动重启systemd:

    Systemd 允许你对服务进行配置,以便在服务崩溃时自动重启。 一个典型的单元文件是这样的: 在上面的例子中,如果守护进程崩溃或被杀死,systemd 不会去管它。 不过,你可以让 systemd 自动重启守护进程,以防它崩溃或意外被杀掉。为此,你可以在 [Service] 中添加 Restart 选项。典型的示例如…

    2023年8月14日
    2.3K00
  • 使用openssl自签发泛域名证书

    使用openssl自签发泛域名证书 openssl自签发泛域名(通配符)证书 首先要有openssl工具,如果没有那么使用如下命令安装: [root@sre ~]# yum install -y openssl openssl-devel 修改openssl.cnf配置文件 具体修改如下 [root@sre ~]# vim /etc/pki/tls/open…

    Linux系统 2023年1月31日
    1.5K00
  • Ubuntu篇—文件压缩与解压

    查看文件夹占用磁盘大小 du -sh 一:Ubuntu下解压和压缩tgz文件 参数: -c :create 建立压缩档案的参数; -x : 解压缩压缩档案的参数; -z : 是否需要用gzip压缩; -v: 压缩的过程中显示档案; -f: 置顶文档名,在f后面立即接文件名,不能再加参数 1 将tgz文件解压到指定目录 2 将指定目录压缩到指定文件 二:ubu…

    2022年6月22日
    1.2K00
  • 二进制部署Mysql8.0.31

    二进制部署Mysql8.0.31 一、软件包下载 企业版:Enterprise , 互联网行业一般不选择. 社区版本:选择 源码包 编译安装: source code .tar.gz 通用二进制 公司用什么版本数据库? 具体什么小版本号? 5.6.20 5.6.34 5.6.36 5.6.38 5.6.40 5.7.18 5.7.20 5.7.22 5.7.…

    2023年1月20日
    1.1K00
  • Zabbix 监控SSL证书到期时间

    监控脚本: [root@fxkj devops]# vim /home/zabbix/etc/zabbix_agentd.conf.d/check_ssl.sh #!/bin/bash #获取证书的有效时间 time=$(echo | openssl s_client -connect $1:443 2>/dev/null | openssl x509…

    2023年3月6日
    1.5K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信