cpustat 是 Linux 系统中一款功能强大的 CPU 统计信息查看工具,隶属于 sysstat 工具包。虽然名称简洁,但其输出内容却相当丰富。在不添加任何参数的情况下直接运行,它通常会展示以下几类关键信息。

CPU 使用率:每个 CPU 的 user(用户态)、system(系统态)、idle(空闲态)等时间占比,这是最基础也是最直观的 CPU 性能指标。
上下文切换次数:每秒系统发生的上下文切换总数。如果该数值异常偏高,往往意味着系统正在频繁切换进程,带来较高的调度开销。
中断次数:每秒发生的总中断次数,包括软中断(softirq)和硬件中断(irq)。通过该指标可以判断中断处理是否已成为系统瓶颈。
CPU 迁移:显示进程在不同 CPU 核心之间的迁移情况。迁移过于频繁,可能会降低 CPU 缓存命中率,进而影响整体性能。
CPU 使用率百分比:支持按自定义时间间隔(如每秒、每分钟)输出,便于观察 CPU 负载的变化趋势。
微秒级时间戳:每条统计信息均附带精确的时间戳,帮助精确定位问题发生的具体时刻。
实际运行时的输出示例大致如下:
CPU%usr %sys %iowait%steal %idle012.34 5.67 1.23 0.0080.76110.23 6.78 1.56 0.0081.43211.45 4.56 1.78 0.0082.21313.67 7.89 1.90 0.0076.54
仔细分析这些列的含义,其实非常有价值:
%usr:用户态时间占比,即运行应用程序所消耗的 CPU 时间。%sys:系统态时间占比,指内核处理系统调用、中断等任务所占用的时间。%iowait:等待 I/O 操作完成的时间占比。若该值持续偏高,通常意味着磁盘或网络子系统存在性能问题。%steal:虚拟机监控程序(Hypervisor)从该 CPU 中“偷走”的时间占比。在虚拟化环境中,此指标尤为重要,它反映了宿主机是否挤占了当前虚拟机的计算资源。%idle:空闲时间占比。如果该值趋近于零,说明 CPU 已处于满负荷运行状态。
此外,cpustat 还提供了丰富的可定制选项,例如指定采样间隔、只监控特定 CPU 核心等,使用起来非常灵活,能够满足不同场景下的系统性能监控需求。
