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 id
s 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
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.