如何使用 iostat 命令监控 linux 系统性能 ?

iostat 命令用于监视 CPU 利用率和所有磁盘和文件系统的 I/O 统计息,nfsiostat 命令用于监视网络文件系统(NFS)的 I/O 统计信息。

Iostat 命令通过观察时间,传输速率来监视 I/O 设备。此命令特别有用,可以用来生成报告,我们可以用来优化系统的输入和输出负载。

Iostat 命令通常会生成两个报告:

  • CPU 利用率报告
  • 所有磁盘 I/O 统计报告

为了生成报告,iostat 命令会读取以下系统文件:

  • /proc/diskstats - 获取磁盘统计信息
  • /proc/stat - 获取系统统计
  • /sys - 获取块设备统计信息
  • /proc/devices - 获取永久设备名称
  • /proc/self/mountstats - 获取网络文件系统
  • /proc/uptime - 获取系统正常运行时间信息

在本教程中,我们将学习如何在 Linux 系统上安装 iostat 实用程序,然后我们将讨论如何使用 iostat 命令生成报告

安装 ostat 程序

ostat 是 sysstat 包的一部分,使用下面的命令安装

CentOS/RedHat

[root@linuxtechi ~]# yum install sysstat -y

Ubuntu/Debian

$ sudo apt-get install sysstat -y

Fedora

[root@linuxtechi ~]# dnf install sysstat -y

现在让我们看一些例子来更好地理解 iostat 命令。

(1) 获取完整的统计信息 (CPU & Devices)

要获得系统的完整统计信息,打开终端并执行以下命令

[root@linuxtechi ~]# iostat

iostat 命令的输出包括:

  • %user, 用户的 CPU 利用率
  • %nice, 应用程序的 CPU 利用率好优先级
  • %system, 系统的 CPU 利用率
  • %iowait, CPU 闲置的时间百分比
  • %steal, 当 hypervisor 在另一个 CPU 上工作时,CPU 正在等待的时间百分比
  • %idle, 系统空闲时间的比例

设备,显示系统上所有设备的名称

  • Tps, 每秒传输的缩写
  • Blk_read/s & Blk_write/s 读写操作的传输速度
  • Blk_read & Blk_write 取和写入的块总数

(2) 只生成 CPU 统计数据

[root@linuxtechi ~]# iostat -c

(3) 为所有设备生成 I/O 统计信息 (-d)

只获取系统上连接的设备的 iostat 报告,使用 -d 选项

[root@linuxtechi ~]# iostat -d

(4) 生成详细的 I/O 统计信息

虽然通常 iostat 命令提供的统计数据已经足够了,但如果你希望获得更详细的统计数据,我们可以使用-x 选项和 iostat 命令一起使用。

[root@linuxtechi ~]# iostat -x

(5) 为设备和 CPU 分别生成详细的报告

获取设备的详细信息,我们将使用选项 d 和 x

[root@linuxtechi ~]# iostat -xd

类似地,获取 CPU 的详细信息,我们将使用选项 c 和 x

[root@linuxtechi ~]# iostat -xc

(6) 获取单个设备的 I/O 统计信息

iostat 还可以为单个设备提供 I/O 统计信息,示例如下

[root@linuxtechi ~]# iostat -p sda

(7) 生成 MB 或 KB 的报告

我们还可以生成以兆字节或千字节为单位的系统统计信息,示例如下

[root@linuxtechi ~]# iostat -m

类似地,我们也可以生成 kb 单位格式的报告,示例如下

[root@linuxtechi ~]# iostat -k

(8) 生成延迟系统 I/O 统计报告

要捕获具有延迟的统计信息,我们可以使用 iostat 命令,后面跟着以秒为单位的间隔和所需报告的数量

[root@linuxtechi ~]# iostat 3 2

我们还可以使用 delay 参数以及上面讨论过的 iostat 命令的其他选项。

(9) 生成 LVM 统计信息报告

要生成 LVM 统计信息,可以使用选项 N

[root@linuxtechi ~]# iostat -N

(10) 仅生成活动设备的报告

使用 z 选项 , 可以为处于活动状态的设备生成报告,示例如下

[root@linuxtechi ~]# iostat -z 2 5

(11) 生成带有时间戳的 iostat 报告

使用 t 选项,生成带有时间戳的 iostat 报告,示例如下

[root@linuxtechi ~]# iostat -t

(12) 根据持久设备名称生成统计报表

语法如下:

iostat -j id {uuid}

使用 blkid 命令找到磁盘的 UUID

[root@linuxtechi ~]# iostat -j id 12244367-e751-4c1c-9336-f30d623fceb8

(13) 生成网络文件系统(NFS)的 I/O 统计信息

我们可以使用 nfsiostat 命令生成 NFS I/O 统计信息报告。nfsiostat 命令是 nfs-utils 软件包的一部分。假设我们已经在服务器上安装了两个 NFS 共享,使用如下命令生成 NFS 报告

[root@linuxtechi ~]# nfsiostat

(14) 生成时间段系统 I/O 统计报告

iostat 命令生成实时 I/O 统计信息,如果您想在一段时间内查看统计报告,我们应该使用 sar 实用程序,sar 命令也由 sysstat 软件包提供的,可以参考如下文章:

Generate CPU, Memory and I/O report using SAR command

我的开源项目

作者:鸠摩智首席音效师原文地址:https://segmentfault.com/a/1190000043365386

%s 个评论

要回复文章请先登录注册