如何在 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 很容易。