PDA

View Full Version : linux e multithreading


CaFFeiNe
17-03-2009, 14:56
ma secondo voi, le apps sono tutte precompilate con ottimizzazione multithread?
il kernel, almeno di opensuse, ricordo che standard aveva integrato il supporto...
ma le apps?

AnonimoVeneziano
17-03-2009, 15:13
ma secondo voi, le apps sono tutte precompilate con ottimizzazione multithread?
il kernel, almeno di opensuse, ricordo che standard aveva integrato il supporto...
ma le apps?

Uhm, è un po' ambiguo quello che intendi con "precompilate con ottimizzazione multithread" .

Il multithreading è una cosa che fa il programmatore , non il compilatore. (ci sono degli algoritmi che cercano di parallelizzare il codice seriale nei compilatori C più moderni come GCC e ICC , ma non c'entra niente con il multithread)

pabloski
17-03-2009, 15:41
linux supporta nel kernel NPTL, quindi il supporto c'è. tant'è che il sistema riesce a creare circa 50.000 thread al secondo

però in tutta sincerità i thread e i processi multipli non vanno molto di moda tra i programmatori

le grandi applicazioni tipo kde, gnome, ffmpeg, mplayer ne fanno uso, ma programmini tipo gedit di sicuro non ne fanno uso

però in generale i componenti critici del sistema fanno tutti uso del multithreading....almeno sulla questione performance i linari sono sempre primi :D

CaFFeiNe
17-03-2009, 21:37
scusa anonimo imi sono sbagliato nell'espressione... volevo dire appunto programmati, prima di essere compilati (da qui precompilati) ;)

cmq oltre il supporto negli algoritmi, penso debba anche essere compilato con i relativi flag, se non sbaglio...

cmq mi fa piacere che i progetti base di linux sono tutti ottimizzati, cosi' il quad che domani monto, ne giovera'

AnonimoVeneziano
18-03-2009, 01:07
scusa anonimo imi sono sbagliato nell'espressione... volevo dire appunto programmati, prima di essere compilati (da qui precompilati) ;)

cmq oltre il supporto negli algoritmi, penso debba anche essere compilato con i relativi flag, se non sbaglio...

cmq mi fa piacere che i progetti base di linux sono tutti ottimizzati, cosi' il quad che domani monto, ne giovera'

Beh, dipende ... il multithread non sempre è una cosa utile.
Ad esempio citiamo il caso di "gedit" (preso in causa da pabloski). Abbiamo che questa è una applicazione che per il 99% del tempo sta ad aspettare un input dell'utente . In una applicazione del genere il multithread è una cosa totalmente inutile :)
Sembrerà incredibile , ma è così per un gran numero di applicazioni (probabilmente la maggior parte) . Il multithread è per lo più utilizzato per fare in modo che la GUI di un programma non interrompa il refresh se l'applicazione inizia a fare una elaborazione che richiede più di qualche secondo (ad esempio se un programma di rendering di una scena 3d esegue il rendering nello stesso thread che si occupa di aggiornare l'interfaccia grafica abbiamo che quest'ultima non risponderà più ai comandi fino a che il rendering non sarà terminato, quindi si usa mettere questi compiti in un thread separato).

CaFFeiNe
18-03-2009, 09:14
beh io parlavo piu' che altro di software che fanno largo uso di interfaccia, software multimediali etc
per dirti:

il DE in se (e questo lo sara)
lettori multimediali (mplayer, xine, o qualunque motore vogliamo)
browser (importante, sia per l'apertura di schede multiple, cosa che io uso tantissimo, ad esempio di solito nei forum di hwu apro prima tutte le schede dei forum, poi tutte le schede dei post, col risultato di avere 30 40 schede aperte con facilita'... e firefox linux, ogni tanto rallenta)

oltre ovviamente al multitasking in senso stretto (piu' programmi aperti insieme)

come ben sappiamo, che la stessa applicazione ad esempio spezzetti un video su piu' core
o in un caso di un browser, affidi un tot di schede ad ogni core, o ancora meglio, 1 core per tutti i renderind grafici, 1 per eventuali animazioni, 1 per la gestione delle schede etc....
sono entrambi casi in cui ci sarebbe un ottimo boost prestazionale, proprio per il funzionamento base del datapath e delle pipeline... poter spostare dei bit da un'altra parte, gia' offre un certo boost...
che poi i calcoli in virgola mobile, sono qulli che piu' prendono vantaggi da una parallelizzazione è un altro conto ;)

pabloski
18-03-2009, 09:21
oh però non dimentichiamo che il kernel fa ampio uso del multitasking e quindi alla fin fine pure con applicazioni single thread i vari core vengono usati, perchè il carico di tutti i processi attivi viene comunque distribuito su tutti i core

chiaramente un riproduttore video non può non usare il multithreading altrimenti rischia di vedersi relegato ad un singolo core e magari non riesce a riprodurre l'ultimissimo video su bluray

a proposito, sembra che il bluray stia arrivando su linux http://www.phoronix.com/scan.php?page=news_item&px=NzE0Ng :D

CaFFeiNe
18-03-2009, 09:38
io piu' che nel bluray spero in un supporto completo e integrato vdpau in mplayer e xine, dato che sarebbero entrambi da patchare con varie patch per ottenere il supporto... e ancora meglio se fosse vdpau2