Necesito probar el rendimiento de un programa multiproceso en 1 CPU, pero tengo una máquina con doble CPU. Necesito establecer afinidad con aquellas CPU lógicas que comparten su socket; de lo contrario, se beneficiarán enormemente de una mayor cantidad de FSB. Probé Affinity 0-7 y 8-15, pero los resultados difieren considerablemente, siendo el primero más rápido. Por lo tanto, no sé qué CPU lógicas comparten su zócalo.
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
Respuesta1
Los primeros 8 procesadores son de un chip y los segundos 8 procesadores de otro chip. Puedes distinguirlo por physical id
. En cuanto a la diferencia en el rendimiento, actualmente no tengo idea.
Respuesta2
La latencia de 2 CPU es importante. Lea las hojas de datos de su placa base y sabrá que una de ellas es primordial y esencial para ejecutar la plataforma.
Por ejemplo, puede ejecutar la plataforma completando socket0 y socket0, socket1, pero no puede ejecutar la plataforma completando socket1 únicamente.
Es por eso que tienes un rendimiento diferente en cada uno. Deberían ser similares de todos modos, pero no serán idénticos.