磁盘I/O问题是Linux系统性能不佳的常见原因之一,当应用程序在存储设备上进行大量读写操作时,会导致系统等待磁盘操作完成,从而影响性能。top命令可用于查看CPU是否在等待磁盘操作完成,其中“wa”指标表示CPU等待I/O完成的时间百分比。同时,可以结合ps命令查找高CPU消耗的进程。本文将介绍如何使用多种Linux命令来诊断磁盘I/O性能问题。常用的命令包括:iotop、iostat、vmstat、atop、dstat和ioping。这些命令可用于实时监控磁盘活动,且易于掌握。
iotop可以显示实时磁盘I/O性能,类似top功能,实际显示执行I/O进程列表。运行带有'--only或-o'选项的iotop命令以查看磁盘I/O活动:
# iotop --only
以上只会显示实际在执行I/O进程或线程。
iostat命令监视设备和分区的系统输入/输出统计信息。观察设备处于活动状态的时间(相对于其平均传输速率)来监视系统I/O。有与磁盘I/O相关的各种信息,查看方法:
# iotop -dxm
vmstat命令代表虚拟内存统计信息是性能监视命令,除了提供内存外,它还提供有关块IO和CPU活动的信息。报告的第一行将包含自上次重新引导以来的平均I/O值,随后的行将显示实时统计信息:
# vmstat -d 1 5
atop命令是性能监视工具可报告Linux系统全部进程活动,每10秒会报告一次:
# atop | grep DSK
dstat命令是另一个方便的工具,用于在性能调整测试、基准测试或故障排除期间监视系统。客服了其他些工具存在局限性,且增加额外功能更多计数器和灵活性。默认显示报告间隔为1秒:
# dstat --disk --io
特定磁盘运行:
# dstat --disk --io -D sda
ioping用于实时监视I/O速度和延迟,ping命令显示网络延迟。让用户能够了解磁盘响应请求需要多长时间:
# ioping /dev/nvme0n1 -c4