La gestione dell'alimentazione della CPU influisce sulle prestazioni del server?


44

Stavo facendo dei semplici benchmarking manuali sul nostro server di database (live) durante le ore non di punta e ho notato che le query restituivano risultati di benchmark alquanto irregolari .

Qualche tempo fa avevo abilitato il piano di risparmio energetico "bilanciato" su tutti i nostri server, perché immaginavo che non fossero in nessun luogo vicino a un elevato utilizzo e in questo modo avremmo potuto risparmiare un po 'di energia.

Avevo supposto che ciò non avrebbe avuto alcun impatto significativo e misurabile sulle prestazioni. Tuttavia, le caratteristiche di risparmio energetico della CPU se sono compromettere le prestazioni tipiche - in particolare sul server di database condiviso - allora io non sono sicuro che ne vale la pena!

Sono rimasto un po 'sorpreso dal fatto che il nostro livello Web, anche con un carico del 35-40%, è in down-clock da 2,8 Ghz a 1,25 V a 2,0 Ghz a 1,15 V.

Mi aspetto pienamente che il down-clock risparmi energia, ma quel livello di carico mi sembra abbastanza alto da portarlo alla massima velocità di clock.

Il nostro server di database da 8 cpu ha un sacco di traffico, ma un utilizzo della CPU estremamente basso (solo a causa della natura delle nostre query SQL, molte delle quali, ma query davvero semplici). Di solito è seduto al 10% o meno. Quindi mi aspetto che esegua il downclock anche più dello screenshot sopra. Ad ogni modo, quando ho trasformato il risparmio energetico in "alte prestazioni", ho visto il mio semplice benchmark delle query SQL migliorare di circa il 20% e diventare molto coerente da una corsa all'altra .

Immagino che stavo pensando che la gestione dell'alimentazione su server leggermente caricati fosse vantaggiosa per entrambe le parti - nessuna perdita di prestazioni e un notevole risparmio energetico poiché la CPU è comunemente il consumatore numero 1 o n. 2 nella maggior parte dei server. Questo non sembra essere il caso; si rinuncia ad alcune prestazioni con la gestione della potenza della CPU abilitata, a meno che il server non sia sempre così carico che la gestione della potenza si sia effettivamente spenta. Questo risultato mi ha sorpreso.

Qualcuno ha altre esperienze o raccomandazioni da condividere sulla gestione della potenza della CPU per i server? È qualcosa che accendi o spegni sui tuoi server? Hai misurato molta potenza, stai risparmiando? Hai fatto il benchmark con esso acceso e spento?


2
Odio dirlo, ma hai fornito la tua risposta. Vedi le tre bolle accanto a "Prestazioni" per la modalità Equilibrata e sei per la modalità Ad alte prestazioni? C'è la differenza :) Il risparmio energetico è implementato in gran parte tramite il downclocking della CPU. Vedrai un colpo di performance da questo, anche se può riportarlo sotto carico.
Bill Weiss,

sì, ma "bilanciato" è attivo per impostazione predefinita in Windows Server 2008 R2. Ciò implica, per me, che non ci dovrebbe essere una significativa penalizzazione delle prestazioni nell'uso tipico, ad esempio un server leggermente caricato.
Jeff Atwood,

4
Tre bolle contro sei! Sembra un'enorme differenza! :)
Bill Weiss,

1
Windows: sbalordire gli umani dal 1985.
Michael Graff,

Risposte:


16

Non sono sicuro dei server, ma il pensiero attuale nei dispositivi incorporati non è quello di preoccuparsi dei passaggi tra basso consumo e flat-out perché il tempo aggiuntivo in questione consumerà i tuoi risparmi energetici, quindi fondamentalmente funzionano a basso consumo fino a quando non ottengono alcun quantità reale di carico della cpu a quel punto passano al più veloce possibile in modo da poter finire il lavoro e tornare al minimo a bassa potenza.


1
Sono d'accordo che questo è il modo in cui dovrebbe funzionare su un server.
Jeff Atwood,

11

