一、 iostat
iostat(Input/Output Statistics)是一个用于监控系统输入输出设备和CPU使用情况的工具。它可以提供磁盘读写操作的详细统计信息,包括每秒读写的数据量、I/O操作的次数以及响应时间等。通过 iostat,系统管理员可以快速了解磁盘的工作负载和性能状况。
iostat -xdm 1
iostat命令是Linux/Unix系统上的一个性能分析工具,它可以用来监控系统的I/O性能,包括CPU利用率、磁盘读写速度、网络吞吐量等。iostat命令可以实时输出系统的I/O性能信息,也可以按照一定的时间间隔输出统计信息。
iostat命令的常用选项如下:
- -c:显示CPU利用率相关的信息;
- -d:显示磁盘I/O相关的信息;
- -n:显示网络I/O相关的信息;
- -t:在输出中包含时间戳信息;
- -x:显示详细的磁盘I/O相关信息,包括磁盘的平均响应时间、I/O队列长度等。
例如,使用iostat -d命令可以查看磁盘I/O性能信息,如下所示:
iostat -dxm 1 -- 红帽
Linux 4.19.113-300.el7.x86_64 (172-16-130-211) 12/04/2023 _x86_64_ (40 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.01 1.05 6.65 10.83 0.48 0.53 118.48 1.19 67.76 13.45 101.14 2.73 4.77
sdb 0.13 2.94 1.00 113.43 0.03 1.25 22.92 0.08 0.69 1.88 0.67 0.18 2.01
dm-0 0.00 0.00 6.76 11.88 0.48 0.53 111.11 1.47 78.81 13.49 115.97 2.56 4.77
iostat -dxm 1 -- 麒麟
Linux 4.19.90-24.4.v2101.ky10.aarch64 (10-10-88-17) 12/04/2023 _aarch64_ (8 CPU)
Device r/s rMB/s rrqm/s %rrqm r_await rareq-sz w/s wMB/s wrqm/s %wrqm w_await wareq-sz d/s dMB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
dm-0 0.03 0.01 0.00 0.00 4.90 483.46 22.30 0.60 0.00 0.00 1.63 27.74 0.00 0.00 0.00 0.00 0.00 0.00 0.04 2.39
dm-1 0.00 0.00 0.00 0.00 0.00 73.76 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 70.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.03 0.01 0.00 1.54 4.87 484.74 21.66 0.60 0.64 2.86 1.66 28.15 0.00 0.00 0.00 0.00 0.00 0.00 0.01 2.37
其中,tps表示每秒钟完成的I/O请求次数,kB_read/s和kB_wrtn/s表示每秒钟读取和写入的数据量。
这是iostat命令输出的磁盘I/O性能信息,各项指标的含义如下:
- rrqm/s:每秒钟由于读取操作被延迟而需要重新排队的读取请求次数;
- wrqm/s:每秒钟由于写入操作被延迟而需要重新排队的写入请求次数;
- r/s:每秒钟从设备中读取的次数;
- w/s:每秒钟向设备中写入的次数;
- rMB/s:每秒钟从设备中读取的数据量(以MB为单位);
- wMB/s:每秒钟向设备中写入的数据量(以MB为单位);
- avgrq-sz:平均每个I/O请求的数据量(以扇区为单位);
- avgqu-sz:平均I/O队列长度;
- await:平均I/O请求的等待时间(以毫秒为单位);
- r_await:平均读取请求的等待时间(以毫秒为单位);
- w_await:平均写入请求的等待时间(以毫秒为单位);
- svctm:平均I/O请求的服务时间(以毫秒为单位);
- %util:设备的利用率,即设备处于繁忙状态的时间占总时间的百分比。
iostat
是一个能够提供系统输入输出统计信息的工具,可以查看磁盘I/O、CPU使用率等信息。下面分别对你给出的各个指标进行解释:
-
Device
: 这是设备的名称。 -
r/s
: 每秒读取(从设备)的次数。 -
rMB/s
: 每秒从设备读取量,单位为MB。 -
rrqm/s
: 每秒读请求合并的数量。 -
%rrqm
: 读请求合并的百分比。 -
r_await
: 读操作的平均等待时间(以毫秒为单位)。 -
rareq-sz
: 平均读取大小,单位为扇区。 -
w/s
: 每秒写入(到设备)的次数。 -
wMB/s
: 每秒写入设备的数据量,单位为MB。 -
wrqm/s
: 每秒写请求合并的数量。 -
%wrqm
: 写入请求合并的百分比。 -
w_await
: 写操作的平均等待时间(以毫秒为单位)。 -
wareq-sz
: 平均写入大小,单位为扇区。 -
d/s
: 每秒删除(从设备)的次数。 -
dMB/s
: 每秒删除设备的数据量,单位为MB。 -
drqm/s
: 每秒删除请求合并的数量。 -
%drqm
: 删除请求合并的百分比。 -
d_await
: 删除操作的平均等待时间(以毫秒为单位)。 -
dareq-sz
: 平均删除大小,单位为扇区。 -
f/s
: 每秒完成的操作数。 -
f_await
: 完成操作的平均等待时间(以毫秒为单位)。 -
aqu-sz
: 请求队列的平均大小。 -
%util
: 设备的使用百分比。
这些信息可以帮助我们理解系统运行状况,如磁盘I/O负载,设备是否忙碌,读写请求等待时间等。
二、 iotop
iotop是一款Linux系统的性能监控工具,用于监控磁盘IO使用情况。它可以显示当前系统中磁盘IO使用情况最高的进程信息,包括进程名、进程ID、磁盘IO读写速度等。
iotop是一个类似于top的工具,用于实时监控磁盘I/O使用情况。它显示当前系统中磁盘I/O使用情况最高的进程信息,包括进程名、进程ID、磁盘I/O读写速度等。
使用方法:
- 安装iotop
在大多数Linux系统中,iotop是通过软件包管理器安装的。例如,在Ubuntu系统中,可以使用以下命令安装:
sudo apt-get install iotop
- 运行iotop
运行iotop需要root权限,可以使用以下命令:
sudo iotop
- 查看结果
iotop会实时显示当前系统中磁盘IO使用情况最高的进程信息。可以使用以下快捷键:
- P:按照磁盘IO读取速度排序
- A:按照磁盘IO读写速度排序
- O:按照进程ID排序
- T:按照进程运行时间排序
- q:退出iotop
除此之外,还可以使用其他选项来控制iotop的输出格式和显示内容。可以使用以下命令查看帮助文档:
iotop --help
三、pidstat
在Linux系统中,监控磁盘I/O性能对于系统管理员至关重要。以下是常用的工具及其使用方法:
1. iostat
iostat
(Input/Output Statistics)是一个用于监控系统输入输出设备和CPU使用情况的工具。它可以提供磁盘读写操作的详细统计信息,包括每秒读写的数据量、I/O操作的次数以及响应时间等。通过 iostat
,系统管理员可以快速了解磁盘的工作负载和性能状况。
安装:
在大多数Linux发行版中,iostat
是sysstat
软件包的一部分。可以使用以下命令安装:
-
Debian/Ubuntu:
sudo apt-get install sysstat
-
CentOS/RHEL:
sudo yum install sysstat
使用示例:
-
查看所有设备的I/O统计信息:
iostat -d
-
查看所有设备的详细I/O统计信息:
iostat -dx
-
每秒刷新一次,显示10次统计信息:
iostat -d -x 1 10
输出解释:
rrqm/s
:每秒合并的读请求次数。wrqm/s
:每秒合并的写请求次数。r/s
:每秒读取的请求次数。w/s
:每秒写入的请求次数。rMB/s
:每秒读取的数据量(MB)。wMB/s
:每秒写入的数据量(MB)。avgrq-sz
:平均每个I/O请求的数据量(扇区)。avgqu-sz
:平均I/O队列长度。await
:平均I/O请求的等待时间(毫秒)。r_await
:平均读请求的等待时间(毫秒)。w_await
:平均写请求的等待时间(毫秒)。svctm
:平均I/O请求的服务时间(毫秒)。%util
:设备的利用率,即设备处于繁忙状态的时间占总时间的百分比。
2. iotop
iotop
是一个类似于top
的工具,用于实时监控磁盘I/O使用情况。它显示当前系统中磁盘I/O使用情况最高的进程信息,包括进程名、进程ID、磁盘I/O读写速度等。
安装:
-
Debian/Ubuntu:
sudo apt-get install iotop
-
CentOS/RHEL:
sudo yum install iotop
使用示例:
以root权限运行iotop
:
sudo iotop
快捷键:
P
:按照磁盘I/O读取速度排序。A
:按照磁盘I/O读写速度排序。O
:按照进程ID排序。T
:按照进程运行时间排序。q
:退出iotop
。
3. pidstat
pidstat
是sysstat
工具集的一部分,用于监控进程级别的资源使用情况,包括CPU、内存、I/O等。它可以帮助识别哪些进程占用了大量的I/O资源。
安装:
pidstat
是sysstat
软件包的一部分,安装方法同iostat
。
使用示例:
-
查看所有进程的I/O统计信息:
pidstat -d
-
查看特定进程(PID为1234)的I/O统计信息:
pidstat -d -p 1234
输出解释:
UID
:进程的用户ID。PID
:进程ID。kB_rd/s
:每秒读取的数据量(KB)。kB_wr/s
:每秒写入的数据量(KB)。kB_ccwr/s
:每秒写入的缓存数据量(KB)。iodelay
:I/O操作的延迟时间(毫秒)。
总结
- iostat:用于监控系统级别的磁盘I/O性能,提供设备级别的统计信息。
- iotop:用于实时监控进程级别的磁盘I/O使用情况,显示当前磁盘I/O使用情况最高的进程。
- pidstat:用于监控特定进程的资源使用情况,包括I/O。
通过结合使用这些工具,系统管理员可以全面了解系统的磁盘I/O性能,及时发现并解决潜在的性能瓶颈。
排序
要使用 pidstat -d 1 1
的输出并按 kB_wr/s
(降序)和 kB_rd/s
(降序)排序,你可以使用以下命令组合:
pidstat -d 1 1 | awk 'NR<3{print;next} {print | "sort -k6,6nr -k5,5nr"}' | head
解释:
pidstat -d 1 1
- 获取磁盘I/O统计信息awk
命令处理输出:NR<3{print;next}
- 保留前两行(标题行)- 其余行通过管道发送到sort命令
sort -k6,6nr -k5,5nr
- 排序:-k6,6nr
- 按第6列(kB_wr/s
)数值降序-k5,5nr
- 然后按第5列(kB_rd/s
)数值降序
head
- 只显示前几行
注意:列号可能因你的pidstat
输出格式而有所不同,如果需要调整列号,请检查实际输出中kB_wr/s
和kB_rd/s
的位置。