Linux 查看磁盘的 I/O 读写情况(随手记)
1. 使用 iostat
iostat
是 sysstat
工具包中的一个工具,用于监控系统的 CPU 和磁盘 I/O 性能。
安装
在大多数 Linux 发行版中,sysstat
需要手动安装:
# Debian/Ubuntu 系列
sudo apt install sysstat
# CentOS/RHEL 系列
sudo yum install sysstat
使用
运行以下命令查看磁盘 I/O 情况:
iostat -d -x 1
-d
:显示设备级的 I/O 数据。-x
:显示扩展的统计信息。1
:每秒刷新一次。
输出示例:
Device r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 12.00 5.00 1024.0 512.0 128.00 0.50 1.50 0.10 1.50
r/s
和w/s
:每秒读写请求数。rkB/s
和wkB/s
:每秒读写的 KB 数据量。%util
:磁盘的使用率,接近 100% 表示磁盘繁忙。
2. 使用 vmstat
vmstat
是一个轻量级的系统性能监控工具,也可以查看磁盘 I/O。
使用
vmstat 1
1
:每秒刷新一次。
输出示例:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 50000 20000 400000 0 0 100 150 300 400 10 5 80 5 0
bi
:块设备的读(Block In)。bo
:块设备的写(Block Out)。wa
:CPU 等待 I/O 的时间百分比。
3. 使用 iotop
iotop
是一个交互式工具,类似于 top
,专门用于监控磁盘 I/O。
安装
# Debian/Ubuntu 系列
sudo apt install iotop
# CentOS/RHEL 系列
sudo yum install iotop
使用
sudo iotop
输出示例:
Total DISK READ: 1.20 M/s | Total DISK WRITE: 500.00 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/4 root 1.20 M/s 0.00 B/s 0.00 % 1.50 % dd if=/dev/zero of=/tmp/testfile
DISK READ
和DISK WRITE
:显示每个进程的磁盘读写速率。COMMAND
:显示正在执行的命令。
4. 使用 dstat
dstat
是一个实时监控工具,可以同时显示多个系统性能指标,包括磁盘 I/O。
安装
# Debian/Ubuntu 系列
sudo apt install dstat
# CentOS/RHEL 系列
sudo yum install dstat
使用
dstat -d --disk-util
输出示例:
----disk----
read write
1.0k 500.0k
5. 使用 sar
sar
是 sysstat
工具包中的另一个工具,用于收集和查看系统性能数据。
使用
sar -b 1 5
-b
:显示 I/O 和传输速率。1 5
:每秒采样一次,持续 5 次。
输出示例:
12:00:01 AM tps rtps wtps bread/s bwrtn/s
12:00:02 AM 15.00 10.00 5.00 1024.00 512.00
tps
:每秒传输数(读写总和)。bread/s
和bwrtn/s
:每秒读写的块数。
6. 使用 cat /proc/diskstats
Linux 内核在 /proc/diskstats
文件中提供了原始的磁盘统计信息。
查看
cat /proc/diskstats
输出示例:
8 0 sda 157698 1048576 12345678 7890 123456 654321 9876543 12345 0 123456 54321 0 0 0
字段含义(部分):
- 第 4 列:读取完成次数。
- 第 6 列:写入完成次数。
- 第 7 列:读取的扇区数。
- 第 9 列:写入的扇区数。
7. 使用 bpftrace
(高级方法)
如果你需要更高级的实时监控,可以使用 bpftrace
(基于 eBPF 的工具)。
示例脚本
sudo bpftrace -e 'tracepoint:block:block_rq_issue { printf("Disk %s %d bytes\n", args->disk, args->bytes); }'
这个脚本会实时监控磁盘的读写操作。
总结
- 如果需要简单快速的查看磁盘 I/O,可以使用
iostat
或vmstat
。 - 如果需要实时监控特定进程的 I/O,可以使用
iotop
。 - 如果需要详细的历史数据,可以使用
sar
。 - 如果需要高级的实时分析,
bpftrace
是一个强大的选择。
原文地址:https://blog.csdn.net/Tassel_YUE/article/details/145139380
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!