磁盘 IO 问题(输入/输出)是 Linux 系统性能不佳的最常见原因之一。
当应用程序试图在硬盘驱动器、SAN 和 NAS 等存储设备上快速读取或写入过多数据时,就会发生这种情况,这会迫使应用程序和用户等待。
top 命令可用于查看 CPU 是否正在等待磁盘操作完成。该'wa'
指标显示 IO-wait,这是 CPU 等待 IO 完成所花费的时间,以百分比形式显示。
在本指南中,我们将解释如何使用各种 Linux 命令来识别磁盘 IO 性能问题。
在 Linux 上进行故障排除或监控实时磁盘活动时,以下六个命令最有用。
-
iotop
-
iostat
-
vmstat
-
atop
-
dstat
-
ioping
1、 iotop 命令
iotop是一个类似于 top 的实用程序,用于显示实时磁盘 I/O 性能,它实际上显示执行 I/O 的进程列表。运行带有'--only or -o'
选项的 iotop 命令以查看磁盘 I/O 活动,如下所示:
2、 iostat 命令
iostat 命令用于监控设备和分区的系统输入/输出统计信息。它通过观察设备活动时间与其平均传输速率的关系来监控系统 I/O。
参数:
x : 显示更详细的统计信息。
d :仅显示设备报告。
m :以 MB 为单位显示统计信息。
# iostat -dxm
3、 vmstat 命令
vmstat 命令代表虚拟内存统计信息。它是一个性能监控命令,除了提供内存之外,它还提供有关块 IO 和 CPU 活动的信息。
参数:
-
d : 只显示磁盘统计信息
-
Time Interval (1) : 统计将每秒钟重新测量和报告
-
Count Value (5) : 统计会在退出前上报五次。
# vmstat -d 1 5
4、 atop 命令
atop 命令是另一个性能监控工具,能够报告 Linux 系统上所有进程的活动(即使进程在间隔期间完成)。
# atop |grep DSK
5、 dstat 命令
dstat 命令是另一个方便的工具,用于在性能调整测试、基准测试或故障排除期间监控系统。它克服了其他工具的一些限制,并添加了一些额外的功能、更多的计数器和灵活性。
# dstat --disk --io
还可以指定盘符:
# dstat --disk --io -D vda
6、ioping 命令
ioping用于实时监控 I/O 速度和延迟,而 ping 命令显示网络延迟。这个简单的实用程序让您了解磁盘响应请求需要多长时间。
# ioping /dev/oldmem -c4