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


13

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

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

EDIT 2 Apesar do htop exibir o número de processadores que eu conecto no 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:

Isso também é relatado dessa maneira? Nesse caso, o que acontece quando você alterna entre o "modo Irix" e o "modo Solaris" (use a tecla I para alternar entre os dois)?
Steven D

@ Steven D: Vou verificar quando será a próxima vez (provavelmente em breve).
Maciej Piechotka 13/01

1
cat /proc/cpuinfo > /dev/unix.SE
SamB

@ Steven D: Consegui reproduzir ~ 15% extra no modo Irix (adicionando 2 processos - ainda parece um pouco demais para erros de arredondamento). Não pude reproduzi-lo no modo Solaris até agora.
Maciej Piechotka 14/01

Respostas:


5

Dois processadores de núcleo duplo contêm 4 CPUs. Processadores multithread também existem. Cada encadeamento aparece como uma CPU no sistema operacional, embora não sejam verdadeiras, assim como os núcleos. Geralmente, as CPUs com vários threads têm dois threads por núcleo, portanto, você pode ter um único processador com dois threads e dual core que aparece no seu sistema operacional em 4 CPUs.

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


É um processador, dual core, com underclock do cpufreq core 2 duo (edição móvel). Não há hyperthreading (está em P4 e i3 / 5/7).
Maciej Piechotka

1
Vale a pena verificar se você vê isso no 'top' também, ou se isso é um bug no 'htop'.
ewindisch

2
check-in /proc/cpuinfo- agora muito CPUs fazer u ver lá ..
Drakosha

5

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.