Ho sempre disattivato qualsiasi tipo di gestione dell'alimentazione sui server. Sono curioso di sapere cosa hanno sperimentato gli altri, ma ho sempre pensato che se il server è sotto-clock, ci sarà sempre qualche ritardo nel "potenziare" la CPU al 100%, e in un data center che imposta un ritardo come questo è inaccettabile.

I dati forniti sembrano supportare questa ipotesi. Pertanto, non ho eseguito alcun test specifico, ma sembra che non si debba utilizzare alcuna tecnologia di risparmio energetico in Windows o nel BIOS. Spengo anche le impostazioni di "spegnimento della rete" e della scheda PCI per essere ultra conservativi.


8

Quanto potere questo effettivamente ti salverà :
se decidi che questa funzione potrebbe mettere a rischio la stabilità dei tuoi server (ne ho esperienza), allora potresti cercare altrove i risparmi energetici.

Vorrei provare a scoprire quanta energia questo potrebbe risparmiare per la quantità di server che hai (anche se forse l'hai già fatto). Dal momento che il grafico che hai pubblicato nella tua risposta è in percentuale, per la tua azienda, i risparmi potrebbero in realtà essere una potenza effettiva molto ridotta. Se non hai molti server, potrebbe non essere così tanto e ottenere luci attivate dal movimento o qualcosa del genere nel tuo ufficio potrebbe risparmiare più energia (anche se non è così commerciabile).

Ricordo di aver letto qualche anno fa una delle maggiori case automobilistiche americane (dimentica quale) aveva la pressione di cambiare le emissioni dei gas di scarico sulle loro auto. Invece, la società ha dimostrato che se avesse chiuso alcune delle sue fabbriche, sarebbe stato molto più economico per loro e avrebbe comportato risparmi di emissioni molto maggiori.

Non dimenticare i dischi:
Inoltre, potresti voler controllare che queste funzionalità di risparmio energetico non abbattano il disco (i) se non vengono utilizzate. Forse per un po 'tutti i risultati della query SQL sarebbero nella RAM, il disco verrebbe usato e andrebbe in sospensione (non sei sicuro che funzioni così)? Se ciò dovesse accadere, ci sarebbe una grande penalità prestazionale mentre tutto gira di nuovo.


4
oh sì, lo spin down del disco è piuttosto rischioso sui server. L'avevamo abilitato sul nostro NAS e Brent Ozar (il nostro esperto SQL / DBA) ci ha avvisato che questa era una pessima idea .. ogni spin-up è come una lotteria per vedere se l'unità lo farà effettivamente tornare indietro :)
Jeff Atwood,

La modalità "Bilanciata" mi fa risparmiare 10 watt al minimo rispetto alla modalità "Prestazioni elevate" (~ 15,5 W contro ~ 25,5 W su un core i7 4790). Tuttavia, la modalità bilanciata su Windows Server 2012 non sembra aumentare la velocità di clock massima della CPU, il che compromette gravemente le prestazioni delle query del database.
Ryan Anderson,

8

si rinuncia ad alcune prestazioni con la gestione della potenza della CPU abilitata, a meno che il server non sia sempre così carico che la gestione della potenza si sia effettivamente spenta. Questo risultato mi ha sorpreso.

Prefazione: sto facendo alcuni balzi / generalizzazioni su Intel Xeons e le loro prestazioni di risparmio energetico con SpeedStep. Nel leggere le CPU Intel Xeon " Yorkfield " a 45 nm, Enhanced Intel SpeedStep Technology (EIST) e Enhanced Halt State (C1E) sembrano essere il vero colpevole della situazione. Concordo con la tua affermazione nel ritenere che l'attivazione di tali funzioni di gestione dell'alimentazione aiuterebbe la conservazione dell'energia, ma quando le CPU necessitavano dell'energia sotto carico, il sistema tornava alle normali impostazioni della velocità di clock della tensione. Sembra che EIST e C1E abbiano alcuni effetti collaterali che non sono implicitamente impliciti quando si utilizza l'opzione / o nel BIOS. Dopo aver esplorato numerosi siti Web di overclocking, sembra che queste due impostazioni nel BIOS causino un po 'di frustrazione.

