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

相关推荐

  • Centos7安装postgresql数据库

    1.更新源 2.安装postgresql 3.初始化数据库 4.启动数据库并设置开机启动 5.登录postgresql并设置密码 postgresql在安装时默认添加用户postgres 输入 psql 进入数据库是这样的 设置密码: 退出按:q 备注其他:列出所有库l 列出所有用户du 列出库下所有表d 6.重启数据库: 7 创建数据库跟用户 因为post…

    2023年4月11日
    1.5K00
  • 多台服务器如何设置SSH免密登录

    本次测试需要服务器己安装好 ssh-keygen和ssh-copy-id。安装方式如下: 安装ssh-keygen和ssh-copy-id 1、在客户端机器上生成密钥,这里连续三个回车默认即可。 3、进入到/root/.ssh/目录下,查看是否生成密钥成功,这里一共生成三个文件,本次主要用到的是id_rsa.pub:私钥(本次实验用到的) 4、通过命令复制私…

    2022年6月16日
    1.9K00
  • Linux SSH 登录失败多少次禁止该IP访问 防止暴力破解

    Linux 系统SSH 登录失败的内容会记录到/var/log/secure文件,通过查找关键字 Failed,可以定位到这些异常的IP地址,比如: 比如这里,明显这个IP地址在进行SSH 扫描,不断的更换端口和用户进行暴力测试。 在Linux里面有两个相关的文件: /etc/hosts.allow: 允许哪些IP访问主机 /etc/hosts.deny 禁…

    2023年3月1日
    1.7K00
  • LAMP环境下部署DiscuzQ

    一、安装Apachae yum安装Apache,并设置开机自启动 在网页浏览器输入ip地址,查看Apache是否正常 二、安装配置 MariaDB 执行以下命令,查看系统中是否已安装 MariaDB。 rpm -qa | grep -i mariadb       返回结果类似如下内容,则表示已存在 MariaDB。 &nbsp…

    2022年12月6日
    1.8K00
  • Ubuntu20.04 Server版安装图形界面并使用VNC实现远程桌面

    一:Ubuntu端 1、进行VNC设置之前,需要有图形界面,没有的可以执行以下代码安装图形界面 2、如上图所示运行后进入安装程序,进入GUI界面,通过控制“↑”“↓” 找到Ubuntu desktop按空格键选中,再按Tab键跳到OK选项回车!此处等待时间较长,然后重启开机,开机若未进入图形界面则需查看第四步是否配置完成,若未完成则需要再次执行此步骤。成功后…

    2022年7月12日
    6.2K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信