Ubuntu 服务器上的命令行工具查看磁盘 IO 统计信息?

软件推荐 linux 监控 命令行
2021-10-24 01:28:41

我有一台运行 Ubuntu Server 12.04 的服务器,我想查看磁盘 IO 统计信息。我试过top和htop,它们都没有输出任何类似于IO统计的东西。是否有执行此操作的命令行工具?

4个回答

您可能正在寻找iotop它提供了您在每个进程中寻找的信息。如果您运行最近的内核,您将需要以超级用户权限运行它,因为对 NET_ADMIN 权限的一些更改已经在一年前完成。只需安装并运行sudo iotop

iotop 运行中的屏幕截图

当您循环使用可用方法时,bwm-ng 还可以输出一些磁盘 I/O 统计信息。bwm-ng 在 linux 上优于 iotop 的优点是您不需要 NET_ADMIN 功能,因此默认情况下它将作为普通用户工作。如图所示,它提供每个设备的信息。

bwm-ng 磁盘 io

如果您想获得磁盘的生命周期统计信息,请尝试smartctl -a /dev/your/disk

htop可以显示每个进程的 I/O 速率,但您需要添加其中一IO_READ_RATE/IO_WRITE_RATE/IO_RATE列。

您可以使用pidstat(免费和开源):

说明

pidstat 命令用于监控当前由 Linux 内核管理的进程和线程。它还可以监视那些进程和线程的子进程。

使用它的 -d 选项,pidstat 可以报告 I/O 统计信息,前提是你有一个最新的 Linux 内核(2.6.20+),其中编译了选项 CONFIG_TASK_IO_ACCOUNTING。所以想象你的系统正在经历大量的 I/O,你想要知道哪些任务正在生成它们

在此处输入图像描述

您可以使用iostat

  • 免费和开源
  • sudo apt-get install -y sysstat

iostat ­-dx 3将在第一个报告中显示自系统启动以来的扩展设备统计信息,并在后续报告中显示最后 3 秒的增量,直到中断。

在此处输入图像描述

的含义:

  • 设备:此列给出设备(或分区)名称。
  • tps:表示每秒向设备发出的传输次数。
  • blk_read/s:表示从设备读取的数据量,以每秒块数表示。
  • blk_wrtn/s:表示写入设备的数据量,以每秒块数表示。
  • blk_read:读取的块总数。
  • blk_wrtn:写入的总块数。
  • kB_read/s:表示从设备读取的数据量,以每秒千字节表示。
  • kB_wrtn/s:表示写入设备的数据量,以每秒千字节表示。
  • kB_read:读取的总千字节数。
  • kB_wrtn:写入的总千字节数。
  • MB_read/s:表示从设备读取的数据量,以每秒兆字节表示。
  • MB_wrtn/s:表示写入设备的数据量,以每秒兆字节表示。
  • MB_read:读取的总兆字节数。
  • MB_wrtn:写入的总兆字节数。
  • rrqm/s:每秒合并的排队到设备的读取请求数。
  • wrqm/s:每秒合并的排队到设备的写入请求数。
  • r/s:每秒向设备发出的读取请求数。
  • w/s:每秒向设备发出的写入请求数。
  • rsec/s:每秒从设备读取的扇区数。
  • wsec/s:每秒写入设备的扇区数。
  • rkB/s:每秒从设备读取的千字节数。
  • wkB/s:每秒写入设备的千字节数。
  • rMB/s:每秒从设备读取的兆字节数。
  • wMB/s:每秒写入设备的兆字节数。
  • avgrq-sz:向设备发出的请求的平均大小(以扇区为单位)。
  • avgqu-sz:向设备发出的请求的平均队列长度。
  • await:向设备发出的 I/O 请求的平均时间(以毫秒为单位)。这包括队列中的请求所花费的时间以及为它们提供服务所花费的时间。
  • svctm:向设备发出的 I/O 请求的平均服务时间(以毫秒为单位)。
  • %util:向设备发出 I/O 请求的 CPU 时间百分比(设备的带宽利用率)。当该值接近 100% 时,会发生设备饱和。

(PS:iotop +1,这是我用得最多的)