提到 CPU 性能分析,很多人首先想到的是 top 或 htop 这类实时监控工具,但面对历史数据追溯和间歇性瓶颈定位,这些工具往往力不从心。此时,cpustat 便成为理想之选——作为 sysstat 工具包中的经典组件,它专门用于捕获 CPU 性能快照。若想借助它分析历史数据,以下步骤清晰实用。

第一步:安装 sysstat 包
由于 cpustat 隶属于 sysstat,首先需要将其安装到系统中。不同 Linux 发行版的安装命令略有差异,但操作都非常直接:
- Debian/Ubuntu 系列:
sudo apt-get update sudo apt-get install sysstat - Red Hat/CentOS 7 及更早版本:
sudo yum install sysstat - Fedora/CentOS 8+:
sudo dnf install sysstat
安装完成后,sysstat 工具包中的所有工具便全部就绪,包括今天的主角 cpustat 及其搭档 mpstat。
第二步:开始采集 CPU 性能数据
默认情况下,直接执行 cpustat 会显示当前 CPU 状态。但若要获取历史数据,需要让它按固定间隔收集足够多的样本。核心参数是 -s,后跟两个数字:采样间隔(秒)和采集次数。
例如,每秒采样一次,连续采集 60 次(即一分钟的数据):
sudo cpustat -s 1 60
该命令会在终端实时刷新数据,同时自动将结果保存到默认日志文件——通常位于 /var/log/sysstat/cpustat。这样一来,数据便留存下来,方便后续随时调取分析。
第三步:从日志中挖掘历史性能记录
最简单的办法是直接 cat 该日志文件,但更专业的做法是借助 mpstat 进行查询。mpstat 能够展示每个 CPU 核心的详细指标,并支持按精确时间戳定位。
若要查看某个特定时刻的数据,格式为 YYYYMMDDHHMM.SS。例如,查看 2022 年 1 月 1 日零点整的情况:
mpstat -P ALL -s 202201010000.00
若要查看某一时间段内的数据,使用 -t 参数指定起止时间。例如,查询同一分钟内的变化:
mpstat -P ALL -t 202201010000.00 202201010001.00
这样输出的结果是每个 CPU 核心在每一秒的利用率、用户态、系统态、软中断等细粒度指标,比单纯观察整体负载要详尽得多。
第四步:将数据可视化,趋势一目了然
仅靠数字有时难以直观把握,尤其是在需要向团队汇报或追踪长周期波动时,图表能更清晰地说明问题。操作流程也不复杂:先将日志文件转换为 CSV 格式,再用 Python 编写简单脚本,调用 Matplotlib 绘制曲线图。CPU 使用率的变化趋势、各核心之间的负载均衡情况,通过一张图表即可全面掌握。
完成上述流程后,你会发现 CPU 性能分析不再局限于“当前是高是低”。借助历史数据的积累与可视化工具的支持,那些偶发性、间歇性问题也变得更容易定位。优化措施该如何制定,数据自然会给出答案。
