その人のために中央処理ユニットどの番号がどの処理装置にマップされるかを調べる方法が明確に示されていないようです。私の現在のコンピュータには2つあります。インテルXeon E5645各コアにはハイパースレッディングが有効な6つのコアがあるため、合計24の処理ユニットがあり、これを参照用にcpusetを使用できます。私の課題は、1)どのCPUset ID番号がどのプロセッサにマッピングされるかを決定し、2)どのCPUset ID番号がペアになっているかを決定することです(たとえば、コアのピア)。
出力された番号は、lscpu
CPUセットプロセッサを参照するために使用する必要があるのと同じ識別子ですか?もしそうなら、ここの数字が交互に現れるようです。 (1)へのこの答えは、「偶数は1つのプロセッサであり、奇数は別のプロセッサです」ですが、私が正しく読んでいるかどうかはわかりません。
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2393.964
BogoMIPS: 4788.01
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23
lstopo
hwloc
(2)への答えはパッケージに記載されているようです。マニュアルページを正しく読み取ると、このP#...
ビットは「オペレーティングシステムで使用される」識別子であるため、渡す必要があるCPUセットであると考えられます。 。したがって、プロセスを CPU 0 と 12 に制限すると同じコアで 2 つのスレッドを使用でき、CPU 0 と 2 に制限すると 2 つのスレッドを 2 つの異なるコアで使用できます。これは正しいと思いますか?
$ lstopo
Machine (35GB)
NUMANode L#0 (P#0 18GB) + Socket L#0 + L3 L#0 (12MB)
L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
PU L#0 (P#0)
PU L#1 (P#12)
L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
PU L#2 (P#2)
PU L#3 (P#14)
L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2
PU L#4 (P#4)
PU L#5 (P#16)
L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3
PU L#6 (P#6)
PU L#7 (P#18)
L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4
PU L#8 (P#8)
PU L#9 (P#20)
L2 L#5 (256KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5
PU L#10 (P#10)
PU L#11 (P#22)
NUMANode L#1 (P#1 18GB) + Socket L#1 + L3 L#1 (12MB)
L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6
PU L#12 (P#1)
PU L#13 (P#13)
L2 L#7 (256KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7
PU L#14 (P#3)
PU L#15 (P#15)
L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8
PU L#16 (P#5)
PU L#17 (P#17)
L2 L#9 (256KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9
PU L#18 (P#7)
PU L#19 (P#19)
L2 L#10 (256KB) + L1d L#10 (32KB) + L1i L#10 (32KB) + Core L#10
PU L#20 (P#9)
PU L#21 (P#21)
L2 L#11 (256KB) + L1d L#11 (32KB) + L1i L#11 (32KB) + Core L#11
PU L#22 (P#11)
PU L#23 (P#23)
HostBridge L#0
PCIBridge
PCI 14e4:163a
Net L#0 "eth0"
PCI 14e4:163a
Net L#1 "eth1"
PCIBridge
PCI 102b:0532
PCI 8086:2921
Block L#2 "sda"
PCI 8086:2926
ベストアンサー1
使用
cat /proc/cpuinfo
ここでは、以下にリストされている各ハイパースレッドを取得できます。
processor : 0
physical id : 0
core id : 1
「プロセッサ」は「論理プロセッサ」を意味し、オペレーティングシステムにプロセッサとして表示される。ハイパースレッディングがオンの場合、コアごとに2つの「論理プロセッサ」が表示されます。 「物理ID」は、触れることができるプロセッサです(2つあります)。
ハイパースレッディングを使用する1プロセッサ4コアシステムのリストは次のとおりです。
# cat /proc/cpuinfo|egrep "processor|core id|physical id"
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
processor : 2
physical id : 0
core id : 2
processor : 3
physical id : 0
core id : 3
processor : 4
physical id : 0
core id : 0
processor : 5
physical id : 0
core id : 1
processor : 6
physical id : 0
core id : 2
processor : 7
physical id : 0
core id : 3