Como posso ter 400% da CPU ocupada em 2 núcleos

13

Eu entendo que Σ(%CPU) ≤ logicalcores*(1+ε) (onde ε é erro de medida e arredondamento). Mas, como posso ter em um sistema de 2 núcleos 2 processos diferentes, cada um com 200% de CPU (conforme medido pelo htop)?

EDIT Núcleos na equação acima significam núcleos lógicos, isto é, considerando todo o hyperthreading, o número de CPUs, etc.

EDIT 2 Apesar do htop exibir o número de processadores que eu atribuo ao cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida dts tpr_shadow vnmi flexpriority
bogomips    : 5585.20
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
stepping    : 10
cpu MHz     : 800.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida dts tpr_shadow vnmi flexpriority
bogomips    : 5586.38
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
    
por Maciej Piechotka 12.01.2011 / 21:26

3 respostas

5

Dois processadores dual-core contêm 4 CPUs. Processadores multi-threaded também existem. Cada thread aparece como uma CPU para o sistema operacional, embora eles não sejam CPUs verdadeiros, assim como os núcleos. A maioria das CPUs multi-threaded tem dois threads por núcleo, então você pode ter um processador single-dual-core de dois núcleos que aparece no seu sistema operacional em 4 CPUs.

Deve-se notar que a Sun Microsystems tinha um chip T2 que tinha 8 núcleos e 8 threads por núcleo para 64 CPUs virtuais em um único processador.

    
por 12.01.2011 / 21:58
5

Um único processador hyperthreaded físico aparecerá como dois processadores lógicos. Assim, seu processador dual core, no qual cada núcleo é hyperthreaded, aparecerá como quatro processadores lógicos para coisas como top, cpuinfo, prstat, monitor de atividades, etc.

    
por 13.01.2011 / 22:13
0

Você tem 2 processadores ou 4? Se você tem dois núcleos com duas CPUs cada através do hyperthreading , isso é um total de quatro processadores (no que diz respeito ao SO ).

    
por 12.01.2011 / 21:40