运行 top 命令时了解 %CPU

dav*_*vid 96 cpu top

我试图了解%CPU运行时的含义top

我看到%CPU我的应用程序400500大部分时间。

有谁知道这是什么意思?

什么数字是高数?

19080 大卫 20 0 27.9g 24g 12m S 400 19.7 382:31.81 paper_client

lscpu 给我以下输出:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Stepping:              7
CPU MHz:               2599.928
BogoMIPS:              5199.94
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
Run Code Online (Sandbox Code Playgroud)

pol*_*lym 151

%CPU -- CPU 使用率:进程使用的 CPU 百分比。默认情况下,将其top显示为单个 CPU 的百分比。在多核系统上,您可以拥有大于 100% 的百分比。例如,如果 3 个内核的使用率为 60%, top将显示 CPU 使用率为 180%。请参阅此处了解更多信息。 您可以通过Shiftitop运行时点击以显示正在使用的可用 CPU 的总体百分比来切换此行为。

以上报价来源

你可以htop改用。


要回答有关您拥有多少内核和虚拟内核的问题:

根据您的lscpu输出:

  • CPU(s)总共有 32 个内核 ( )。
  • 您有 2 个物理插槽 ( Socket(s)),每个插槽包含 1 个物理处理器。
  • 您的每个处理器Core(s) per socket内部都有 8 个物理内核 ( ),这意味着您有 8 * 2 = 16 个实际内核。
  • 每个真实核心可以有 2 个线程 ( Thread(s) per core),这意味着您总共拥有真实核心 * 线程 = 16 * 2 = 32 个核心。

所以你有 16 个真实内核中的 32 个虚拟内核。

另请参阅链接。


ctr*_*lor 5

这意味着你有很多核心。最大一个核心是 100%。所以它可以是最高的number_of_cores × 100%

你可能想看看为什么你的应用程序是 400%。