Ciao Mondo 3!

intel_logonews

Avevamo già notato come il benchmark di WinRAR, ma anche l'applicazione stessa, non beneficiasse della tecnologia Hyper Threading di Intel. Avevamo infatti rilevato valori identici sulla CPU 2600K, sia con 8 core logici che con 4 core logici.
Ora cercheremo di fare luce sui problemi e i segreti del core parking di Windows Seven.

[ENGLISH VERSION]

 

 



Introduzione

Abbiamo segnalato in precedenza come con una semplice modifica al registro di Windows è possibile disabilitare il core parking in Windows Seven ed ottenere una miglioria nelle prestazioni di WinRaR.
La redazione di Deep in It ha scoperto come abilitare un controllo più semplice del core parking in Windows seven.

XtremeHardware ha analizzato a fondo i risvolti di tale scoperta, verificando le modalità con cui questo trucco funziona e le modifiche prestazionali che queste impostazioni comportano.
Abbiamo infine cercato di capire il perché di questo "malfunzionamento" del core parking di Windows Seven con test di affinità mirati.



Il Core Parking

Windows Vista e Windows Seven implementano una nuova tecnica di risparmio energetico: il core parking.
Tale tecnica mette in stato di risparmio energetico profondo, qualora supportato dalla CPU, i core non attualmente necessari alle elaborazioni in corso.
Poiché mandare in stato di risparmio energetico e risvegliare un core è un processo abbastanza lento, il sistema operativo deve provare a indovinare se un dato core servirà in un prossimo futuro o meno.
Come tutte le previsioni, essa può essere sbagliata.
Questo è quello che probabilmente succede con WinRaR in Windows Seven con il core parking abilitato e una CPU Intel con Hyper Threading.
Abbiamo verificato che con CPU senza Hyper Threading o con Hyper Threading disabilitato, il malfunzionamento non si verifica.
Esso non si verifica neanche con CPU AMD Bulldozer, che potrebbero essere affette da un problema simile a causa della architettura a moduli. L'ipotesi che abbiamo fatto è che Windows Seven non usi ancora il core parking su CPU bulldozer. Investigheremo quanto prima questo problema in un prossimo articolo.




Controllare il Core Parking


Cpu_Parking_DEFAULT     Cpu_Parking_OFF_value_MAX_0

Un primo modo di controllare il core parking è di impostare la sottochiave ValueMax nella chiave di registro


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583

Tale valore esprime la massima percentuale (in esadecimale, dove 64 si traduce in 100 in decimale) di CPU che possono essere "parcheggiate".
Impostando tale valore a zero si disabilita di fatto il core parking.
Abbiamo verificato che è necessario un riavvio del sistema affinché le modifiche abbiano effetto. Ciò probabilmente è dovuto al fatto che tale parametro è impostato al boot del kernel e non è più possibile modificarlo.

Un secondo modo, più pratico, è di abilitare una impostazione avanzata di risparmio energetico del processore, per controllare il core parking. Impostando a zero la sottochiave Attributes nella chiave di registro

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583

si abilita nel pannello tale impostazione. Abbiamo verificato che la modifica di tale valore è immediata, ossia non richiede un riavvio e funziona in tempo reale: non è neanche necessario chiudere e riaprire il programma in esecuzione. Ciò ci fa capire che questa impostazione agisce a livello di sistema. Un'altra cosa importante da notare e che tale impostazione è attiva solo con il core parking disabilitato, come descritto sopra (e dopo un riavvio). Con il core parking abilitato, tale impostazione non ha stranamente effetto.
Un'ultima cosa da notare è un errore nella didascalia, almeno in Windows versione italiana. Essa riporta "Numero minimo arresto core prestazioni del processore". In realtà l'impostazione 0% abilita completamente il core parking e l'impostazione 100% la disabilita completamente. Sono ovviamente possibili i valori intermedi.

 

cpu_parking_estetico_0      cpu_parking_estetico_50

cpu_parking_estetico_100


Questi sono tre esempi della impostazione in azione.

Disabilitando il core parking, le prestazioni con le CPU Intel Sandy Bridge salgono notevolmente. Sotto potete osservare i grafici effettuati sia con la versione stabile di WinRAR (4.01), sia utilizzando l'ultima beta (4.10). Abbiamo testato la corretta applicazione di questa patch utilizzando i seguenti processori, tutti dotati di tecnologia Hyper Threading:
  • Intel i7 860 skt 1156 4c/8t
  • Intel i7 875k skt 1156 4c/8t
  • Intel i7 2600k skt 1155 4c/8t 
  • Intel i7 3960X skt 2011 6c/12t