Da http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.html :

C1E (Enhanced Halt State) : C1E è il più semplice dei due componenti. Può essere abilitato o disabilitato nel BIOS ed esegue indipendentemente dal sistema operativo. C1E ha due configurazioni: inattiva e carica. Quando l'utilizzo della CPU è relativamente basso, questa funzione riduce il moltiplicatore del processore all'impostazione più bassa (in genere 6x) e riduce leggermente il suo vCore. Durante un'applicazione a uso intensivo di CPU, aumenterà il multipler al suo valore massimo e fornirà un piccolo incremento in vCore per compensare. Nel nostro esempio, C1E farà funzionare il tuo processore a 6x o 9x FSB .

EIST (tecnologia Intel SpeedStep avanzata) : questa è una funzionalità molto robusta e ha una grande varietà di capacità di risparmio energetico. Come il suo cugino più semplice, EIST può influenzare sia la tensione della CPU che il suo moltiplicatore, tuttavia ha molti più livelli di configurazione. Invece di una semplice impostazione "lenta o veloce", SpeedStep può utilizzare tutti i moltiplicatori disponibili. Nel nostro esempio, EIST consentirà al tuo processore di funzionare con un moltiplicatore di 6, 7, 8 o 9 e scegli quale utilizzare in base alla richiesta della tua CPU. EIST è controllato da Windows e utilizza i diversi "schemi di alimentazione" che potresti aver visto nel tuo pannello di controllo.

Durante la regolazione delle impostazioni delle prestazioni per "high performance" è probabilmente l'impostazione migliore per un server di database, sono abbastanza certo sia EIST e / o C1E causato le CPU a meno di eseguire anche se dovrebbero avere di nuovo andato a impostazioni normali quando il carico aumentato sostanzialmente. Il grande avvertimento per me sembra essere "cos'è un carico sostanziale?" Secondo il sito di overclockers.net, sostengono che EIST utilizza queste impostazioni "combinazioni di risparmio energia" per come modificare le impostazioni della CPU. Ma non vi è alcuna indicazione della percentuale di carico o di quanto tempo sapere quando riportare le CPU alla tensione normale.

Ancora una volta, non sono affatto un esperto in materia di CPU Intel, ma scommetterei che la regolazione di queste due impostazioni potrebbe darti i risparmi energetici che desideri e le prestazioni che dovresti ottenere, ma attenendoti all'impostazione "prestazioni massime" è altrettanto efficace senza la necessità di riavviare.


5

La risposta rapida è: ovviamente il risparmio energetico influirà sulle prestazioni.

La risposta più lunga non è divertente. Fondamentalmente, prova un'impostazione, verifica le prestazioni e decidi con cosa convivere.

Le applicazioni e i sistemi sono così complicati che qui non c'è una risposta secca, tranne "sì, il tempo di reazione e le altre velocità del sistema ne risentiranno". Se è molto più lento del disco rigido o della rete, beh, ti viene l'idea. Test in realtà.


4

Cerco sempre di VM quanti più server possibile, ma dove devo "bare metal" un server è di solito quello di cui ho bisogno o voglio prestazioni totalmente coerenti. Quindi per queste macchine business-critical non accendo MAI nulla di tutto ciò che riguarda il risparmio energetico per i motivi che si verificano.

*** bang-va-my-green-credenziali *


3

Poche cose:

  1. Controllare nel BIOS per assicurarsi che la gestione dell'alimentazione sia sotto il controllo del sistema operativo. Potrebbe essere possibile che sia impostato per essere gestito dal firmware e quindi utilizzare una gestione della potenza del processore muta e non ottimale.

  2. Verificare se sono presenti aggiornamenti rapidi relativi alla gestione dell'alimentazione che potrebbero mancare. Ce ne sono stati alcuni notevoli nel giorno in cui Vista / Server 2008 è uscito.

  3. Controlla la configurazione dettagliata per Bilanciato. È possibile che un'altra funzione di risparmio energetico stia causando prestazioni ridotte. In teoria, il successo delle prestazioni dell'EIST dovrebbe essere trascurabile, anche se, di nuovo, un database SQL ha un footprint unico ed è ipotizzabile che venga influenzato in modo sproporzionato dalla gestione dell'alimentazione del processore.


