idênticos “núcleos” em / proc / cpuinfo

1

Um Opteron 6128 aparece da seguinte forma em /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)

Até agora, meu entendimento é que diferentes núcleos dentro da mesma CPU física teriam core id diferentes, e se core id s forem idênticos, isso se deve ao hyperthreading. Portanto, deve-se interpretar essa entrada /proc/cpuinfo como uma CPU de 4 núcleos com hyperthreading.

No entanto, o Opteron 6128 é realmente de 8 núcleos. O que está acontecendo aqui?

P.S. Entrada completa para o oitavo "processador":

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
    
por MaxB 12.01.2013 / 06:00

1 resposta

1

Aqui está um Intel i7 2600 para comparar com:

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

Como tenho uma placa-mãe da Intel que possui apenas um soquete, isso significa que eu tenho apenas uma identificação física . Pense nisso como para cada soquete na placa-mãe há um id físico.

Em seguida, temos os IDs principais que fazem referência a esse ID físico. Se você olhar, repete-se. Isso é por causa do Hyper Threading. Na verdade, existem 4 núcleos e 4 HT. Então, no final, ele mostra para aquele ID físico, 4 IDs principais e 4 HT.

Se você tiver mais soquetes em sua placa-mãe, a quantidade de IDs físicos aumentará juntamente com a quantidade de núcleos. No seu caso, é suposto para mostrar 8 núcleos (no meu caso, é de 4 núcleos) por isso vai mostrar uma longa lista, mas uma vez que está se repetindo após o 4º núcleo, parece que não está lendo os outros núcleos , Problema do kernel) ou o cpuinfo não está detectando corretamente.

Também ajudaria a descobrir por que se você pudesse executar o seguinte:

sudo dmidecode -t processor | grep -e Core -e Thread e adicione as informações à sua pergunta. No meu caso dmidecode diz:

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

Também em uma referência em OpenBenchmark , encontrei seu modelo e há uma linha que mostra o seguinte ao fazer cat on /proc/cpuinfo :

cpu cores   : 8

Como no seu caso ele está mostrando todos os 8 núcleos, significa que a CPU é detectada corretamente, embora a quantidade de irmãos não seja mostrada. Isso pode ser feito com a forma como o cpuinfo mostra isso para a AMD ou para esse modelo familiar específico. Se comandos como lscpu , dmidecode puderem mostrar a quantidade de CPUs, núcleos e encadeamentos / irmãos para cada um deles, então o problema está em como o cpuinfo lida com as informações.

    
por Luis Alvarado 12.01.2013 / 06:10