Requisitos de energía de CPU multinúcleo y equilibrio de carga

10

Estoy interesado en el equilibrio de carga para sistemas de CPU multinúcleo. Si usa 1 CPU con múltiples núcleos, ¿es más eficiente energéticamente equilibrar la carga en varios núcleos, o tratar de llenar núcleos individuales y dejar otros inactivos?
La suposición básica es que la cantidad de trabajo que se realiza en ambos casos es exactamente la misma, al mismo tiempo. Entonces, ¿es más eficiente usar 4 núcleos en la misma CPU con 25% de carga cada uno o 1 núcleo con 100% de carga?
Supongo que 1 núcleo con una carga del 100% debería ser más eficiente, pero como podría estar equivocado, estaba buscando respuestas serias sobre este problema (sin adivinanzas).

Private_meta
fuente
+1 ¡Pregunta realmente interesante! Aquí hay algunos enlaces tomshardware.com/reviews/truth-pc-power-consumption,1707.html tomshardware.com/reviews/intel-cpu-power-consumption,1750.html, sin embargo, en realidad no abordan su pregunta. Tengo C2D T8100 y uno de estos días voy a hacer algunas pruebas para ver qué tipo de carga genera más calor.
AndrejaKo
4 núcleos al 25% definitivamente extenderá el calor mejor que 1 núcleo al 100%.
Brian Knoblauch
Si la cantidad de trabajo es constante en los casos de uso, acumular toda la carga en el mismo núcleo hará que rinda menos, lo que efectivamente tomará más tiempo y agitará. Puede perder los ahorros de energía instantáneos cuando el mismo trabajo requiere más tiempo para completarse. (+1, pregunta que hace pensar)
nik
@Brian acordó que el uso de más núcleos extiende el calor, pero ¿genera la misma cantidad de calor en total?
Kevin Panko
AMD ha anunciado CPU que serán capaces de apagar los núcleos no utilizados, permitiendo ejecutar los núcleos activos a mayor velocidad de reloj
b0fh

Respuestas:

6

En mi opinión, esta pregunta simplemente no tiene respuesta en el caso general.

En mi escritorio tengo una de estas nuevas CPU Core i7-980x de 6 núcleos habilitadas para TurboBoost. Si carga un solo núcleo en esta máquina, aumentará la velocidad del reloj de ese núcleo, aumentando así el consumo de energía de la CPU, por lo que marcará una gran diferencia. Esta CPU, así como otras CPU más modernas, pueden desactivar parcialmente los núcleos inactivos, lo que aumenta el ahorro de energía. Eso no es tan cierto en los modelos de CPU más antiguos.

Tenga en cuenta que el trabajo que tiene que hacer con un núcleo será necesariamente diferente del trabajo que realiza con múltiples núcleos. Si es el caso de que puede distribuir la carga en múltiples núcleos, encontrará que se dedicará mucho tiempo adicional al núcleo único que realiza costosos cambios de contexto, y su rendimiento se verá afectado.

De todos modos, el problema tiene demasiadas variables para responder realmente. Uno podría seguir y seguir sobre los diferentes tipos de cargas, y cualquiera que intente comparar para obtener una respuesta terminará (probablemente inadvertidamente) haciendo comparaciones de manzanas con naranjas que no se aplican en otros casos de uso.

Ah, y una cosa más. La mayoría de las personas probablemente citarán la eficiencia en términos de poder . No quieres caer en esa trampa. Dado que el tiempo para procesar las cargas será necesariamente diferente dependiendo de cómo se equilibren las cargas, debe integrar el resultado a lo largo del tiempo para encontrar la cantidad neta de energía utilizada para completar los trabajos a fin de llegar a un resultado creíble.

David Markle
fuente
LOL ¿Cómo pudiste saberlo? Hokie Engineering, bebé!
David Markle
Toma uno para conocer uno. Go Mizzou
hotei
Oh espera. Estaba equivocado. Hay un hombre que podría ejecutar algunos puntos de referencia y darnos una respuesta en el caso general: gizmodo.com/5598885/…
David Markle
4

Hice algunas pruebas hoy usando esta computadora (Intel C2D T8100) y usando aplicaciones SETI @ Home optimizadas del instalador lunático 0.36. Utilicé M $ Joulmeter para calcular el consumo de energía. Medí los tiempos de consumo del árbol. Primero, dejé que BOINC tomara 100% de núcleos y 100% de tiempo de CPU y lo dejé correr por una hora. El procesador consumía 20 W y los gráficos de tiempo de CPU del administrador de tareas eran planos al 100%. El consumo de energía promedio de mi computadora fue de 45.05W y aumentó y en el momento en que detuve el consumo de energía de prueba fue de 46.18W.

