如何在 Linux 系统中监控磁盘 I/O
摘要
磁盘监控是在维护 Linux 系统时需要执行的一项重要任务。从根本上说,从磁盘获取数据需要时间。因此,磁盘 I/O 子系统被认为是最慢的部分,并且会减慢整个系统的速度。
因此,检查磁盘性能至关重要。我们必须确定哪个进程正在等待 I/O 请求完成,并确定是否存在瓶颈以及是什么导致了瓶颈。为了检查 Linux 系统中的磁盘 I/O 性能,我们将学习如何使用 iostat、iotop 等工具。
Linux 中 iotop 的安装
由于该软件包存在于所有 Linux 发行版的存储库中,因此使用软件包管理器安装起来非常简单。
可以在 Fedora 和 RHEL/CentOS 8 系统上使用 DNF 命令安装 Iotop。
$ sudo dnf install iotop
可以使用 APT-GET 命令或 APT 命令在 Debian/Ubuntu 系统上安装 Iotop。
$ sudo apt install iotop
可以在 RHEL/CentOS 6/7 系统上使用 YUM 命令安装 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
可以使用 APT-GET 命令或 APT 命令在 Debian/Ubuntu 系统上安装 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 很容易。