我需要测试一个多线程程序在 1 个 CPU 上的性能,但我有一台双 CPU 机器。我需要为那些共享插槽的逻辑 CPU 设置亲和性,否则它们会从较大的 FSB 数量中受益匪浅。我尝试了亲和性 0-7 和 8-15,但结果差别很大,第一个更快。因此我不知道哪些逻辑 CPU 共享其插槽。
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 1
Core(s) per socket: 8
CPU socket(s): 2
NUMA node(s): 4
Vendor ID: AuthenticAMD
CPU family: 16
Model: 9
Stepping: 1
CPU MHz: 800.000
BogoMIPS: 4000.40
Virtualization: AMD-V
L1d cache: 64K
L1i cache: 64K
L2 cache: 512K
L3 cache: 5118K
NUMA node0 CPU(s): 0-3
NUMA node1 CPU(s): 4-7
NUMA node2 CPU(s): 12-15
NUMA node3 CPU(s): 8-11
~]$ cat /proc/cpuinfo | grep 'core id'
core id : 0
core id : 1
core id : 2
core id : 3
core id : 0
core id : 1
core id : 2
core id : 3
core id : 0
core id : 1
core id : 2
core id : 3
core id : 0
core id : 1
core id : 2
core id : 3
答案1
前 8 个处理器来自一个芯片,后 8 个处理器来自另一个芯片。您可以通过 来区分physical id
。至于性能差异 - 我目前不知道。
答案2
2 个 CPU 的延迟很重要。阅读主板的数据表,您就会知道其中一个是运行平台的主要和必不可少的。
例如,您可以通过填充socket0和socket0、socket1来运行平台,但不能仅通过填充socket1来运行平台。
这就是为什么每个版本的性能都不同。它们无论如何都应该相似,但不会完全相同。