监控 io 性能

命令 iostat

iostat 命令被用于监视系统输入输出设备和 CPU 的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况。同 vmstat 一样,iostat 也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。


  • 查看系统输入输出设备和 CPU 的使用情况
[root@localhost ~]# iostat -x
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 	2017年11月28日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.39    0.00    0.57    0.54    0.00   98.50

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.13    2.88    1.41   109.32    22.01    61.33     0.07   15.30    8.15   29.92   2.75   1.18
scd0              0.00     0.00    0.00    0.00     0.02     0.00     8.00     0.00    1.00    1.00    0.00   1.00   0.00
dm-0              0.00     0.00    1.87    0.63    98.28    21.09    95.43     0.08   31.78   11.79   90.70   4.45   1.11
dm-1              0.00     0.00    0.06    0.00     0.47     0.00    16.69     0.00    1.67    1.67    0.00   1.64   0.01

注意: util% 表示 io 等待占比,正常情况下该值和磁盘读写(r/w)成正比,如果该值很大,读写数值很小则说明磁盘存在问题,系统性能会受影响!


iotop 命令

iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具(动态)。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息。Linux 下的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。


  • 监视磁盘 I/O 的使用状况
[root@localhost ~]# iotop
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                    
 3694 be/4 root          0.00 B      0.00 B  0.00 %  0.02 % [kworker/0:0]
    1 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % systemd --swit~-deserialize 21
    2 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kthreadd]
    3 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [ksoftirqd/0]
  516 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % crond -n
  517 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % login -- root
……

说明:
- 左右箭头:改变排序方式,默认是按 IO 排序;
- r:改变排序顺序;
- o:只显示有 IO 输出进程;
- p:进程 / 线程的显示方式的切换;
- a:显示累积使用量;
- q:退出;

注意: 主要关注‘IO>’这一列!