I risultati dopo aver disabilitato il core parking sono stati davvero entusiasmanti, arrivando ad un miglioramento del 40%.
Le CPU AMD, compreso Bulldozer, e quelle Intel sprovviste di tecnologia Hyper Threading non hanno visto alcun miglioramento.

 

winrar_4.01

WinRAR_beta





Il Core Parking in profondità

Abbiamo effettuato un numero elevato di prove con l'esemplare di Core i7 2600K in nostro possesso.

consumi


Durante tutte le prove, sia il consumo che le tensioni di alimentazione sono rimaste le stesse. Le prestazioni, invece, sono aumentate.

Tabella_affinit


In tabella sono riportati i risultati, con core parking abilitato e disabilitato, per WinRaR, con affinità impostata su varie combinazioni di core. Abbiamo prima verificato che con core parking abilitato o disabilitato da registro (dopo un riavvio) e core parking abilitato o disabilitato da interfaccia grafica, non cambiasse nulla. Infine, per quanto riguarda l'ultima riga del test, che riporta le prestazioni in mono core, è stato verificato che ognuno degli 8 core virtuali desse le stesse prestazioni.

Iniziamo con l'analisi della tabella. La prima riga contiene le prestazioni di WinRaR con tutti i core attivi, nelle due condizioni di core parking attivo e disattivo. Questi risultati sono gli stessi che già abbiamo visto in precedenza.

Analizziamo il valore con core parking ON e 8 thread e i valori con core parking OFF e 4 thread, presi a CPU virtuali alterne. Sappiamo che i processi eseguiti sui core 0, 2, 4 e 6, oppure i core 1, 3, 5 e 7 sono eseguiti su core fisici separati. Perciò dal confronto dei risultati possiamo dedurre che il core parking di Windows Seven "parcheggia" per primi i core "virtuali". Ma non si rende conto che WinRaR richiede 8 thread per funzionare al meglio e quindi non sveglia un numero di core sufficiente.

Nella colonna relativa ai risultati con core parking abilitato, notiamo i risultati pressoché identici delle prime tre configurazioni a 4 thread, che ci fanno sospettare che solo due core non sono parcheggiati in quel momento e sono su core fisici separati. La penultima riga è strana: il risultato è comparabile al risultato in mono thread. Questo ci fa pensare a un ulteriore baco: Windows pensa che sia necessario un solo core attivo per quel carico e non due.

La colonna relativa ai risultati con core parking disabilitato non ha sorprese rilevanti: la prima riga con 8 thread ha le massime prestazioni, le successive 2 allocano 4 thread su 2 core fisici e 2 logici, e quindi danno prestazioni sub-ottimali, le successive 2 allocano i 4 thread su core fisici separati, ottenendo tra l'altro lo stesso risultato di 8 thread con core parking abilitato, segno che Windows Seven pensa che 4 core (fisici) bastano per WinRar. L'ultimo valore, le prestazioni in mono core, è invariato.



Conclusioni

Il core parking di Windows usa una euristica per determinare quanti core sono strettamente necessari al software in esecuzione. Purtroppo non sempre questa euristica funziona.
A farne le spese sono le CPU Intel con tecnologia Hyper Threading. Ironicamente il vecchio Windows XP è immune da tale problema.
Disabilitando il core parking le ultime CPU di casa Intel possono liberare pienamente il loro potenziale in carichi mediamente leggeri per la CPU, dove l'euristica del core parking può sbagliare.
Con carichi medio - pesanti, dove la CPU è impegnata al massimo, non c'è spazio per spegnere core: in quel caso non si hanno miglioramenti disattivando il core parking. In effetti, nella maggior parte degli altri benchmark non abbiamo notato incrementi rilevanti delle performance.
Non sappiamo se Microsoft ha in lavorazione una patch per risolvere questo problema. Se volete avere le massime prestazioni, a scapito di un minor risparmio energetico, ora avete anche un modo comodo per modificare le impostazioni del core parking.

Marco Comerci
Redazione XtremeHardware




Pubblicità