1
Oh ragazzo, sono in ritardo alla festa ...
Bigbio2002,

2

Alcune informazioni da Microsoft (formato Word Doc, sfortunatamente)

Migliora l'efficienza energetica e gestisci il consumo di energia con Windows Server 2008 R2

Windows Server 2008 è complessivamente più efficiente dal punto di vista energetico rispetto al suo predecessore, Windows Server 2003. Per impostazione predefinita, Windows Server 2008 esegue il piano di "risparmio energetico" bilanciato , che mira a mantenere le prestazioni elevate risparmiando energia quando possibile. Ciò significa che Windows Server 2008 consuma meno energia rispetto a un'installazione di base di Windows Server 2003. Poiché la modalità "Bilanciata" massimizza l'efficienza energetica predefinita (OOB), Microsoft consiglia vivamente di lasciare selezionate le impostazioni predefinite "Bilanciate" nella maggior parte dei casi.

Windows Server 2008 include due modalità predefinite aggiuntive, "Risparmio energia" e "Prestazioni elevate", che hanno obiettivi di alimentazione e prestazioni diversi e possono essere appropriati in alcune situazioni. La modalità "Prestazioni elevate" può essere appropriata per server che funzionano a un utilizzo molto elevato e devono fornire le massime prestazioni, indipendentemente dal costo di alimentazione. La modalità "Risparmio energetico" può essere utilizzata per server poco utilizzati che hanno più capacità prestazionali di quelle di cui hanno realmente bisogno; l'utilizzo di "Risparmio energetico" in questa situazione può fornire risparmi energetici incrementali.

Queste particolari funzionalità di risparmio energetico della CPU a livello hardware sono le stesse in qualsiasi sistema operativo, ovviamente, è solo una questione di accenderle o meno.

Il grafico del risparmio energetico di nessuna gestione della potenza della CPU, rispetto alla gestione della potenza della CPU:

Siamo chiari sul fatto che (e questo grafico mostra che) a livelli di utilizzo elevati, la gestione dell'alimentazione della CPU viene automaticamente disattivata. Ciò su cui non sono chiaro, tuttavia, è se a bassi livelli di utilizzo vi sia un impatto sulle prestazioni complessive del server, ad esempio i tempi di consegna delle query di SQL Server semplici.


Sembra ingenuo credere a un white paper scritto da Microsoft su uno dei propri prodotti. Gli obiettivi della funzione possono essere corretti, ma le cifre effettive possono e possono variare.
Gekkz,

1
cosa non credi? che "bilanciato" è attivo di default ? Questo è un dato di fatto ... installa Windows Server 2008 R2 se non mi credi.
Jeff Atwood,

@Jeff Atwood: penso che avrebbe potuto significare gli effettivi risultati di risparmio energetico del grafico. Potrebbe essere nel loro interesse mostrare le statistiche in un modo che mostri il più possibile risparmio energetico per ragioni di marketing. Ad esempio, la percentuale di potenza massima sembra un po 'strana, perché non mettere semplicemente i watt effettivi risparmiati? Tuttavia, come disclaimer, potrebbe esserci un ottimo motivo per cui hanno scelto quella metrica (se anche quella è la parola giusta).
Kyle Brandt,

il risparmio energetico (un modesto 10% per il grafico) di abilitare la gestione della potenza della CPU è indiscutibile .. è possibile utilizzare un kill-a-watt e il proprio PC di casa per verificarlo. In realtà è più alto su un PC di casa poiché tendono ad avere meno unità, memoria, controller di raid, ecc. Che assorbono energia.
Jeff Atwood,

