Domanda

Sto costruendo un PC con il nuovo processore quad core Intel I7. Con l'hyperthreading attivato, verranno segnalati 8 core in Task Manager.

Alcuni dei miei colleghi affermano che l'hyperthreading renderà il sistema inaffidabile e suggerirà di spegnerlo.

Qualcuno di voi bravi può illuminare me e il resto degli utenti di stockoverflow.

  

Continua: utilizzo costantemente l'hyperthreading ed è stato perfetto. Nessuna instabilità di sorta. Sto usando:

  • Microsoft Server 2008 64 bit
  • Microsoft SQL Server 2008 64 bit
  • Microsoft Visual Studio 2008
  • Server Diskeeper
  • Molti controlli (Telerik, Dundas, Rebex, Resharper)
È stato utile?

Soluzione

È improbabile che la stabilità sia compromessa, poiché l'astrazione è di livello molto basso e il sistema operativo la vede come un'altra CPU per fornire lavoro. Tuttavia, le prestazioni sono un'altra questione.

In tutta onestà non posso dire se questo è ancora il caso, ma almeno quando sono uscite per la prima volta le CPU abilitate HT, c'erano almeno problemi noti con almeno alcune applicazioni. Ad esempio, MySQL e le app multi-thread come l'applicazione Java che supporto per il mio lavoro quotidiano avevano prestazioni ridotte quando HT era abilitato. Abbiamo sempre consigliato di rimuoverlo, almeno per il nostro caso d'uso particolare di un'applicazione enterprise lato server.

È possibile che questo non sia più un problema e in un ambiente desktop è meno probabile che sia un problema per la maggior parte dei casi d'uso. La capacità di dividere il lavoro sulla CPU in genere porterebbe ad applicazioni più reattive quando la CPU viene utilizzata pesantemente. Tuttavia, il cambio di contesto e l'overhead potrebbero essere un distacco quando l'app è già fortemente sottoposta a thread e richiede molta CPU, come nel caso di un server di database.

Altri suggerimenti

Dall'alto della mia testa posso pensare ad alcune ragioni per cui i tuoi colleghi potrebbero dirlo.

  • Diversi articoli sulle prestazioni SQL che soffrono di hyperthreading. Credo che finisca per fare troppi cambi di contesto o blocco della cache. non ricordo esattamente.

  • All'inizio, passando da un singolo proc a più proc o più probabilmente per la maggior parte delle persone, i processi con hyperthreading hanno portato alla luce molti problemi di threading. Condizioni di gara, deadlock, ecc. Che non avevano mai visto prima. Anche se è un problema di codice, alcune persone hanno accusato i proc.

Stanno facendo le stesse affermazioni su multi-core / multi-proc o semplicemente hyperthreaded?

Per quanto mi riguarda, sto sviluppando una scatola hyperthreaded da 4 anni, l'unico problema è stato un problema di deadlock dell'interfaccia utente di mia creazione.

L'hyperthreading farà principalmente la differenza nel comportamento / nelle prestazioni dello scheduler quando si inviano thread alla stessa CPU rispetto a CPU diverse ...

Verrà mostrato in un'applicazione mal codificata che non gestisce le condizioni di competizione tra i thread ...

Quindi di solito è un cattivo design / codice .... che trova una condizione di errore

inaffidabile? Ne dubito. L'unico svantaggio dell'hyperthreading che mi viene in mente è il fatto che se il sistema operativo non ne è a conoscenza , potrebbe programmare due thread su un processore fisico quando altri processori fisici sono inattivi, il che peggiorerà le prestazioni.

Si è verificato un problema con il server SQL e l'hyperthreading per alcune query perché SQL Server ha un proprio scheduler, maxdop 1 lo risolverebbe

A prescindere dal grado di instabilità di Windows, è altamente improbabile che l'hyperthreading contribuisca in modo significativo (o che avrebbe reso grandi novità ormai.)

Ho un PC hyperthreading da un paio d'anni ormai. Non così tanti core, ma ha funzionato bene per me.

Vorrei avere i dati dei test per dimostrare che i tuoi colleghi hanno torto, ma sembra che sia solo la mia opinione contro la loro a questo punto. ;)

