我试图理解%CPU
跑步时意味着什么top
。
我%CPU
的申请大部分时间都在“400”或“500”。
有谁知道这意味着什么?
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
答案1
%中央处理器 -- CPU 使用率:进程正在使用的 CPU 百分比。默认情况下,
top
将此显示为单个 CPU 的百分比。在多核系统上,百分比可以大于 100%。例如,如果 3 个核心的使用率为 60%,top
则将显示 CPU 使用率为 180%。看这里了解更多信息。 您可以通过在运行Shifti时点击来切换此行为top
,以显示正在使用的可用 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 个虚拟核心。
答案2
这意味着你有很多核心。最多 1 个核心为 100%。所以最高可以是number_of_cores × 100%
.
您可能想看看为什么您的应用程序是 400%。