cpustat
是一个强大的命令行工具,用于监控和分析 CPU 的性能。通过 cpustat
,你可以获取 CPU 的使用率、上下文切换次数、中断次数等关键指标,从而帮助你诊断 CPU 瓶颈。以下是如何使用 cpustat
来诊断 CPU 瓶颈的步骤:
cpustat
在大多数 Linux 发行版中,cpustat
是 sysstat
包的一部分。你可以使用包管理器来安装它。
# 在 Debian/Ubuntu 上
sudo apt-get update
sudo apt-get install sysstat
# 在 CentOS/RHEL 上
sudo yum install sysstat
# 在 Fedora 上
sudo dnf install sysstat
运行 cpustat
默认会显示当前 CPU 的统计信息。
cpustat
你可以指定时间间隔和输出次数来收集数据。
cpustat -c 5 10
这会每 5 秒收集一次数据,共收集 10 次。
以下是一些关键指标,可以帮助你诊断 CPU 瓶颈:
查看 CPU 使用率:
%user
和 %system
的总和接近或超过 100%,说明 CPU 正在被充分利用。%idle
很低(例如低于 10%),说明 CPU 可能处于饱和状态。检查 I/O 等待:
%iowait
很高,说明 CPU 在等待 I/O 操作完成,可能存在 I/O 瓶颈。检查中断和软中断:
%irq
或 %softirq
很高,说明 CPU 在处理大量中断,可能是硬件设备或驱动程序的问题。虚拟化环境:
%steal
时间,如果很高,说明虚拟机可能在等待物理 CPU 资源。假设你运行了以下命令并得到了以下输出:
cpustat -c 5 10
输出示例:
Linux 5.4.0-42-generic (hostname) 05/01/2023 _x86_64_ (8 CPU)
avg-cpu: %user %system %idle %iowait %steal %irq %softirq %guest %gnice
avg-cpu: 75.34 12.45 9.87 1.23 0.00 0.67 0.56 0.00 0.00
avg-cpu: 74.56 12.78 9.45 1.34 0.00 0.70 0.58 0.00 0.00
...
分析:
%user
和 %system
的总和为 87.81%,说明 CPU 正在被充分利用。%idle
为 9.87%,虽然不是非常低,但结合 %user
和 %system
的高值,说明 CPU 可能处于饱和状态。%iowait
为 1.23%,较低,说明 I/O 瓶颈可能不是主要问题。%irq
和 %softirq
都较低,说明中断处理不是主要瓶颈。如果初步分析表明 CPU 瓶颈存在,你可以进一步使用其他工具和方法来深入诊断:
通过综合使用这些工具和方法,你可以更全面地诊断和解决 CPU 瓶颈问题。