I thread in una CPU hyperthreaded condividono la stessa cache e come tali non soffrono dei problemi di coerenza della cache che un'architettura a più CPU può. Tuttavia, se lo sviluppatore di un software sta programmando pensando a più cpus, dovrà (o dovrebbe) scrivere con la semantica di lettura (iirc, questo è il termine). cioè tutte le scritture vengono immediatamente scaricate dalla cache.

Per quanto ne so, dal punto di vista del sistema operativo, non vede l'hyperthreading come diverso dall'avere più core effettivi. Dal punto di vista del sistema operativo, non vi è alcuna differenza: è isolato.

Quindi, a parte il fatto che l'hyperthreading è "extra core" non sono " reali " (in senso strettamente tecnico) e non hanno tutte le prestazioni di "reale" Core della CPU, non riesco a vedere che sarebbe meno affidabile. Più lento, forse, in alcuni casi rari, ma non meno affidabile.

Ovviamente, dipende da cosa stai eseguendo - suppongo che alcune applicazioni potrebbero ottenere " down & amp; sporco " con la CPU e l'hyperthreading potrebbero confonderli, ma probabilmente è piuttosto raro.

Io stesso utilizzo un PC con hyperthreading da diversi anni e non ho riscontrato problemi di stabilità.

Mi dispiace non ho dati più concreti!

Possiedo un sistema i7 e non ho avuto problemi.

Se funziona con più core, funziona con hyperthreading.

La risposta breve: sì.

La risposta lunga, come in quasi tutte le domande, è "dipende". Dipende dal sistema operativo, dal software, dalla revisione della CPU, ecc. Ho dovuto disabilitare personalmente l'hyperthreading in due occasioni per far funzionare correttamente il software (uno, con l'applicazione Synergy e due, con il programma di installazione di Windows NT 4.0), ma il tuo il chilometraggio può variare.

Finché si installa Windows rilevando più core HT dall'inizio (carica alcuni driver rilevanti e simili), è sempre possibile disabilitare (e riattivare) HT "dopo il fatto". Se hai strani problemi di stabilità con software specifici che non puoi risolvere, non è difficile disabilitare HT per vedere se ha qualche impatto.

Non lo disabiliterei per cominciare perché, francamente, probabilmente funzionerà bene nel 99,99% del tuo uso quotidiano. Ma tieni presente che sì, a volte può causare comportamenti bizzarri, quindi non escluderlo se ti capita di risolvere qualcosa di molto strano lungo la strada.

Personalmente, ho scoperto che l'hyperthreading, pur non causando alcun problema, in realtà non aiuta molto. Potrebbe essere come avere un .1 in più di un processore. Sulla mia macchina HT al lavoro, raramente vedo la mia CPU andare oltre il 50%. Non so se HT sia migliorato con i processori più recenti come l'i7, ma non sono ottimista.

Oltre a sentire alcuni report su SQL Server, tutto ciò che posso segnalare è positivo. Ottengo circa il 25% di prestazioni migliori su pesanti app multi-thread con HT attivo. Non ho mai avuto problemi con questo e sto usando un processore HT di prima generazione ...

In ritardo alla festa, ma per riferimenti futuri;

Attualmente sto riscontrando un problema con SQLServer. Fondamentalmente, la mia comprensione è che Hyperthreading sullo stesso processore condivide lo stesso L1 & amp; Cache L2, che può causare problemi tra i due. Anche Citrix sembra avere questo problema da quello che sto leggendo.

Slava Ok ha scritto un buon post sul blog su di esso.

Sono qui molto in ritardo ma ho trovato questa pagina tramite Google. Potrei aver scoperto un problema molto sottile. Ho un i7 950 con 2003 Server ed è fantastico. Inizialmente ho lasciato l'hyperthreading nel BIOS, ma durante alcuni test e spingendo le cose duramente, ho eseguito un programma chiamato "crashme" di Carrette. Questo programma tenta di arrestare in modo anomalo un sistema operativo generando un processo e fornendo immondizia per tentare di eseguirlo. La mia doppia configurazione di Opteron è stata eseguita per sempre senza problemi, ma il 950 si è bloccato in un'ora. Non è andato in crash per nient'altro a meno che non abbia fatto qualcosa di stupido, quindi è stato molto sorprendente. Per un capriccio ho spento HT ed eseguito di nuovo il programma. Funziona tutta la notte, anche più istanze. Un aneddoto non significa molto, ma provalo e vedi cosa succede. Inoltre, sembra che il processore sia leggermente più freddo a ogni carico se HT è spento. YMMV.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top