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

相关推荐

  • 在Proxmox VE下开启vGPU – Tesla P4为例

    对于 Proxmox VE 8,需要使用16.0+版本的 vGPU 驱动程序,低版本的驱动程序不支持 Linux 6.x 内核 最近我刚升级了我的 NAS 主机,并且购买了一块 Tesla P4 显卡。我想把 vGPU 分配给虚拟机上的 Jellyfin 容器硬解使用,经过几天的研究,我简单总结了使用方法。关于如何使用硬解,我会在下一篇文章中进行说明。 术语…

    2024年2月19日
    1.8K00
  • Cisco交换机密码忘记重置

          原理:进入交换机底层,通过修改交换机原始配置文件名字,重启交换机后,交换机找不到原来配置文件情况下,就会加载默认系统文件(即:交换机出厂配置),以达到清除交换机密码的目的。 步骤一:用笔记本通过控制线连接到交换机com口,打开超级终端调试窗 步骤二:交换机重新上电,上电过程中,按住交换机正面”m…

    2024年6月18日
    1.7K00
  • kali系统登录密码忘了如何进行重置

    如果你的kali系统密码忘记了,又不想重装系统,那么,你可以通过如下几个步骤来强制重置root密码 第一步:在启动kali系统之后会进入到一个引导界面,然后我们需要按“e”来进入启动前的编辑命令,若你在开机时没有出现如下界面,你可以连续按上下键来阻止系统正常启动,以此来进入这个开机引导界面。 第二步:按“e”进入到启动前编辑命令界面后,找到以下内容,并做一定…

    2022年6月13日
    3.6K00
  • Sar—Linux 上最为全面的系统性能分析工具之一

    sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。 我们可以使用sar命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶…

    2023年4月13日
    95200
  • root用户 ssh远程登录 提示access denied

    ssh远程登录 提示Access denied,如下图所示: 需要修改SSH服务配置文件sshd_config来解决这个问题。文件路径为 /etc/ssh/sshd_config ,默认文件内容如下图: 图中红框内容修改为 PermitRootLogin yes,如下图所示: 修改好配置文件并保存,service ssh restart 重启SSH服务,ss…

    2023年6月8日
    1.3K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信