View Full Version : HT questo sconosciuto
se non sbaglio la tecnologia presente su alcuni p4 come quello a 3.2GHz che equipaggia il mio portatile acer aspire 1623lmi, e chiamata HT, fa sì che il processore, pur dotato di un solo core fisico venga riconosciuto come doppio processore, e possa quindi elaborare 2 thread contemporaneamente. (se ho detto c@zz@te fin qui ditemelo :D ).
ora quando eseguo un programma scritto da me in fortran (ci mette circa 3 ore per girare), esso mi occupa solo il 50% spaccato del processore....mmmm qui qualcosa non va... perchè non usa tutta la potenza necessaria?!?!
non è per caso che quei furboni alla intel hanno messo l'HT che si attiva comunque anche quando il thread è uno solo?
e poi, scusate, ma per eseguire due processi contemporanei non ci vuole il supporto di un SO apposito? io ho WXP HE SP2. va bene o manca del supporto al multithreading?
NB E' escluso che non vada al 100% per colli di bottiglia vari (l'occupazione di RAM è solo di 3-4 MB).
NBB non ci dovrebbe essere nessun risparmio energetico attivabile su questi proci da desktop, giusto?
ciao
mmm l'ht è sempre attivo.
il sistema ti rileva una o 2 cpu?
Originariamente inviato da checo
mmm l'ht è sempre attivo.
il sistema ti rileva una o 2 cpu?
E' del tutto normale:)
L'ht funziona sempre, poi alcuni software(tipo encoding video) sono ottimizzati per sfruttare questa tecnologia, ma di base funziona sempre.
forse non mi sono spiegato bene: la mia paura è proprio che l'ht sia SEMPRE funzinonante!! solo così riesco a giustificarmi il fatto che il programma lavora utilizzado solo i 50% della potenza di calcolo. è come se non potsse accedere a più di quella!
si, il notebook mi riconosce 2 cpu.
riguardo al supporto da parte del SO che mi dite?
Originariamente inviato da peter2
... riconosciuto come doppio processore, e possa quindi elaborare 2 thread contemporaneamente. (se ho detto c@zz@te fin qui ditemelo :D ).Ogni processore può essere usato per più thread contemporaneamente, in un ambiente... multithreading! ;)
ora quando eseguo un programma scritto da me in fortran (ci mette circa 3 ore per girare), esso mi occupa solo il 50% spaccato del processore....mmmm qui qualcosa non va... perchè non usa tutta la potenza necessaria?!?!La usa, la usa... sta tranquillo.
non è per caso che quei furboni alla intel hanno messo l'HT che si attiva comunque anche quando il thread è uno solo? L'HT si attiva o disattiva da BIOS, non è che operi "al volo".
e poi, scusate, ma per eseguire due processi contemporanei non ci vuole il supporto di un SO apposito? io ho WXP HE SP2. va bene o manca del supporto al multithreading?E' da Windows 95 che esiste il supporto al multithreading. E in altre forme, pure in Windows precedenti ed anche sotto DOS!
NBB non ci dovrebbe essere nessun risparmio energetico attivabile su questi proci da desktop, giusto?Hai un procio da desktop sul portatile?
Pennywise81
12-02-2005, 12:05
Io credo che con l'HT attivato sia corretto che l'indicatore dell'utilizzo della cpu non vada mai oltre il 50%: se rileva 2 cpu, 50% è la percentuale max di utilizzo che la CPU "reale" possa raggiungere, no? ;)
Originariamente inviato da Pennywise81
Io credo che con l'HT attivato sia corretto che l'indicatore dell'utilizzo della cpu non vada mai oltre il 50%: se rileva 2 cpu, 50% è la percentuale max di utilizzo che la CPU "reale" possa raggiungere, no? ;) No. Il software rileva due CPU ma evidentemente non si avvede che sono logiche e pertanto non può prevedere che che, al momento del bisogno, la potenza di uno possa andare sull'altra. Per farla breve.
Originariamente inviato da MaxArt
Ogni processore può essere usato per più thread contemporaneamente, in un ambiente... multithreading! ;)
che diff 'è tra il multithreading e il supporto a più proci? quali SO hanno il secondo?
La usa, la usa... sta tranquillo.
come fai a dirlo?
Hai un procio da desktop sul portatile?
si, il p4 3.2 Ghz (non mi ricordo che core è) non differisce per niente da quello da desktop, o no?
quale di questi è? acer aspire 1623LMi
MotoNutria
12-02-2005, 13:58
Originariamente inviato da peter2
...
ora quando eseguo un programma scritto da me in fortran (ci mette circa 3 ore per girare), esso mi occupa solo il 50% spaccato del processore....mmmm qui qualcosa non va... perchè non usa tutta la potenza necessaria?!?!
non è per caso che quei furboni alla intel hanno messo l'HT che si attiva comunque anche quando il thread è uno solo?
e poi, scusate, ma per eseguire due processi contemporanei non ci vuole il supporto di un SO apposito? io ho WXP HE SP2. va bene o manca del supporto al multithreading?
NB E' escluso che non vada al 100% per colli di bottiglia vari (l'occupazione di RAM è solo di 3-4 MB).
...
Dipende dal compilatore che hai utilizzato... se quando compili il sorgente non abiliti le flag per il multiprocessing allora ciccia, il programma utilizzerá un procio solo e quindi di conseguenza, visto che winzoz xp l'HT lo riconosce come un doppio procio non sfrutterá questa funzione...
io ho avuto modo di provare tutto ció ricompilando il sorgente di VirtualDub (programma FreeWare) con il compilatore C++ dell'intel sia in modalitá singolo processore che multiprocessore e solo con quest'ultimo binario vedevo dal taskmanager l'utilizzo della seconda "CPU virtuale"...
per quanto riguarda l'utilizzo al 50% della cpu dipende anche dai dati che utilizza il programma... se usa solo dati nella cache interna puó arrivare a valori di occupazione alti se invece deve accedere a dati sull'hd o nella ram allora il procio avrá degli stati di attesa...
Originariamente inviato da peter2
che diff 'è tra il multithreading e il supporto a più proci? quali SO hanno il secondo?I sistemi operativi professionali, come Windows Server 2003, Windows 2000, Windows XP Pro... oppure tutte le versioni di Linux se ci installi il kernel corretto.
Il multithreading consiste nel "distribuire" la potenza elaborativa della CPU tra i vari programmi che sono in esecuzione in un dato istante, tramite un banale time sharing.
Quando si hanno due processori, invece, parte dei thread vanno eseguiti su uno, e parte sull'altro, suddividendo i compiti e migliorando le prestazioni.
come fai a dirlo?Perché l'Hyperthreading non è uno sdoppiamento del processore. Le uniche cose che vengono sdoppiate sono i registri. Cache, bus e soprattutto la pipeline rimangono gli stessi. La pipeline è la serie di stadi di elaborazione delle istruzioni.
Nei Pentium 4 la pipeline è molto lunga e rimane spesso vuota: l'Hyperthreading limita questo fenomeno, andando a riempire gli spazi vuoti con le istruzioni di un secondo processore virtuale. Ma se il tuo programma deve essere eseguito in un certo modo, viene comunque eseguito in quel modo sia con l'HT attivo che disattivo. Insomma, i "buchi" nella pipeline ce li lascia comunque, sia che vengano riempiti che no, e la sua velocità di esecuzione è la stessa. Potresti ovviare parzialmente rendendo il tuo programma multithreaded e sfruttando l'HT. Non so se mi sono spiegato.
si, il p4 3.2 Ghz (non mi ricordo che core è) non differisce per niente da quello da desktop, o no? Manca dello SpeedStep, cioè della tecnologia di risparmio energetico avanzata dei processori mobile.
Originariamente inviato da MaxArt
I sistemi operativi professionali, come Windows Server 2003, Windows 2000, Windows XP Pro... oppure tutte le versioni di Linux se ci installi il kernel corretto.
Il multithreading consiste nel "distribuire" la potenza elaborativa della CPU tra i vari programmi che sono in esecuzione in un dato istante, tramite un banale time sharing.
Quando si hanno due processori, invece, parte dei thread vanno eseguiti su uno, e parte sull'altro, suddividendo i compiti e migliorando le prestazioni.
Perché l'Hyperthreading non è uno sdoppiamento del processore. Le uniche cose che vengono sdoppiate sono i registri. Cache, bus e soprattutto la pipeline rimangono gli stessi. La pipeline è la serie di stadi di elaborazione delle istruzioni.
Nei Pentium 4 la pipeline è molto lunga e rimane spesso vuota: l'Hyperthreading limita questo fenomeno, andando a riempire gli spazi vuoti con le istruzioni di un secondo processore virtuale. Ma se il tuo programma deve essere eseguito in un certo modo, viene comunque eseguito in quel modo sia con l'HT attivo che disattivo. Insomma, i "buchi" nella pipeline ce li lascia comunque, sia che vengano riempiti che no, e la sua velocità di esecuzione è la stessa. Potresti ovviare parzialmente rendendo il tuo programma multithreaded e sfruttando l'HT. Non so se mi sono spiegato.
Manca dello SpeedStep, cioè della tecnologia di risparmio energetico avanzata dei processori mobile.
ok capito... ma ancora non riesco a spiegarmi come mai del 50 % quando su un xp 2000+ usa il 100 %...
mah
Originariamente inviato da peter2
ok capito... ma ancora non riesco a spiegarmi come mai del 50 % quando su un xp 2000+ usa il 100 %...Semplicemente perché con l'HT il rilevatore di risorse non fa altro che stimare al 100% l'occupazione di uno dei due processori (virtuali) e supporre (sbagliando) che questo significhi il 50% della capacità elaborativa complessiva del sistema di processori.
Ecco, ho scritto: ora rileggi perché neanche io che l'ho scritto sarei in grado di afferrarlo subito! ;)
HolidayEquipe™
15-02-2005, 03:53
ctrl + alt + canc
selezionare la voce prestazioni...
alla voce cronologia cpu dovresti vedere 2 finestre...quelli sono i due processori...se ne vedi una sola significa ke l'ht non e' attivo...
;)
Originariamente inviato da MaxArt
Semplicemente perché con l'HT il rilevatore di risorse non fa altro che stimare al 100% l'occupazione di uno dei due processori (virtuali) e supporre (sbagliando) che questo significhi il 50% della capacità elaborativa complessiva del sistema di processori.
Ecco, ho scritto: ora rileggi perché neanche io che l'ho scritto sarei in grado di afferrarlo subito! ;)
chiaro come la faccia di fideli banga bauna :D
Originariamente inviato da peter2
ok capito... ma ancora non riesco a spiegarmi come mai del 50 % quando su un xp 2000+ usa il 100 %...
mah
Il 50% si riferisce a la capacità elaborativa totale cioè stai utilizzando solo il processore fisico e non quello logico...
Il problema è che il software che utilizzi non è multithreaded per cui non sfrutta il processore logico, quando usi un software pensato e compilato per sfruttare più processori l'occupazione della cpu sale al 100% (ad esempio mi ricordo che con tmpgenc l'occupazione è del 100%)...
greeneye
15-02-2005, 22:12
Puoi provare a ricompilare il programma con un compilatore che supporti HT e vedere se il carico risulta suddivisio sulle 2 cpu virtuali.
Per avere dei benefici reali probabilmente il tuo software dovra essere anche modificato.
jappilas
15-02-2005, 23:40
Originariamente inviato da greeneye
Puoi provare a ricompilare il programma con un compilatore che supporti HT e vedere se il carico risulta suddivisio sulle 2 cpu virtuali.
Per avere dei benefici reali probabilmente il tuo software dovra essere anche modificato.
infatti prima che del compilatore, preoccupatevi della progettazione del codice...
http://www.javaworld.com/javaworld/jw-08-1998/jw-08-techniques.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_Multithreading.3a_.Programming_Tips.asp
http://www.awprofessional.com/articles/article.asp?p=169479&seqNum=10
allora...molta confusione cel'ho io in testa...mapure voi mica scherzate!!! :D
1) MaxArt e HolidayEquipe™, le vostre conclusioni sono in contrasto: il primo dice che è un'errore di interpretazione del process manager, il secondo che l'ht non è attivo. io non lo so...(guarda caso... :D )
2) Berno invece dice che non essendo un applicazione ottimizzata per il multithreading, non sfrutta il doppio processore (questo mi fa risorgere i dubbi sulla differenza tra multithreading e multiprocessor).
3)greeneye e jappilas forse si riferiscono al file allegato: io posso pure attivare il suppporto per il multithreading da parte del compilatore, ma poi se il codice non prevede dei processi paralleli,che se ne fa?
4)spulciando le opzioni di compilazione ho visto che ci sono vari settaggi per il tipo di processore in uso (386,586,686,pentium, pentiumpro,pentiumII), e per l'ottimizzazione del codice per privilegiare la velocità....che ci metto? rischio che mi si abbassa la precisione?
ciao a tutti!!
Originariamente inviato da peter2
1) MaxArt e HolidayEquipe™, le vostre conclusioni sono in contrasto: il primo dice che è un'errore di interpretazione del process manager, il secondo che l'ht non è attivo. io non lo so...(guarda caso... :D )Non ha detto questo: ti ha solo dato un metodo per verificare se l'HT è attivo oppure no.
2) Berno invece dice che non essendo un applicazione ottimizzata per il multithreading, non sfrutta il doppio processore (questo mi fa risorgere i dubbi sulla differenza tra multithreading e multiprocessor).Berno ha ragione. Che dubbi avresti?
Un'applicazione multithreaded gira meglio su un sistema a più processori, cosìcché i singoli thread che compongono il programma si distribuiscono sui processori disponibli.
3)greeneye e jappilas forse si riferiscono al file allegato: io posso pure attivare il suppporto per il multithreading da parte del compilatore, ma poi se il codice non prevede dei processi paralleli,che se ne fa?Poco. Il compilatore parallelizza quel che può.
Non uso il Fortran e non so che opzioni dovresti mettere. Tu fa' delle prove! Usando magari un programmino di cronometro dei thread, ora non mi ricordo come si chiami...
Originariamente inviato da MaxArt
Non ha detto questo: ti ha solo dato un metodo per verificare se l'HT è attivo oppure no.
appunto, e dato che non appare la doppia finestra secondo lui l'ht non è attivo=>50%, che non è la tua tesi, giusto?
Berno ha ragione. Che dubbi avresti?
Un'applicazione multithreaded gira meglio su un sistema a più processori, cosìcché i singoli thread che compongono il programma si distribuiscono sui processori disponibli.
quindi secondo te un applicazione scritta e compilata in multithreading sfrutta automaticamente il doppio prcessore? ... :confused:
Poco. Il compilatore parallelizza quel che può.
Non uso il Fortran e non so che opzioni dovresti mettere. Tu fa' delle prove! Usando magari un programmino di cronometro dei thread, ora non mi ricordo come si chiami...
provo, ma faccio un backuppino prima ;)
quante cose si imparano!!!;)
aggiornamento!!!!
nella gestione risorse c'è la possibilità di graficare l'utilizzo di più cpu in un grafico solo: da me era abilitato!!! ecco perchè non le vedevo tutt'e due!!!!
allora il 50% di utilizzo è reale: nel senso che usail 50% di ogni core logico, giusto?
Originariamente inviato da peter2
quindi secondo te un applicazione scritta e compilata in multithreading sfrutta automaticamente il doppio prcessore? ... :confused: E direi di sì, altrimenti che senso avrebbe tutto quello sbattimento? :asd:
Quando all'HT attivo o meno: non so che risponderti! Non so che programmi usi, e purtroppo non ho un P4 per verificare di persona.
Originariamente inviato da MaxArt
E direi di sì, altrimenti che senso avrebbe tutto quello sbattimento? :asd:
quindi a parte tmpgenc nessuno software commerciale (3dstudio o autocad per esempio) è scritto in multi threading... e allora chi caspita lo usa sto multithreading???
:confused:
Originariamente inviato da peter2
quindi a parte tmpgenc nessuno software commerciale (3dstudio o autocad per esempio) è scritto in multi threading... e allora chi caspita lo usa sto multithreading???Se un software è scritto per multithreading ciò non vuol che che per ogni cosa che fanno è utile o necessario il multithreading. ;)
jappilas
18-02-2005, 15:19
Originariamente inviato da peter2
quindi secondo te un applicazione scritta e compilata in multithreading sfrutta automaticamente il doppio prcessore? ... :confused:
da un lato sì perchè alla fine, "scritta" vuol dire in base a determinati criteri di SW design a cui accennavo in altre occasioni e che non si limitano a mettere fork() oppure new CWinThread nel codice
(il non rispettare tali criteri, ad esempio non proteggere le variabili condivise da sezioni critiche o semafori, ha una grossa chance di produrre errori/crash/condizioni di race al momento dell' esecuzione, anche su un sistema monoprocessore)
e dall' altro "dipende" perchè "compilata" implica che, al momento dell' esecuzione, si ha una libreria, compilata staticamente o dinamicamente, che gestisce i thread multipli appartenti allo spazio di una stesso processo: tale gestione può seguire uno di vari modelli possibili, alcuni dei quali, contrariamente a quanto comunemente supposto (come leggevo poco fa qui a proposito della libreria GNU Pthread (http://www.gnu.org/software/pth/pth-manual.html#the_world_of_threading) ) non scalano su più CPU, per via della politica di thread scheduling "interna" al programma
C'è anche da tenere presente che, un programma con thread multipli attivi, ci si aspetta che faccia richieste concorrenti al kernel per interagire con l' I/O, nel caso questo sia di esclusiva competenza del kernel (come nel caso di linux e unix)
ma se il kernel non serve richieste concorrenti, magari perchè i suoi sottosistemi devono sottostare a un "lock" comune (accade in versioni dei kernel sia linux sia bsd... ) è il kernel a fare da "collo di bottiglia"... e infatti molti sforzi si sono fatti o si stanno facendo per rimuovere il global lock, o almeno ridurre il numero di system call affette da esso
TRA L' ALTRO
Originariamente inviato da jappilas
TRA L' ALTRO Minkia che rispostona! :D
jappilas
18-02-2005, 19:46
la rispostona si riferiva agli accorgimenti implementati da sviluppatori di un po' tutti gli OS (linux, bsd, anche la M$ su NT) per, "tra l' altro",
rimuovere il global lock e trasformarlo in mutue esclusioni a più elevata "granularità"...
ridurre le latenze delle system call del kernel , ricorrendo a vari metodi , tra gli altri (:D) la kernel preemption ...
... aventi lo scopo ultimo di migliorare l' efficienza, la reattività del sistema sotto carico, o almeno della sua gui ecc..
...e che adesso si danno molto per scontate ma che sui kernel monolitici sono state a lungo sospirate, e che altri progetti più sconosciuti (sto pensando ad atheos, oppure i kernel L4 abbinati al DOpE gui engine) invece integravano fin dall' inizio ...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.