web-dev-qa-db-ja.com

/ proc / cpuinfoの同一の「コア」

Opteron 6128は、/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)

私のこれまでの理解では、同じ物理CPU内の異なるコアには異なるcore idがあり、core idsが同一である場合、これはハイパースレッディングによるものです。したがって、この/proc/cpuinfoエントリをハイパースレッディングを備えた4コアCPUとして解釈する必要があります。

ただし、Opteron 6128は実際には8コアです。何が起きてる?

追伸8番目の「プロセッサー」の完全なエントリー:

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

以下は、比較するIntel i7 2600です。

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

私は1つのソケットしか持たないIntelマザーボードを持っているので、これは私が1つの物理IDしか持っていないことを意味します。マザーボードの各ソケットには1つの物理IDがあると考えてください。

次に、その物理IDを参照するコアIDがあります。あなたがそれを見れば、それは繰り返されます。これは、ハイパースレッディングが原因です。実際には4つのコアと4つのHTがあります。そのため、最終的には、1つの物理ID、4つのコアID、4つのHTが表示されます。

マザーボードにさらにソケットがある場合、物理IDの量はコアの量とともに増加します。あなたの場合、8つのコア(私の場合は4つのコア)を表示すると想定されているため、長いリストが表示されますが、4つ目のコアの後に繰り返されるため、他のコアを読み取っていないかのようです(BIOSの問題、カーネルの問題)またはcpuinfoがそれを正しく検出していません。

また、次を実行できる場合、その理由を見つけるのに役立ちます。

Sudo dmidecode -t processor | grep -e Core -e Threadと質問に情報を追加します。私の場合、dmidecodeはこう言います:

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

OpenBenchmark のベンチマークでも、モデルが見つかりました。/proc/cpuinfoでcatを実行すると、次の行が表示されます。

cpu cores   : 8

あなたの場合は8つのコアすべてを表示しているので、兄弟の数はすべて表示されていませんが、CPUが正しく検出されていることを意味します。これは、cpuinfoがAMDまたはその特定のファミリモデルに対してこれをどのように表示するかについての可能性があります。 lscpudmidecodeなどのコマンドがそれぞれのCPU、コア、スレッド/兄弟の量を表示できる場合、問題はcpuinfoが情報を処理する方法にあります。

1
Luis Alvarado