等较旧的工具集合,该命令结合了这些旧工具的功能。要深入了解 dstat 命令可以提供的其它信息,请参阅这篇关于 dstat 命令的文章。
iostat
iostat 命令通过观察设备活动的时间与其平均传输速率之间的关系,帮助监视系统输入/输出设备的加载情况。它有时用于评估磁盘之间的活动平衡。
$ iostat
Linux4.18.0-041800-generic(butterfly)12/26/2018 _x86_64_ (2 CPU)
avg-cpu:%user %nice%system %iowait %steal %idle
0.070.010.030.050.0099.85
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.000.000.0010480
loop1 0.000.000.003650
loop2 0.000.000.0010560
loop3 0.000.010.00161690
loop4 0.000.000.004130
loop5 0.000.000.0011840
loop6 0.000.000.0010620
loop7 0.000.000.0052610
sda 1.060.8972.662837453232735080
sdb 0.000.020.004866940
loop8 0.000.000.0010530
loop9 0.010.010.00189490
loop10 0.000.000.00560
loop11 0.000.000.0070900
loop12 0.000.000.0011600
loop13 0.000.000.001080
loop14 0.000.000.0035720
loop15 0.010.010.00200260
loop16 0.000.000.00240
当然,当你只想关注磁盘时,Linux 回环设备上提供的所有统计信息都会使结果显得杂乱无章。不过,该命令也确实提供了 -p 选项,该选项使你可以仅查看磁盘——如以下命令所示。
$ iostat-p sda
Linux4.18.0-041800-generic(butterfly)12/26/2018 _x86_64_ (2 CPU)
avg-cpu:%user %nice%system %iowait %steal %idle
0.070.010.030.050.0099.85
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.060.8972.542843737232815784
sda1 1.040.8872.542821733232815784
请注意 tps 是指每秒的传输量。
你还可以让 iostat 提供重复的报告。在下面的示例中,我们使用 -d 选项每五秒钟进行一次测量。
$ iostat-p sda -d 5
Linux4.18.0-041800-generic(butterfly)12/26/2018 _x86_64_ (2 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.060.8972.512843749232834048
sda1 1.040.8872.512821745232834048
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.800.0011.20056
sda1 0.800.0011.20056
如果你希望省略第一个(自启动以来的统计信息)报告,请在命令中添加 -y。
$ iostat-p sda -d 5-y
Linux4.18.0-041800-generic(butterfly)12/26/2018 _x86_64_ (2 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.800.0011.20056
sda1 0.800.0011.20056
接下来,我们看第二个磁盘驱动器。
$ iostat-p sdb
Linux4.18.0-041800-generic(butterfly)12/26/2018 _x86_64_ (2 CPU)
avg-cpu:%user %nice%system %iowait %steal %idle
0.070.010.030.050.0099.85
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.000.020.004866940
sdb2 0.000.000.00486140
sdb1 0.000.010.00353440
iotop
iotop 命令是类似 top 的实用程序,用于查看磁盘 I/O。它收集 Linux 内核提供的 I/O 使用信息,以便你了解哪些进程在磁盘 I/O 方面的要求最高。在下面的示例中,循环时间被设置为 5 秒。显示将自动更新,覆盖前面的输出。
$ sudoiotop-d 5
Total DISK READ:0.00 B/s |Total DISK WRITE:1585.31 B/s
Current DISK READ:0.00 B/s |Current DISK WRITE:12.39 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
32492 be/4 root 0.00 B/s 0.00 B/s 0.00%0.12%[kworker/u8:1-ev~_power_efficient]
208 be/3 root 0.00 B/s 1585.31 B/s 0.00%0.11%[jbd2/sda1-8]
1 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%init splash
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]
8 be/0 root 0.00 B/s 0.00 B/s 0.00%0.00%[mm_percpu_wq]
ioping
ioping 命令是一种完全不同的工具,但是它可以报告磁盘延迟——也就是磁盘响应请求需要多长时间,而这有助于诊断磁盘问题。
$ sudo ioping /dev/sda1
4KiB
4KiB
4KiB
4KiB
^C
---/dev/sda1 (block device 111.8GiB) ioping statistics ---
3 requests completed in2.84 ms,12KiB read,1.05 k iops,4.12MiB/s
generated 4 requests in3.37 s,16KiB,1 iops,4.75KiB/s
min/avg/max/mdev =831.0 us /947.9 us /1.17 ms /158.0 us
atop
atop 命令,像 top 一样提供了大量有关系统性能的信息,包括有关磁盘活动的一些统计信息。
ATOP - butterfly 2018/12/2617:24:1937d3h13m------10ed
PRC | sys 0.03s| user 0.01s|#proc 179|#zombie 0|#exit6|
CPU | sys 1%| user 0%| irq 0%| idle 199%| wait 0%|
cpu | sys 1%| user 0%| irq 0%| idle 99%| cpu000 w0%|
CPL | avg1 0.00| avg5 0.00| avg15 0.00| csw 677| intr 470|
MEM | tot 5.8G| free 223.4M| cache 4.6G| buff 253.2M| slab 394.4M|
SWP | tot 2.0G| free 2.0G|| vmcom 1.9G| vmlim 4.9G|
DSK | sda | busy 0%| read 0|write7| avio 1.14 ms |
NET | transport | tcpi 4| tcpo stall 8| udpi 1| udpo 0swout2255|
NET | network | ipi 10| ipo 7| ipfrw 0| deliv 60.67 ms |
NET | enp0s25 0%| pcki 10| pcko 8| si 1Kbps| so 3Kbp0.73 ms |
PID SYSCPU USRCPU VGROW RGROW ST EXC THR S CPUNR CPU CMD 1/1673e4|
33570.01s0.00s672K824K---1 R 00% atop
33590.01s0.00s0K0K NE 00 E -0%
33610.00s0.01s0K0K NE 00 E -0%
33630.01s0.00s0K0K NE 00 E -0%
313570.00s0.00s0K0K---1 S 10%bash
33640.00s0.00s8032K756K N--1 S 10%sleep
29310.00s0.00s0K0K---1 I 10% kworker/u8:2-e
33560.00s0.00s0K0K-E 00 E -0%
33600.00s0.00s0K0K NE 00 E -0%
33620.00s0.00s0K0K NE 00 E -0%
如果你只想查看磁盘统计信息,则可以使用以下命令轻松进行管理:
$ atop |grep DSK
DSK | sda | busy 0%| read 122901|write3318e3| avio 0.67 ms |
DSK | sdb | busy 0%| read 1168|write103| avio 0.73 ms |
DSK | sda | busy 2%| read 0|write92| avio 2.39 ms |
DSK | sda | busy 2%| read 0|write94| avio 2.47 ms |
DSK | sda | busy 2%| read 0|write99| avio 2.26 ms |
DSK | sda | busy 2%| read 0|write94| avio 2.43 ms |
DSK | sda | busy 2%| read 0|write94| avio 2.43 ms |
DSK | sda | busy 2%| read 0|write92| avio 2.43 ms |
^C
了解磁盘 I/O
Linux 提供了足够的命令,可以让你很好地了解磁盘的工作强度,并帮助你关注潜在的问题或减缓。希望这些命令中的一个可以告诉你何时需要质疑磁盘性能。偶尔使用这些命令将有助于确保当你需要检查磁盘,特别是忙碌或缓慢的磁盘时可以显而易见地发现它们。