作为一名 Linux 系统工程师,我确信你们都使用过 top 命令。它一直是几十年来首选的工具——简单、可靠,并且在你需要时总是存在。但你有没有注意到一件事?偶尔,你可能会发现一个进程的 CPU 使用率飙升到 150%、200%甚至 400%!这里发生了什么?这是怎么可能的?

乍一看,这些数字可能看起来像是个错误——毕竟,什么东西会使用超过 100%的 CPU 呢?系统是出问题了吗?还是被黑了?但实际上,这完全正常。原因在于 Linux 报告 CPU 使用率的方式以及多核处理器的工作原理。

在本文中,我们将探讨为什么会发生这种情况,并使用实用工具和实际案例来证明这一点。


2026.02 山东·青岛

使用 top 检查 CPU 利用率

CPU 是任何操作系统的核心,执行指令以允许程序运行。在 Linux 中,top 命令是一个方便的工具,提供实时性能洞察。它显示关键系统指标,例如:

  • 进程使用情况
  • 内存消耗
  • CPU 负载

当系统出现高 CPU 利用率时,top 有助于识别哪些进程占用了最多的资源,从而更容易诊断性能问题。

要检查 CPU 利用率,请打开终端并运行:

1
top

该命令将生成实时性能概览。输出中最关键的部分之一是每个进程的 CPU 使用率。

这是我在 Linux 中运行的 top 命令的输出结果,你可能注意到某些进程显示的 CPU 利用率超过 100%。

示例:

1
2
PID   USER   PR  NI  VIRT   RES   SHR   S  %CPU  %MEM  TIME+      COMMAND
5424 root rt 0 1590640 176520 106044 S 150 0.5 395:13.89 YYYY

这里,进程 YYYY 正在消耗 150% 的 CPU 使用率 ——但这怎么可能呢?

为什么 CPU 使用率会超过 100%

理解多核处理

将你的 CPU 想象成一群工人。在过去,电脑只有一个工人(单核处理器)。如果一个任务需要那个工人 100% 的时间,系统就会报告 100% 的 CPU 使用率。现在,现代 CPU 有多个工作单元(多核处理器)。如果你有四个核心,你的系统就有四个工作单元。一个任务可以分配到多个核心上。这意味着一个进程可能会使用两个核心的 100%,导致在 top 中报告 200%的 CPU 使用率。我们稍后会用工具来证明这一点。所以,这些高数字不是错误;它们证明了现代多核处理器的强大!

导致 CPU 使用率超过 100%的关键因素:

  • 多核处理器 :具有多个核心的 CPU 可以同时处理多个任务。
  • 负载分配 :Linux 调度器能够高效地将负载分配到各个核心。
  • 多线程 :如果一个进程是多线程的,它可以在同一时间利用一个以上的核心。

Linux 如何报告 CPU 使用率

Linux 基于单个核心报告 CPU 使用率。这意味着如果一个进程使用了 1.5 个 CPU 核心,它将在 top 中显示为 150% 的 CPU 使用率。

示例分解:

  • CPU-1 → 进程 YYYY 正在使用该核心的 **100%**。
  • CPU-2 → 另一个 YYYY 线程正在使用这颗核心的 **50%**。

报告的总 CPU 使用率:**100% + 50% = 150%**。

这种行为也在 top 命令手册中正式记录:

在一个真正的 SMP(对称多处理)环境中,如果一个进程是多线程的,并且 top 不以线程模式运行,可能会报告超过 100% 的数值。

模拟高 CPU 使用率:一个实际操作示例

让我们手动创建负载,看看 Linux 如何报告它。

步骤 1:安装 stress 工具

1
sudo apt install -y stress

步骤 2:生成 CPU 负载

运行命令以在 60 秒内充分利用 4 个 CPU 核心:

1
stress --cpu 4 --timeout 60

步骤 3:使用 topmpstat 进行监控

  • 在一个终端中运行 top 并按 1 查看每个核心的使用情况。
  • 在另一个终端中运行 mpstat -P ALL 1 来跟踪核心利用率。
1
2
PID   USER   %CPU  COMMAND
7890 user 400% stress

这证实了 stress 正在充分利用 4 个核心。

查看每个线程的 CPU 使用情况

要获取更详细的关于 CPU 使用率如何在线程之间分布的信息,请使用:

1
top -H

该命令显示进程中的每个线程,让你看到进程如何利用多个核心。


1
kill -9 <PID>

检查你的 CPU 核心数

想知道你的系统有多少个核心?运行:

1
nproc --all

如果输出 4,则您的系统有四个核心。如果一个进程完全利用所有四个核心,top 可能会显示 400% 的 CPU 使用率。

现代 CPU 经常使用超线程技术,单个物理核心表现得像两个逻辑核心。

例如,一个具有超线程技术的 4 核 CPU 会显示为 8 个逻辑核心。这提高了并行处理能力,但也意味着 Linux 可能会将 CPU 使用率报告为这些逻辑核心的百分比。

查看每个核心的 CPU 使用情况

想单独查看每个核心的 CPU 使用情况吗?在 top 运行时按下 1

你会看到类似这样的输出:

1
2
3
4
%Cpu0  :  75.0 us,  0.0 sy,  0.0 ni,  25.0 id
%Cpu1 : 100.0 us, 0.0 sy, 0.0 ni, 0.0 id
%Cpu2 : 50.0 us, 0.0 sy, 0.0 ni, 50.0 id
%Cpu3 : 25.0 us, 0.0 sy, 0.0 ni, 75.0 id

每个核心都在处理自己的任务份额。

自定义 top 以获得更好的可见性

更改显示模式

按下 I(大写的 i)在累计和每个核心的 CPU 使用率之间切换。

调整更新间隔

想要更频繁的更新?在 top 运行时按下 d 并输入一个较小的数字(例如,1 秒)。

按 CPU 使用率排序进程

按下 Shift + P 按 CPU 消耗排序。

结束高占用进程

如果一个进程占用资源过多,你可以从 top 终止它。按下 k,输入 PID,并确认。

要点

  • 看到 CPU 使用率超过 100% 是正常的。 这意味着该进程正在使用多个 CPU 核心。
  • 使用 top 来监控 CPU 使用率。1 查看每个核心的使用情况。
  • 运行 nproc --all 来检查你的核心数量。
  • 使用 stress 来模拟高 CPU 工作负载。
  • 使用 top 快捷键优化监控。

理解 CPU 使用率对于系统性能监控至关重要。现在,下次当你看到 CPU 使用率超过 100% 时,你将确切知道发生了什么!


原文链接:If Your CPU Usage is Over 100%, Read This Before Freaking Out!