linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] Processori multi-core e linux

Andrea Gelmini andrea.gelmini a lugbs.linux.it
Mar 10 Feb 2009 14:28:18 UTC
Il 10 febbraio 2009 15.18, Vernia Damiano <damiano.vernia.ext a nsn.com>
ha scritto:
>        Cio' che intendevo e' questo: per quanto ne so lo scheduler Linux mette
> in esecuzione al piu' un thread per processo alla volta. Se cio' e' vero
> per quanto un programmatore possa essere bravo per sfruttare due core
> _deve_ usare due processi, non due thread dello stesso processo.
>        Se mi sbaglio coregitemi, mi semplificherebbe un sacco la vita e
> darebbe 15 marce in piu' al mio sistema (oltre a farmi compiacere ancora
> un po' di piu' del pinguino).

no, no, le cose sono assolutamente separate.
Lo scheduler dei processi mette in esecuzione tutto cio' che puo',
tenendo presente un mucchio di parametri (per esempio, non conviene
far rimbalzare i processi (o thread che dir si voglia, agli occhi di
linux sono la stessa cosa, solo sotto solaris la questione cambia) da
una CPU all'altra a seconda del carico, visto l'overhead dato poi
dall'invalidazione delle cache, ecc).
I thread, sempre per il sistema operativo, non sono serializzati, ma paralleli.
Probabilmente la tua convinzione deriva da una confusione con alcuni
linguaggi, come Java o Python, che per semplificare la vita al
programmatore si preoccupano loro di garantire la serialita' delle
azioni su alcune tipologie di dati, liberando chi scrive il codice
dalla gestione dei mutex, ecc. In particolare, con Python, si ha il
famoso GIL, che porta esattamente a quanto dici (ma anche qui la
situazione è in evoluzione e, comunque, esistono dei workaround molto
efficaci utilizzabili dal programmatore, per esempio utilizzando
callback, ecc).

Vabbè, il discorso sarebbe piuttosto lungo da portare avanti, tronchiamolo qui.

Ciao,
gelma




Maggiori informazioni sulla lista Lug