Comment puis-je avoir 400% de CPU occupé sur 2 cœurs

13

Je comprends cela Σ(%CPU) ≤ logicalcores*(1+ε)(où ε est une mesure et une erreur d'arrondi). Mais, comment puis-je avoir sur un système à 2 cœurs 2 processus différents, chacun prenant 200% de CPU (mesuré par htop)?

EDIT Cores dans l'équation ci-dessus signifie des cœurs logiques, c'est-à-dire en tenant compte de tous les hyperthreads, du nombre de CPU, etc.

EDIT 2 Malgré que htop affiche le nombre de processeurs auxquels je connecte 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:
Maciej Piechotka
la source
Est-ce également signalé de cette façon? Si oui, que se passe-t-il lorsque vous basculez entre le "mode Irix" et le "mode Solaris" (utilisez la touche I pour basculer entre les deux)?
Steven D
@Steven D: Je vérifierai quand ce sera la prochaine fois (probablement bientôt).
Maciej Piechotka
1
cat /proc/cpuinfo > /dev/unix.SE
SamB
@Steven D: J'ai pu reproduire ~ 15% supplémentaires en mode Irix (en ajoutant 2 processus - cela semble encore un peu trop pour les erreurs d'arrondi). Jusqu'à présent, je n'ai pas pu le reproduire en mode Solaris.
Maciej Piechotka

Réponses:

5

Deux processeurs dual-core contiennent 4 CPU. Des processeurs multithreads existent également. Chaque thread apparaît comme un processeur pour le système d'exploitation, bien qu'il ne s'agisse pas de véritables processeurs comme le sont les cœurs. La plupart du temps, les processeurs multithreads ont deux threads par cœur, vous pouvez donc avoir un seul processeur double cœur et double cœur qui apparaît à votre système d'exploitation sur 4 processeurs.

Il convient de noter que Sun Microsystems avait une puce T2 qui avait 8 cœurs et 8 threads par cœur pour 64 CPU virtuels sur un seul processeur.

ewindisch
la source
Il s'agit d'un processeur unique, dual core, underclocké par le duo cpufreq core 2 (édition mobile). Il n'y a pas d'hyperthreading (c'est en P4 et i3 / 5/7).
Maciej Piechotka
1
Cela vaut la peine de vérifier si vous voyez cela en haut également, ou s'il s'agit d'un bogue dans 'htop'.
ewindisch
2
check-in /proc/cpuinfo- maintenant beaucoup de CPU y voyez-vous ..
Drakosha
5

Un seul processeur physique hyperthreadé apparaîtra comme deux processeurs logiques. Ainsi, votre processeur double cœur dans lequel chaque cœur est hyperthreadé apparaîtra comme quatre processeurs logiques pour des choses comme top, cpuinfo, prstat, moniteur d'activité, etc.

bahamat
la source
0

Avez-vous 2 processeurs ou 4? Si vous avez deux cœurs avec deux processeurs chacun via l' hyperthreading , cela représente un total de quatre processeurs (en ce qui concerne le système d'exploitation).

Gilles 'SO- arrête d'être méchant'
la source
J'ai 2 cœurs sans hyperthreading. Même le mode turbo est désactivé.
Maciej Piechotka