1、iostat
iostat 命令用于监控系统输入/输出设备的负载,其通过观察设备相对于其平均传输速率的活动时间实现。iostat 命令生成的报告可用于更改系统配置,以更好地平衡物理磁盘之间的输入/输出负载
iostat 命令生成的第一个报告提供了自系统启动以来的统计信息,每份后续报告涵盖自上一份报告以来的时间。每次运行 iostat 命令时,都会报告所有统计信息。该报告由一个 CPU 标题行和一行 CPU 统计信息组成。在多处理器系统上,CPU 统计数据是作为所有处理器的平均值在系统范围内进行计算的
1.1、安装
yum install sysstat
1.2、语法
iostat [-c] [-d] [-h] [-k|-m] [-N] [-t] [interval [count]]
1.3、常用选项
-c:显示CPU利用
-d:显示设备利用率
-h:使用易读的方式显示数据
-k:以KB为单位显示统计信息
-m:以MB为单位显示统计信息
-N:显示设备名称
-t:显示每个报告的时间
-x:显示扩展统计信息
interval:刷新间隔时间
count:输出报告数量
1.4、使用示例
# 显示所有CPU和设备报告
[root@test-host ~]# iostat
Linux 3.10.0-1160.76.1.el7.x86_64 (test-host) 2022年11月18日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.39 0.01 0.00 99.35
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.59 30.74 26.73 167732 145833
dm-0 1.23 28.31 25.98 154435 141737
dm-1 0.02 0.40 0.00 2204 0
dm-2 0.02 0.21 0.38 1119 2048
# 连续显示所有设备报告信息,间隔为2秒
iostat -d 2
# 间隔为2秒,一共输出3次所有设备报告信息
iostat -d 2 3
# 间隔为2秒,一共输出3次指定设备扩展报告信息
[root@test-host ~]# iostat -x sda 2 3
Linux 3.10.0-1160.76.1.el7.x86_64 (test-host) 2022年11月18日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.23 0.00 0.37 0.01 0.00 99.39
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 0.04 1.23 0.26 28.79 25.07 72.09 0.00 0.91 0.69 1.96 0.58 0.09
1.5、输出信息介绍
-
CPU利用率报告
字段 描述 %user 显示在用户级别(应用程序)执行时出现的CPU利用率百分比 %nice 显示设置过优先级的用户级别执行时出现的CPU利用率百分比 %system 显示在系统级(内核)执行时CPU利用率的百分比 %iowait 显示系统有未完成的磁盘I/O请求时CPU空闲的时间百分比 (重点关注) %steal 显示虚拟机管理程序为另一个虚拟处理器提供服务时,虚拟CPU在非自愿等待中所花费的时间百分比 %idle 显示一个或多个CPU空闲并且系统没有未完成的磁盘I/O请求的时间百分比 -
设备利用率报告
字段 描述 rrqm/s 每秒合并到设备队列中的读取请求数 wrqm/s 每秒合并到设备队列中的写入请求数 r/s 设备每秒完成的读取请求数 w/s 设备每秒完成的写入请求数 rkB/s 每秒从设备读取的扇区数(KB) wkB/s 每秒写入设备的扇区数(KB) avgrq-sz 向设备发出的请求的平均大小 avgqu-sz 向设备发出的请求的平均队列长度 await 向设备发出的I/O请求得到服务的平均时间(毫秒) r_await 向设备发出的读取请求得到服务的平均时间(以毫秒计) w_await 向设备发出的写入请求得到服务的平均时间(以毫秒计) %util 向设备发出I/O请求所用时间的百分比。当该值接近100%时,说明设备出现性能瓶颈
2、iotop
2.1、简介
iotop 监控 Linux 内核输出的 I/O 使用信息,并显示系统上进程或线程的当前 I/O 使用情况表。iotop 显示采样期间每个进程/线程读写的 I/O 带宽的列,以及线程/进程写入和等待 I/O 的时间百分比
2.2、语法
iotop [OPTIONS]
2.3、常用选项
-o:仅显示实际执行I/O的进程或线程,而不是显示所有进程或线程
-b:打开非交互模式,用于记录一段时间内的I/O使用情况
-n NUM:执行NUM次后退出
-d SEC:设置刷新时间间隔
-p PID:要监控的进程/线程列表(默认情况下监控全部)
-u USER:要监控的用户列表(默认情况下全部)
-P:仅显示进程