Requisiti di energia della CPU multicore e bilanciamento del carico


10

Sono interessato al bilanciamento del carico per sistemi CPU multicore. Se si utilizza 1 CPU con più core, è più efficiente dal punto di vista energetico bilanciare il carico su più core o provare a riempire singoli core e lasciare gli altri inattivi.
L'ipotesi di base è che la quantità di lavoro svolto in entrambi i casi sia esattamente la stessa, nello stesso tempo. Quindi, è più efficiente utilizzare 4 core nella stessa CPU con il 25% di carico ciascuno o 1 core con il 100% di carico.
Suppongo che 1 core con un carico del 100% dovrebbe essere più efficiente, ma poiché potrei sbagliarmi, stavo cercando risposte serie a questo problema (nessuna ipotesi).


+1 Domanda davvero interessante! Ecco alcuni link tomshardware.com/reviews/truth-pc-power-consumption,1707.html tomshardware.com/reviews/intel-cpu-power-consumption,1750.html, tuttavia in realtà non rispondono alla tua domanda. Ho C2D T8100 e uno di questi giorni farò dei test per vedere quale tipo di carico produce più calore.
AndrejaKo

4 core al 25% distribuiranno sicuramente il calore meglio di 1 core al 100%.
Brian Knoblauch,

Se la quantità di lavoro è costante in tutti i casi d'uso, accumulare tutto il carico sullo stesso core renderà le sue prestazioni inferiori, impiegando in modo efficace più tempo e thrashing. Potresti perdere i risparmi energetici istantanei quando lo stesso lavoro richiede più tempo per il completamento. (+1, domanda stimolante)
nik,

@Brian ha concordato che l'utilizzo di più core diffonde il calore, ma genera la stessa quantità di calore in totale?
Kevin Panko,

AMD ha annunciato che le CPU saranno in grado di spegnere i core non utilizzati, consentendo di eseguire i core attivi a una velocità di clock più elevata
b0fh,

Risposte:


6

IMO questa domanda è semplicemente senza risposta nel caso generale.

Sulla mia scrivania ho una di queste nuove CPU abilitate Turbo i 6-9 core Core i7-980x. Se si carica un singolo core su questa macchina, aumenterà la velocità di clock di quel core, aumentando così il consumo di energia della CPU, in modo da fare un'enorme differenza. Questa CPU e altre CPU più moderne possono parzialmente scollegare i core inattivi, aumentando il risparmio energetico. Non è così vero sui vecchi modelli di CPU.

Tieni presente che il lavoro che devi fare con un core sarà necessariamente diverso dal lavoro che fai con più core. Se è possibile distribuire il carico su più core, scoprirai che un sacco di tempo extra verrà speso sul singolo core eseguendo costosi switch di contesto e le tue prestazioni ne risentiranno.

Ad ogni modo, il problema ha troppe variabili per rispondere davvero. Si potrebbe andare avanti e avanti sui diversi tipi di carichi e chiunque cerchi di eseguire il benchmark per ottenere una risposta finirà (probabilmente inavvertitamente) facendo confronti mela-arance che non si applicano in altri casi d'uso.

Oh, e un'altra cosa. La maggior parte delle persone citerà probabilmente l'efficienza in termini di potenza . Non vuoi cadere in quella trappola. Poiché il tempo di elaborazione dei carichi sarà necessariamente diverso a seconda della modalità di bilanciamento dei carichi, è necessario integrare il risultato nel tempo per trovare la quantità netta di energia utilizzata per completare i lavori al fine di ottenere un risultato credibile.


LOL Come hai potuto dirlo? Hokie Engineering, piccola!
David Markle,

Ne prende uno per conoscerne uno. Go Mizzou
hotei,

Oh aspetta. Mi sbagliavo. C'è un uomo che potrebbe eseguire alcuni benchmark e darci una risposta nel caso generale: gizmodo.com/5598885/…
David Markle

4

Oggi ho fatto alcuni test usando questo computer (Intel C2D T8100) e usando le applicazioni SETI @ Home ottimizzate dall'installer lunatico 0.36. Ho usato M $ Joulmeter per calcolare il consumo di energia. Ho misurato i tempi dell'albero dei consumi. Innanzitutto, ho lasciato che BOINC prendesse il 100% dei core e il 100% del tempo della CPU e lo facessi funzionare per un'ora. Il processore consumava 20 W e i grafici temporali della CPU del task manager erano piatti al 100%. Il consumo medio di energia del mio computer era di 45,05 W e in aumento e al momento ho interrotto il consumo di energia di prova di 46,18 W.

