深入了解系统 I/O 监控工具:iotop @

在日常使用 Linux 系统时,我们常常需要了解哪些进程正在大量读写磁盘,从而判断系统是否因为 I/O 瓶颈而变慢。iotop​ 就是这样一个直观、易用的工具,它能够实时监控各个进程的磁盘 I/O 使用情况,让我们像使用 top 命令查看 CPU 和内存那样,轻松掌握系统的 I/O 动态。

🔧 安装 iotop @

如果你使用的是 Arch Linux 或其衍生版本(如 Manjaro),可以通过 yay 包管理器快速安装:

yay -S iotop

其他主流发行版也可以使用自带的包管理器安装,例如在 Ubuntu/Debian 中可使用 sudo apt install iotop


⚙️ 常用参数详解 @

iotop 提供了丰富的参数选项,方便我们按需查看信息。下面是一些常用参数及其应用场景:

参数 说明
-h​, --help 显示帮助信息,当你忘记参数用法时可以随时查看。
-o​, --only 只显示正在实际进行 I/O 操作的进程,让结果更加聚焦。这是一个非常实用的选项,你可以交互式地按 o 键随时开启或关闭这个模式。
-b​, --batch 非交互式模式,适用于脚本环境或需要将输出重定向到文件时。
-n NUM​, --iter=NUM 在非交互式模式下,设置命令执行的次数。例如 -n 5 表示刷新 5 次后自动退出。
-d SEC​, --delay=SEC 设置每次刷新之间的时间间隔(单位:秒),支持小数(如 1.5),让你可以自定义监控的刷新频率。
-p PID​, --pid=PID 只监控指定 PID 的进程,非常适合当你已经锁定某个“可疑”进程,想要单独观察它的 I/O 行为时。
-u USER​, --user=USER 只显示属于特定用户的进程,在多用户环境中排查问题时非常有用。
-P​, --processes 默认情况下,iotop​ 会显示所有线程。使用此选项可以只显示进程级别的汇总信息,让界面更简洁。

💡 使用场景与技巧 @

  • 实时监控:直接输入 iotop​ 命令,你会看到一个类似 top 的动态更新界面,在这里可以清楚看到每个进程的读写速度和 I/O 百分比。

  • 排查高 I/O 进程:结合 -o 参数使用,可以快速揪出导致磁盘狂转的“元凶”:

    iotop -o
    
  • 定时采样:在脚本中定期收集 I/O 信息时,可以使用批处理模式。例如,每隔 2 秒采样一次,共采样 10 次:

    iotop -b -d 2 -n 10
    
  • 聚焦特定目标:当你已经明确要监控的目标时,使用 -p​ 或 -u 参数可以过滤无关信息,让结果更清晰。


深入了解系统性能的得力助手:iostat @

在日常的系统管理和性能调优工作中,我们经常需要了解各个硬件组件的工作状态。iostat 就是这样一个专门用来监控系统输入/输出设备负载情况的实用工具,它能帮助我们深入了解磁盘、CPU等关键组件的运行状况,特别适合用来诊断和解决磁盘I/O性能瓶颈问题。

轻松上手:基本语法解析 @

使用 iostat 的基本格式非常直观:

iostat [选项] [时间间隔] [次数]
  • 选项:决定显示哪些信息,比如只看CPU或只看磁盘
  • 时间间隔:每次统计之间的等待时间(秒)
  • 次数:总共要统计多少次

灵活运用:常用选项详解 @

1. 快速概览模式 @

直接输入 iostat,不加任何参数,它会立即给你一份系统当前状态的快照,包含CPU使用情况和所有磁盘的I/O统计:

iostat

这就像给系统拍了一张“体检报告”,让你快速了解整体健康状况。

2. 专注CPU监控 @

当你特别关心CPU负载时,使用 -c 选项可以过滤掉其他信息,只显示CPU相关的统计数据:

iostat -c 2 3

这个命令会每2秒更新一次CPU信息,连续显示3次,非常适合观察CPU负载的变化趋势。

3. 专注磁盘I/O分析 @

如果磁盘性能是你关注的重点,-d 选项能帮你聚焦在磁盘I/O数据上:

iostat -d sda 1

这里我们指定监控 sda 这块磁盘,每秒刷新一次数据,持续输出,让你实时掌握磁盘的读写情况。

4. 深入洞察磁盘性能 @

想要更详细地了解磁盘工作状态?-x 选项会为你展开一幅更丰富的画面,包含设备使用率、响应时间等深度指标:

iostat -x 5

每5秒输出一次详细的磁盘统计信息,就像给磁盘做了一次“深度体检”。

5. 人性化数据显示 @

默认的数据单位可能不太直观,-k​ 和 -m 选项让数据更易读:

iostat -k sda        # 用KB作为单位,更符合我们的阅读习惯
iostat -m 2 2        # 或者用MB,每2秒刷新,共显示2次

6. 精准监控特定设备 @

如果你只关心某块特定的硬盘,可以直接在命令中指定设备名:

iostat -x nvme0n1 3  # 专门监控nvme0n1这块高速固态硬盘,每3秒更新

通过合理组合这些选项,你可以像调整望远镜焦距一样,从整体概览到局部细节,全方位掌握系统的I/O性能状况。无论是日常巡检还是性能问题排查,iostat 都能成为你得力的助手!