提到CPU性能监控,大多数运维人员首先想到的是top或htop。然而,当你需要更精细的、附带时间戳的CPU使用率分析时,cpustat实际上是一个被低估的实用工具。它归属于sysstat软件包,与sar、iostat同属一个家族,主要用于按固定时间间隔输出CPU各项维度的统计信息,特别适合用于定位系统性能瓶颈。

首先需要安装该工具。如果你的操作系统是Debian系列(例如Ubuntu),可以直接执行以下命令:
sudo apt-get update
sudo apt-get install sysstat
如果是Red Hat系列(如CentOS或Fedora),可以使用yum或dnf命令安装:
sudo yum install sysstat
# 或者
sudo dnf install sysstat
安装完成后,使用非常简单。只需在终端中输入cpustat,默认即可显示所有CPU核心的实时统计信息。然而,默认输出间隔为1秒,在某些场景下可能过于频繁,此时可以使用-i参数自定义间隔时间,例如每2秒更新一次:
cpustat -i 2
如何解读输出结果?cpustat的列非常直观,主要关键指标如下:
%usr:用户空间进程所消耗的CPU时间百分比,运行应用程序时该值通常会较高。%sys:内核空间进程消耗的CPU时间百分比,当系统调用频繁时该值会上升。%iowait:CPU等待I/O操作完成的时间占比,该值显著升高通常表明磁盘或网络已成为性能瓶颈。%steal:在虚拟化环境下,被其他虚拟机“偷取”的CPU时间,该值较高说明宿主机存在严重的超卖现象。%idle:CPU空闲时间占比,该值较低表示CPU资源紧张。
综合这些指标进行分析,可以快速判断问题是出在用户态负载过高、内核态负载过高,还是I/O操作拖慢了整体性能。
如果需要更细致的分析,cpustat还提供了多种高级选项。例如,使用-c参数可以显示每个CPU核心的独立统计信息,而非所有核心的平均值——这对于排查单核热点问题非常有效。另外,-m参数还能同时输出内存和交换空间的使用情况,无需再另外打开终端运行free命令。
当然,要获取所有选项的完整说明,最可靠的方法是查阅手册页:
man cpustat
总而言之,cpustat是一款轻量级但信息密度极高的监控工具,非常适合在脚本中定期采集数据,或与sar配合进行长期性能分析。下次遇到CPU使用率异常却无法确定具体原因时,不妨尝试使用它。