@KyleBrandt - Sospetto che la percentuale della potenza massima sia stata utilizzata per rendere i risultati più generici. In questo modo si applicano i risultati alla propria macchina (che consuma 400w a passaggio pieno, rispetto a un server da XXX watt sul foglio).
EricB

0

Non dovresti mai e poi mai ricorrere all'utilizzo delle impostazioni di Windows o del BIOS Speedtep che arriva sui processori Intel e c'è anche un equivalente AMD. Questi possono causare problemi e ho riscontrato problemi in cui, con Speedstep, l'orologio della CPU continuava a rimbalzare su e giù in modo irregolare anche se l'utilizzo delle risorse della CPU era coerente.

Se si vuole essere più verde e risparmiare energia, utilizzare processori a basso consumo, designati con il carattere L prima che il nome del modello, come la L serie 54xx e L 55xx serie di Intel.

EDIT: mi dispiace se ho dato l'impressione che questa funzione fallirà sempre, ne sono stata solo bruciata, e in un sistema mission-critical non posso far accadere questo genere di cose, quindi provo solo a rimanere lontano da esso.


Non credo che causi problemi, o non sarebbe attivo per impostazione predefinita in quasi tutti i moderni sistemi operativi e CPU. Potresti pensare a varianti molto più vecchie delle tecnologie di risparmio energetico della CPU, forse qualche anno fa?
Jeff Atwood,

Sembra che tu supponga che tutto ciò che è una funzionalità funzioni correttamente. In realtà sto parlando dell'esperienza diretta con una doppia configurazione E5520 che ha avuto quel problema, in due server diversi.
Gekkz,

@gekkz Non penso che nessuno stia dicendo che è impossibile che causi problemi, ma la tua risposta suggerisce che causa sempre, o quasi sempre, problemi, il che è semplicemente falso. Se così fosse, migliaia (milioni?) Di server là fuori avrebbero problemi causati da questo proprio ora.
phoebus il

0

Quando parli di prestazioni su un server, ci sono alcuni modi diversi di vederle. C'è il tempo di risposta apparente (simile alla latenza di rete) e la velocità effettiva (simile alla larghezza di banda della rete).

Alcune versioni di Windows Server vengono fornite con impostazioni di alimentazione bilanciata abilitate per impostazione predefinita. Come ha sottolineato Jeff. Windows 2008 R2 è uno di questi. Al giorno d'oggi pochissime CPU sono single core, quindi questa spiegazione si applica a quasi tutti i server Windows in cui ti imbatterai ad eccezione delle VM single-core. (più su quelli più tardi).

Quando il piano di alimentazione bilanciata è attivo, la CPU tenta di ridurre la quantità di energia utilizzata. Il modo in cui lo fa è disabilitando metà dei core della CPU in un processo noto come "parcheggio". Solo la metà delle CPU sarà disponibile alla volta, quindi consuma meno energia durante i periodi di traffico ridotto. Questo non è un problema in sé e per sé.

Ciò che è un problema è il fatto che quando le CPU non sono parcheggiate, hai raddoppiato i cicli di CPU disponibili disponibili per il sistema e improvvisamente sbilanciato il carico sul sistema, portandolo (per esempio) dal 70% di utilizzo al 35% di utilizzo. Il sistema lo guarda e dopo che lo scoppio del traffico è stato elaborato, pensa "Ehi, dovrei ricominciare un po 'per risparmiare energia". E così fa.

Ecco la parte cattiva. Al fine di prevenire una distribuzione irregolare di calore ed energia all'interno dei core della CPU, tende a parcheggiare le CPU che non sono state parcheggiate di recente. E affinché funzioni correttamente, la CPU deve scaricare tutto dai registri CPU (cache L1, L2 e L3) in un'altra posizione (molto probabilmente memoria principale).

Come esempio ipotetico, supponiamo che tu abbia una CPU a 8 core con C1-C8.

  • Attivo: C1, C3, C5, C7
  • Parcheggiato: C2, C4, C6, C8

Quando ciò accade, tutti diventano attivi per un certo periodo di tempo, quindi il sistema li parcheggerà come segue:

  • Attivo: C2, C4, C6, C8
  • Parcheggiato: C1, C3, C5, C7

