この投稿の最後に私の/ proc/cpuinfoがあります。
物理CPU番号が2であることを知っています
grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
2
しかし、各CPUにはいくつのコアがありますか?
「cpucores」は、16個のコアがあることを示しています。
ただし、このコマンドを使用すると、コアが全部で8つしかないことがわかります。
grep 'core id' /proc/cpuinfo
core id : 16
core id : 0
core id : 17
core id : 1
core id : 25
core id : 9
core id : 26
core id : 10
ハイパースレッディングを使用するアーキテクチャの同じ物理CPU上の兄弟CPUの数を表示します。私のマシンでは16です。ただし、物理0 cpuには4つ、物理1cpuには4つあります。私は本当に混乱しました。
誰か助けてもらえますか?
以下は私の/ proc/cpuinfoです
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 1
siblings : 16
core id : 16
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4803.77
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.22
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 1
siblings : 16
core id : 17
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.13
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 0
siblings : 16
core id : 1
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.21
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 4
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 1
siblings : 16
core id : 25
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.14
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 5
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 0
siblings : 16
core id : 9
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.19
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 6
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 1
siblings : 16
core id : 26
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.13
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 12
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 2400.191
cache size : 256 KB
physical id : 0
siblings : 16
core id : 10
cpu cores : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips : 4800.20
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
Intelの specs によると、プロセッサはクアッドコアCPU(4つの異なるコア)であり、それぞれがハイパースレッディングに対応しているため、オクトコアのように見えます。
Xeonであることを考えると、デュアルソケットマザーボードを簡単に使用できます。つまり、2つの個別のチップがあり、それぞれに4つのコアがあり、それぞれが2つのスレッドを実行できるため、OSには16コアとして効果的に表示されます。機械。
これは私がCPU情報をチェックするために使用する関数です。
function CORES(){
local -i SOCKETS=$(grep -w "physical id" /proc/cpuinfo | sort -u | wc -l)
[ "${SOCKETS}" -eq 0 ] && SOCKETS="1"
local -i CORES=$(grep -w "core id" /proc/cpuinfo | sort -u | wc -l)
[ "${CORES}" -eq 0 ] && CORES="1"
local -r MODEL=$(grep -w "model name" /proc/cpuinfo | sort -u | awk -F: '{print $2}')
local -ir THREADS=$(grep -w "processor" /proc/cpuinfo | sort -u | wc -l)
local -ir TOTAL_CORES=$(echo $((${SOCKETS}*${CORES})))
local -ir THREADS_PER_CORE=$(echo $((${THREADS}/${TOTAL_CORES})))
echo -e "ModelName\t: " $MODEL
echo -e "Sockets\t\t: " $SOCKETS
echo -e "Cores/Socket\t: " $CORES
echo -e "Threads/Core\t: " $THREADS_PER_CORE
echo -e "TotalCores\t: " $TOTAL_CORES
echo -e "TotalThreads\t: " $THREADS
}
これには3つの主要なコンポーネントがあります。
'physical id'
)'core id'
)'processor'
)'model name'
は情報提供のみを目的としています...
それに関する唯一のバグは、'physical id'
が/ proc/cpuinfoに存在しない場合、このエラーをスローすることです(これはまだ修正に取り掛かっていません...):
$ CORES -bash: 2/0: division by 0 (error token is "0") ModelName : Intel(R) Xeon(R) CPU X5560 @ 2.80GHz Sockets : 0 Cores/Socket : 0 Threads/Core : 0 TotalCores : 0 TotalThreads : 2
編集:修正。
お役に立てば幸いです。
編集:これは'physical id'
が存在するものの例です:
ModelName : Intel(R) Xeon(R) CPU X3470 @ 2.93GHz
Sockets : 2
Cores/Socket : 1
Threads/Core : 1
TotalCores : 2
TotalThreads : 2
そして別の
ModelName : Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
Sockets : 2
Cores/Socket : 2
Threads/Core : 1
TotalCores : 4
TotalThreads : 4
編集2:大きなもの!
ModelName : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Sockets : 2
Cores/Socket : 6
Threads/Core : 2
TotalCores : 12
TotalThreads : 24
編集:OPの/ proc/cpuinfoの結果
$ CORES
ModelName : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
Sockets : 2
Cores/Socket : 8
Threads/Core : 0
TotalCores : 16
TotalThreads : 8
これは、ハイパースレッディングがどこか(BIOSで可能性が高い)で無効になっていることを示しています。これが、コアごとに0のスレッドがある理由です。この場合、TotalThreads = Cores/Socketです。これは、ハイパースレッディングではないソケットごとに8つのコアがあることを意味します。
/proc/cpuinfo
は実際の物理CPU構成の一部しか表示していないように思えます。
一部のフィールドは、システムに2つのCPUソケットがあり、それぞれに16の物理コアがあることを示している場合があります。
physical id
は0から1になるため、2つのCPUソケットがありますsiblings
は、CPUソケットごとに16個の論理コアがあることを示していますcpu cores
も16であり、これはphysical id
で指定されたCPUの物理コアの数として解釈されます。この点に関しては、CPUはハイパースレッディングをサポートしていないと言えますが...Intel E5620チップの仕様 によると、各チップには4つの物理コアがあり、ハイパースレッディングのおかげでそれぞれに2つの論理コアがあります。
これにより、オペレーティングシステムの観点からは、CPUリソースに部分的にしかアクセスできないという結論に至ります。仮想化環境から実行していることをお勧めします。
2つのCPUでホストされている仮想マシン上の/proc/cpuinfo
を以下に示します Intel E54 ベースのサーバー(2つのCPUソケット、4つの物理コア、ハイパースレッディングなし)。オペレーティングシステムは、CPU#0からのコア#0とCPU#1からのコア#0のみを認識します。
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
stepping : 10
cpu MHz : 2659.998
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
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 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 est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips : 5319.99
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
stepping : 10
cpu MHz : 2659.998
cache size : 6144 KB
physical id : 1
siblings : 4
core id : 0
cpu cores : 4
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic 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 est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips : 5319.78
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
「コアID」は必ずしもシーケンシャルではありません。これは、スレッド付きのデュアルソケット12コア(つまり48の「コア」)G5118からのgrepです。欠落しているコアIDに注意してください。
[qqs43472@cs05r-sc-serv-01 ~]$ cat /proc/cpuinfo | grep "core id"
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
/ proc/cpuinfoを解析できるので、より便利です。
paste <(cat /proc/cpuinfo | grep "core id") <(cat /proc/cpuinfo | grep "processor") | sed 's/[[:blank:]]/ /g'
私のマシンには次のように表示されます:core id : 0 processor : 0 core id : 1 processor : 1 core id : 2 processor : 2 core id : 3 processor : 3 core id : 0 processor : 4 core id : 1 processor : 5 core id : 2 processor : 6 core id : 3 processor : 7
つまり、それぞれ2つのスレッドを持つ4つのコア
これがハイパースレッディングであり、1つのコアで2つのスレッドを多かれ少なかれ並行して実行できます。多かれ少なかれ、各スレッドが使用している命令によって異なります。