Linux 查看磁盘的 I/O 读写情况(随手记)

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 是一个强大的选择。

相关推荐

弓箭手大作战中谁是最强角色 人物排行怎么
安全套的正确使用方法,如何叫全程正确使用安全套
云手机是什么?华为云手机硬核专利曝光!科创人工智能ETF华宝(589520)盘中涨近1.4%
使用系统光盘安装驱动的详细教程(简单易懂的系统光盘驱动安装指南)
卡贝VS固特:解析两种铰链的优劣,你知道谁更吸引人?
超全!10款手机摄影常用修图APP推荐!网红同款照片一键get!
末世旅游:十大濒危“天堂景点”
365比分官网

末世旅游:十大濒危“天堂景点”

📅 08-24 👁️ 3443
传奇手游精英怪多久刷新一次?任务怎么获取?
电脑qq怎么开屏幕直播 电脑QQ开屏幕直播步骤
365比分官网

电脑qq怎么开屏幕直播 电脑QQ开屏幕直播步骤

📅 08-08 👁️ 4278