En la segunda prueba, configuré BOINC para tomar el 50% de los núcleos disponibles y el 100% del tiempo de CPU y lo dejé correr durante una hora. El consumo de energía de la CPU varió entre 12W y 13W. El consumo promedio fue de 42.72 W y en aumento. En el momento en que detuve la prueba, el consumo era de 44W. Para hacer que el gráfico de tiempo de la CPU para el núcleo objetivo sea plano, configuro la afinidad del programa en un núcleo y la prioridad en alta. El gráfico para otro núcleo mostró un uso de tiempo de CPU algo mayor que el normal.

Para la tercera prueba, configuré BOINC para usar el 100% de los núcleos disponibles y el 50% del tiempo de CPU. El consumo de energía varió en grandes saltos entre 5W y 17W. El consumo de energía promedio después de una hora de prueba fue de 39.96 W y cayó. Gráficos de tiempo de CPU en bucle como /\/\/\/\/\/\/\/\/\/\/\/\/\. Se esperaban picos debido al tamaño de las unidades de tiempo utilizadas por BOINC.

Por lo tanto, creo que es más eficiente usar dos núcleos funcionando a media carga que ejecutar un núcleo a plena carga.

Y sí, sé que para un estudio adecuado se necesitan muchas más muestras, pero en ese momento no tengo suficientes computadoras o tiempo para hacer las estadísticas adecuadas.

AndrejaKo
fuente
1
Ahora sería bueno encontrar un equivalente al Joulemeter para otros sistemas operativos, entonces podría probar algunos de los equipos que obtuve ...
private_meta
Aquí hay algo para las computadoras portátiles GNU / Linux thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo
Aquí hay otro enlace interesante: www.lesswatts.org/ y otro susegeek.com/general/… y otro publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/… Aparentemente la gente no cree en las lecturas de ACPI y está convencida que los medidores externos son necesarios, por lo que pocos de esos enlaces discuten cómo usar medidores externos. No soy lo suficientemente 1337 con otros sistemas operativos para poder proporcionar ayuda.
AndrejaKo
Gracias. El problema con los medidores externos es que miden todo el consumo de energía, no solo la potencia de procesamiento. Si bien el consumo total de energía también sería importante (p. Ej., Los algoritmos usan mucho los discos duros). Si las lecturas de ACPI no parecen ser confiables, también tendría que usar lecturas externas para computadoras con Windows para poder compararlas: - /
private_meta
Pero aún así, las lecturas de ACPI son mejores que ninguna lectura, ¿verdad? Además, utilizando pruebas que afectan más a la CPU, podemos establecer el consumo de energía base y ver cuánto aumenta con la carga. De esta manera, podemos saber que la mayor parte del cambio de consumo se debió a la carga de la CPU. Podría hacer más pruebas más tarde con un voltímetro y un amperímetro. Sería realmente interesante ver cómo se comparan las mediciones ACPI y las mediciones reales de instrumentos. Lástima que tal comparación no pueda generalizarse.
AndrejaKo
0

La respuesta a su pregunta es doble: si está ejecutando un código paralelo altamente vectorizable, equilibrar la carga en múltiples núcleos siempre es más eficiente. Los núcleos funcionarán a cargas más bajas liberando menos calor que un núcleo único que se empuja a su límite. Por otro lado, si su código no es paralelo, entonces ejecutarlo en múltiples núcleos es menos eficiente debido a la cantidad de errores de caché que ocurrirán debido a las dependencias en el código. Esto aún puede generar menos calor, pero definitivamente tomará más tiempo completar su tarea en comparación con ejecutarlo en un solo núcleo.

Emish
fuente
1
Pero si tiene un código no paralelo, ¿cómo va a ejecutar en más de un núcleo?
AndrejaKo
En su opinión, 4 núcleos unidos al 25% generan menos calor (y produce más pérdida de energía) que 1 núcleo empujado al 100%.
private_meta
@AndrejaKo Si hay múltiples procesos o subprocesos, es fácil distribuirlos en los núcleos.
Emish
0

Su pregunta, tal como se hizo, tiene demasiadas incógnitas. ¿Estás preguntando sobre la eficiencia del tiempo o la eficiencia energética? ¿Código no paralelo o código paralelo? ¿Trabajo único o multitarea de escritorio promedio? Si tiene una factura de energía de más de $ 1000 / mes para sus computadoras, entonces podría valer la pena una o dos preocupaciones. De lo contrario, no puede ahorrar lo suficiente para que valga la pena resolver el problema. Es divertido hablar, pero si tiene un problema grave, la mejor respuesta es: pruebe algunas cosas diferentes y vea qué funciona.

hotei
fuente