在 Linux 系统中,使用 top 命令查看进程时,CPU 百分比(%CPU) 表示的是某个进程当前占用 CPU资源的相对比例

🔍 具体含义:

  • %CPU 表示 单个进程在一段时间内(通常是采样间隔)占用 CPU 时间的百分比
  • 它是相对于一个 CPU 核心的利用率。例如:
    • 在单核系统中,如果一个进程占满了整个 CPU,其 %CPU 就会接近 100%
    • 在多核系统中(比如 4 核),一个进程最多也只能显示 100%(代表占满一个核心),而不会达到 400%。但你可以通过 htop 等工具看到总的 CPU 利用率。


🧠 如何计算?

%CPU = (该进程使用的 CPU 时间变化量 / 采样时间间隔) × 100%

  • top 默认每 3 秒刷新一次。
  • 如果一个进程在这 3 秒内用了 1.5 秒的 CPU 时间,则 %CPU ≈ 50%


⚠️ 注意事项:

情况

解释

%CPU > 100%

不可能(除非是多线程程序,多个线程同时运行在不同核心上)。top 显示的是每个进程整体的 CPU 占用,不是按核心拆分的。

多线程程序

所有线程的 CPU 使用会合并到主线程(或进程)显示。

Java 程序

Java 进程是一个 JVM 实例,包含多个线程,所有线程的 CPU 总和体现在该 Java 进程的 %CPU 上。


示例说明

PID   USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
12345 user      20   0  800000 100000   5000 R  75.0   2.5   1:23.45 java -jar app.jar


  • 表示这个 Java 进程(PID=12345)正在使用大约 75% 的一个 CPU 核心
  • 如果你有一个 4 核 CPU,那么理论上可以有 4 个线程同时跑满,总 CPU 利用率达到 400%,但单个进程最多仍为 100%。


📌 查看更直观的 CPU 总体使用情况

建议使用 tophtop

  • top:按 1 可以查看每个 CPU 核心的使用情况。
  • htop:可视化更强,支持颜色、进度条、树状结构等,推荐安装使用。


总结

概念

含义

%CPU

当前进程占用 CPU 时间的比例(基于采样)

最大值

单进程最大为 100%(即使多核)

多线程

所有线程 CPU 使用合并显示

Java 进程

整个 JVM 的 CPU 使用情况

如需分析具体哪个线程 CPU 占用高,可结合 top -H -p <pid>jstack 分析 Java 线程。