¿Es posible influir en la forma en que se enumeran las CPU en Linux?

32

Tengo una HP DL380 G7 con 2 CPU no coincidentes. Una es una CPU de cuatro núcleos con núcleos más rápidos, y otra es una CPU de 6 núcleos con núcleos más lentos.

En este cuadro ejecuto una aplicación que, por razones de licencia, solo usará CPU0-CPU3.

Para mí, sería deseable que los núcleos más rápidos en la CPU de cuatro núcleos enumeren a CPU0-CPU3 en el sistema operativo, lo que me da una bonificación de rendimiento para a) usar núcleos con reloj más rápido yb) mantener todos los hilos en la misma CPU física .

¿Hay alguna manera de hacer que esto suceda, ya sea dentro del BIOS, o en un archivo de configuración u opción de arranque en Linux?

Los modelos de CPU específicos son:

Intel (R) Xeon (R) CPU E5649 @ 2.53GHz (núcleo hexagonal)

Intel (R) Xeon (R) CPU E5640 @ 2.67GHz (cuatro núcleos)

paulos
fuente
Publique los modelos de CPU específicos de cat /proc/cpuinfo.
ewwhite
24
Votación porque ni siquiera sabía que las CPU desiguales eran posibles, siempre algo nuevo que aprender ...
Kyle Brandt
2
@kyle es posible, pero no es compatible ni respaldado por HP.
ewwhite
1
@kasperd En HP-land, si carga dos CPU de diferentes pasos, recibirá un CPU mismatch detectederror en POST. Eso podría suceder dentro de una generación de CPU; Por ejemplo, un Intel 5606 y 5690 en el mismo chasis.
ewwhite
3
Si alguien está interesado en lo que realmente hicimos aquí, tuvimos un viaje por carretera al centro de datos y físicamente eliminamos la CPU de cuatro núcleos de los servidores
paulos

Respuestas:

27

Wut?!?

Esto es una locura , ¿sabes? No es compatible y probablemente no sea bueno para su hardware. Debería utilizar procesadores con las mismas especificaciones en su servidor.

Supongo que la pareja simplemente ejecuta su aplicación en un cgroup o escudo (o vía taskset) que solo contiene los núcleos de CPU que desea usar. También puede anclar el acceso de memoria a esa CPU con numactl. Pero en realidad, ¿por qué no eliminarías la CPU más lenta por completo o pagarías lo que se necesita para que el sistema cumpla con las especificaciones?

Quizás lo obvio, si su aplicación está codificada para usar CPU0-CPU3, es intercambiar físicamente los zócalos ... pero realmente, solo ejecute con una CPU aquí.

Si se refiere al hardware ProLiant DL380 G7, su CPU "más rápida" es probablemente un proceso de la serie Nehalem 5500, con la CPU de núcleo hexagonal más lenta como una Westmere. ¿Has hecho alguna referencia? ¿Qué CPU específicas están instaladas?

Editar:

Bien, entonces estas son al menos CPU de la misma generación / paso a paso. Pero sigue siendo una mala idea ... La diferencia en las especificaciones de la CPU ni siquiera es tan buena (en comparación con algo como un Intel X5690 a 3.47GHz).

ewwhite
fuente
44
¡Todos tienen la misma reacción! Sé que idealmente las CPU serían las mismas, pero esto es lo que HP nos dio en el día. Sin embargo, esta es la mano que he recibido, así que tengo que aprovecharla hasta que llegue la próxima actualización de hardware. Las CPU son Xeon E5649 @ 2.53GHz (núcleo hexagonal) y E5640 @ 2.67GHz (núcleo cuádruple). Eliminar la CPU de 6 núcleos por completo en realidad es una de las opciones en la tabla. Sería mejor poder deshabilitar el socket por completo en el BIOS, pero no parece posible.
paulos
@paulos ¿Qué aplicación es esta?
ewwhite
En realidad está funcionando como un firewall de punto de control
paulos
3
@paulos Entonces, ¿por qué importa 2,67 GHz versus 2,53 GHz? Simplemente coloque la CPU de 6 núcleos en el servidor y elimine los de 4 núcleos.
ewwhite
re: especificaciones de la CPU, sí, creo que es solo un 5% más rápido o algo así. Espero que la ganancia de rendimiento se atribuya a que todos los hilos de trabajo y, en particular, la tormenta de irq de las tarjetas de red están en la misma CPU física. editar: Sí, usar solo la CPU de 6 núcleos también es una posibilidad.
paulos