web-dev-qa-db-fra.com

"cœurs" identiques dans / proc / cpuinfo

Un Opteron 6128 apparaît comme suit dans /proc/cpuinfo:

$ cat /proc/cpuinfo | grep -e ^core -e ^phys 
physical id     : 0
core id         : 0
physical id     : 0
core id         : 1
physical id     : 0
core id         : 2
physical id     : 0
core id         : 3
physical id     : 0
core id         : 0
physical id     : 0
core id         : 1
physical id     : 0
core id         : 2
physical id     : 0
core id         : 3
... (other physical id's)

Jusqu'à présent, j'ai cru comprendre que différents cœurs au sein d'un même processeur physique auraient des core id, et si core ids sont identiques, cela est dû à l'hyperthreading. Il faut donc interpréter ce /proc/cpuinfo entrée en tant que CPU à 4 cœurs avec hyperthreading.

Cependant, l'Opteron 6128 est vraiment à 8 cœurs. Que se passe t-il ici?

P.S. Entrée complète pour le 8ème "processeur":

processor       : 7
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 9
model name      : AMD Opteron(tm) Processor 6128
stepping        : 1
cpu MHz         : 800.000
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 8
apicid          : 23
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid AMD_dcm pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr npt lbrv svm_lock nrip_save pausefilter
bogomips        : 3999.89
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
1
MaxB

Voici un Intel i7 2600 à comparer avec:

cyrex@cyrex:~$ cat /proc/cpuinfo | grep -e ^core -e ^phys
physical id : 0
core id     : 0
physical id : 0
core id     : 1
physical id : 0
core id     : 2
physical id : 0
core id     : 3
physical id : 0
core id     : 0
physical id : 0
core id     : 1
physical id : 0
core id     : 2
physical id : 0
core id     : 3

Étant donné que j'ai une carte mère Intel qui n'a qu'une seule prise, cela signifie que je n'ai qu'un seul identifiant physique . Pensez-y car pour chaque socket de la carte mère, il y a un identifiant physique.

Ensuite, nous avons les identifiants principaux qui font référence à cet identifiant physique. Si vous le regardez, il se répète. C'est à cause de l'Hyper Threading. Il y a en fait 4 cœurs et 4 HT. Donc, à la fin, cela montre pour cet identifiant physique, 4 identifiants principaux et 4 HT.

Si vous avez plus de sockets dans votre carte mère, le nombre d'identifiants physiques augmentera avec le nombre de cœurs. Dans votre cas, il est supposé afficher 8 cœurs (dans mon cas, il s'agit de 4 cœurs), il affichera donc une longue liste, mais comme il se répète après le 4e cœur, il semble qu'il ne soit pas en train de lire les autres cœurs (problème BIOS , Problème de noyau) ou cpuinfo ne le détecte pas correctement.

Il serait également utile de savoir pourquoi si vous pouviez exécuter ce qui suit:

Sudo dmidecode -t processor | grep -e Core -e Thread et ajoutez les informations à votre question. Dans mon cas, dmidecode dit:

cyrex@cyrex:~$ Sudo dmidecode -t processor | grep -e Core -e Thread
    Family: Core i7
    Version: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
    Core Count: 4
    Core Enabled: 4
    Thread Count: 8

Également dans une référence dans OpenBenchmark J'ai trouvé votre modèle et il y a une ligne qui montre ce qui suit lorsque vous faites du chat sur /proc/cpuinfo:

cpu cores   : 8

Étant donné que dans votre cas, il affiche les 8 cœurs, cela signifie que le processeur est détecté correctement, bien que le nombre de frères et sœurs ne soit pas tous affiché. Cela peut être dû à la façon dont cpuinfo montre cela pour AMD ou ce modèle de famille spécifique. Si des commandes comme lscpu, dmidecode peuvent vous montrer la quantité de CPU, de cœurs et de threads/frères et sœurs pour chacun, alors le problème est de savoir comment cpuinfo gère les informations.

1
Luis Alvarado