Ma nel fare ciò, c'è una buona quantità di overhead associato con lo svuotamento di tutti i dati dalla cache L1-L3 per far sì che ciò accada in modo che non accadano strani errori ai programmi che sono stati scaricati dalla pipeline della CPU.

Probabilmente c'è un nome ufficiale per questo, ma mi piace spiegarlo come un thrashing della CPU. Fondamentalmente, i processori stanno impiegando più tempo a lavorare intensamente spostando i dati internamente di quanto non stiano rispondendo alle richieste di lavoro.

Se si dispone di qualsiasi tipo di applicazione che richiede bassa latenza per le sue richieste, è necessario disabilitare le impostazioni di Potenza bilanciata. Se non sei sicuro che si tratti di un problema, procedi come segue:

  1. Apri il "Task Manager"
  2. Fai clic sulla scheda "Prestazioni".
  3. Fai clic su "Apri monitoraggio risorse"
  4. Seleziona la scheda "CPU"
  5. Guarda sul lato destro della finestra le varie CPU.

Se vedi qualcuno di loro parcheggiato, noterai che metà di loro sono parcheggiati in un dato momento, si accenderanno tutti e poi l'altra metà verrà parcheggiata. Si alterna avanti e indietro. Pertanto, le CPU di sistema si stanno schiantando.

Macchine virtuali: questo problema è ancora peggiore quando si esegue una macchina virtuale perché c'è l'overhead aggiuntivo dell'hypervisor. In generale, affinché una VM possa funzionare, l'hardware deve disporre di uno slot nel tempo disponibile per ciascuno dei core in ciascuna sezione temporale.

Se si dispone di un componente hardware di 16 core, è possibile eseguire VM utilizzando più di 16 core totali ma per ogni intervallo di tempo, solo un massimo di 16 CPU virtuali saranno idonee per tale intervallo di tempo e l'hypervisor deve adattarsi a tutti i core di una VM in quella fascia oraria. Non può essere distribuito su più intervalli di tempo. (Un timeslice è essenzialmente un insieme di cicli CPU X. Potrebbe essere 1000 o potrebbe essere 100k cicli)

Es: 16 core hardware con 8 VM. 6 hanno 4 CPU virtuali (4C) e 2 hanno 8 CPU virtuali (8C).

Timeslice 1: 4x4C Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8C Timeslice 4: 1x8C + 2x4C

Ciò che l'hypervisor non può fare è dividere la metà dell'assegnazione per un timeslice alle prime 4 CPU di una VM 8 vCPU e quindi al successivo timeslice, dare il resto alle altre 4 vCPU di quella VM. È tutto o niente in un intervallo.

Se si utilizza Hyper-V di Microsoft, le impostazioni di controllo dell'alimentazione potrebbero essere abilitate nel sistema operativo host, il che significa che si propagherà ai sistemi client, incidendo così anche su di essi.

Una volta che vedi come funziona, è facile vedere come l'utilizzo delle impostazioni di Controllo alimentazione bilanciata causi problemi di prestazioni e server lenti. Uno dei problemi sottostanti è che la richiesta in arrivo deve attendere il completamento del processo di parcheggio / sblocco della CPU prima che il server sia in grado di rispondere alla richiesta in arrivo, che si tratti di una query del database, di una richiesta del server Web o altro .

A volte, il sistema parcheggerà o annullerà il parcheggio delle CPU nel mezzo di una richiesta. In questi casi, la richiesta verrà avviata nella pipeline della CPU, verrà scaricata da essa e quindi un diverso core della CPU prenderà il processo da lì. Se si tratta di una richiesta abbastanza pesante, ciò potrebbe accadere più volte nel corso della richiesta, cambiando quella che avrebbe dovuto essere una query di database di 5 secondi in una query di database di 15 secondi.

La cosa più grande che vedrai dall'utilizzo di Balanced Power è che i sistemi si sentiranno più lenti a rispondere a quasi tutte le richieste che fai.

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.