Nel secondo test, ho impostato BOINC per prendere il 50% dei core disponibili e il 100% del tempo della CPU e lasciarlo funzionare per un'ora. Il consumo energetico della CPU varia tra 12W e 13W. Il consumo medio è stato di 42,72 W e in aumento. Al momento ho interrotto il test, il consumo era di 44 W. Al fine di rendere il grafico temporale della CPU per il core target impostato come flatline, ho impostato l'affinità del programma su un core e la priorità su high. Il grafico per altri core mostrava un po 'più elevato del normale utilizzo del tempo della CPU.

Per il terzo test ho impostato BOINC per utilizzare il 100% dei core disponibili e il 50% del tempo della CPU. Il consumo energetico variava in grandi salti tra 5W e 17W. Il consumo medio di energia dopo un'ora di test è stato di 39,96 W e in calo. I grafici temporali della CPU sono stati lusingati come /\/\/\/\/\/\/\/\/\/\/\/\/\. Sono stati previsti picchi a causa delle dimensioni delle unità di tempo utilizzate da BOINC.

Quindi credo che sia più efficiente utilizzare due core in esecuzione a metà carico che eseguire un core a pieno carico.

E sì, so che per uno studio adeguato sono necessari molti più campioni, ma al momento non ho abbastanza computer o tempo per fare statistiche adeguate.


1
Ora sarebbe bello trovare un equivalente al Joulemeter per altri sistemi operativi, quindi potrei testare alcune delle apparecchiature che ho ottenuto ...
private_meta

Ecco qualcosa per i laptop GNU / Linux thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo

Ecco un altro link interessante: www.lesswatts.org/ e un altro susegeek.com/general/… e un altro publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/… Apparentemente le persone non credono alle letture ACPI e sono convinte che sono necessari contatori esterni, quindi pochi di questi link discutono su come utilizzare contatori esterni. Non sono abbastanza 1337 con altri sistemi operativi per essere in grado di fornire alcun aiuto.
AndrejaKo

Grazie. Il problema con i contatori esterni è che misurano tutto il consumo di energia, non solo la potenza di elaborazione. Anche se l'intero consumo di energia sarebbe importante (ad esempio gli algoritmi utilizzano ampiamente i dischi rigidi). Se le letture ACPI non sembrano affidabili, dovresti utilizzare anche letture esterne per computer Windows per poterle confrontare: - /
private_meta

Ma le letture ACPI sono ancora meglio di nessuna lettura, giusto? Inoltre, utilizzando test che incidono maggiormente sulla CPU, possiamo stabilire il consumo di energia di base e vedere quanto aumenta con il carico. In questo modo possiamo sapere che la maggior parte della variazione del consumo è dovuta al carico della CPU. Potrei fare altri test più tardi con un voltmetro e un amperemetro. Sarebbe davvero interessante vedere come si confrontano le misure ACPI e le misure reali dello strumento. Peccato che tale confronto non possa essere generalizzato.
AndrejaKo

0

La risposta alla tua domanda è duplice: se stai eseguendo un codice parallelo altamente vettoriale, il bilanciamento del carico su più core è sempre più efficiente. I core funzioneranno a carichi inferiori rilasciando meno calore di un singolo core che viene spinto al limite. D'altra parte, se il codice non è parallelizzabile, quindi eseguirlo su più core è meno efficiente a causa del numero di errori della cache che si verificano a causa delle dipendenze nel codice. Ciò potrebbe comunque generare meno calore, ma richiederà sicuramente più tempo per completare l'attività rispetto all'esecuzione su un singolo core.


1
Ma se hai un codice non parallelizzabile, come hai intenzione di correre su più di un core?
AndrejaKo

Secondo te, 4 core messi insieme al 25% generano meno calore (e producono più perdite di energia) rispetto a 1 core spinto al 100%.
private_meta

@AndrejaKo Se ci sono più processi o thread, è facile distribuirli su tutti i core.
emish

0

La tua domanda come posta ha troppe incognite. Stai chiedendo informazioni sull'efficienza temporale o sull'efficienza energetica? Codice non parallelo o codice parallelo? Lavoro singolo o multi-tasking medio sul desktop? Se hai una bolletta energetica superiore a $ 1000 / mese per i tuoi computer, potrebbe valere la pena preoccuparti o due. Altrimenti non puoi risparmiare abbastanza per rendere il problema degno di essere risolto. Divertente parlare di - ma se hai un problema serio la risposta migliore è: provare alcune cose diverse e vedere cosa funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.