如何在 Linux 系统中监控磁盘 I/O
摘要
磁盘监控是维护 Linux 系统的一项重要任务。本质上,从磁盘获取数据需要时间。因此,磁盘 I/O 子系统被认为是系统中速度最慢的部分,甚至会拖慢整个系统的速度。
因此,检查磁盘性能至关重要。我们必须确定哪个进程正在等待 I/O 请求完成,并确定是否存在瓶颈以及瓶颈的原因。为了检查 Linux 系统中的磁盘 I/O 性能,我们将学习如何使用 iostat、iotop 等工具。
在 Linux 中安装 iotop
借助软件包管理器,安装 iotop 非常简单,因为该软件包存在于所有 Linux 发行版的软件仓库中。
在 Fedora 和 RHEL/CentOS 8 系统上,可以使用 dnf 命令安装 iotop。
$ sudo dnf install iotop
在 Debian/Ubuntu 系统上,可以使用 APT-GET 命令或 APT 命令安装 iotop。
$ sudo apt install iotop
可以使用 YUM 命令在 RHEL/CentOS 6/7 系统上安装 iotop
$ sudo yum install iotop
使用 iotop 命令监控磁盘 I/O
iotop 命令提供了多种选项,可用于检查各种磁盘 I/O 统计信息。
要查看每个进程或线程的当前 I/O 利用率,请运行不带任何参数的 iotop 命令。
$ sudo iotop
输出
Total DISK READ : 18.27 K/s | Total DISK WRITE : 0.00 B/s
0.00 B DISK READ: 18.27 K/s | Actual DISK WRITE: 14.61 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
509 be/3 root 0.00 B/s 0.00 B/s 0.00 % 3.91 % [jbd2/dm-0-8]
247269 be/4 0.00 B/s 0.00 B/s 0.00 % 0.21 % kworker/0:2]
2507 be/4 nwd 18.2 B/s 0.00 B/s 3.57 % 0.00 % gnome-terminal
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switch
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
6 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0]
9 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [mm_percpu_wq]
10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_tasks_kthre]
11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_tasks_rude_]
12 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_tasks_trace]
13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
在 Linux 系统中安装 iostat
在 Fedora 和 RHEL/CentOS 8 系统上,可以使用 DNF 命令安装 iostat。
$ sudo dnf install sysstat
在 Debian/Ubuntu 系统上,可以使用 APT-GET 命令或 APT 命令安装 iostat。
$ sudo apt install sysstat
在 RHEL/CentOS 6/7 系统上,可以使用 YUM 命令安装 iostat。
$ sudo yum install sysstat
使用 iostat 命令监控磁盘I/O
iostat 命令提供了多种选项,可用于检查各种 CPU 和磁盘 I/O 统计信息。
要查看完整的系统统计信息,请运行不带任何参数的 iostat 命令。
$ iostat
输出
Linux 4.19.32-1-MANJARO Thursday 18 April 2022 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.45 0.02 16.47 0.12 0.00 53.94
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 6.68 126.95 124.97 0.00 58420014 57507206 0
sda 0.18 6.77 80.24 0.00 3115036 36924764 0
loop0 0.00 0.00 0.00 0.00 2160 0 0
loop1 0.00 0.00 0.00 0.00 1093 0 0
loop2 0.00 0.00 0.00 0.00 1077 0 0
sda 3.14 63.31 38.14 0.00 19772796 11911070 0
scd0 0.00 0.00 0.00 0.00 1 0 0
zram0 7.74 9.36 21.58 0.00 2924188 6738944 0
结论
在本文中,我们学习了如何使用 iostat 和 iotop 命令来检查磁盘 I/O 性能。我们还讨论了如何使用 iotop 命令来查看按进程细分的磁盘读写活动。
还有其他一些命令,例如 vmstat 和 sar 命令,可用于监控 Linux 系统中的磁盘 I/O。希望这些命令示例对您有所帮助,也希望您能轻松学习和使用 Linux。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

