Compreendendo o% CPU ao executar o comando top [duplicado]

50

Estou tentando entender o que significa %CPU quando executo top .

Estou vendo %CPU do meu aplicativo como 400 ou 500 na maioria das vezes.

Alguém sabe o que isso significa?

Qual é o número alto?

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

lscpu me dá a saída abaixo:

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
    
por david 18.07.2014 / 10:34

2 respostas

74

%CPU -- CPU Usage : The percentage of your CPU that is being used by the process. By default, top displays this as a percentage of a single CPU. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, top will show a CPU use of 180%. See here for more information. You can toggle this behavior by hitting Shifti while top is running to show the overall percentage of available CPUs in use.

Fonte da citação acima .

Você pode usar htop .

Para responder à sua pergunta sobre quantos núcleos e núcleos virtuais você tem:

De acordo com sua lscpu output:

  • Você tem 32 núcleos ( CPU(s) ) no total.
  • Você tem dois soquetes físicos ( Socket(s) ), cada um contém um processador físico.
  • Cada processador tem 8 núcleos físicos ( Core(s) per socket ) dentro, o que significa que você tem 8 * 2 = 16 núcleos reais.
  • Cada núcleo real pode ter 2 threads ( Thread(s) per core ), o que significa que você tem núcleos reais * threads = 16 * 2 = 32 núcleos no total.

Então você tem 16 núcleos virtuais e 16 núcleos reais.

Veja também isto , isto e este link .

    
por 18.07.2014 / 10:39
4

Isso significa que você tem muitos núcleos. Um núcleo no máximo é 100%. Então, o máximo que pode ser é number_of_cores × 100% .

Você pode querer ver o motivo do seu aplicativo como 400%.

    
por 18.07.2014 / 10:39

Tags