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 瓶颈问题。