Newsgroup: it.comp.os.linux.sys
Titolo: doppio processore

Vorrei capire come linux gestisce i sistemi doppio processore (sia x86 che 
powerpc), in particolare mi interessa sapere se il kernel distribuisce il 
lavoro automaticamente ai due processori o se per sfruttare tale 
caratteristica ogni singolo programma deve avere del codice in piu'.
Ciao e grazie in anticipo 

 codice in piu'.
Non e' necessaria alcuna modifica ai programmi.
Se il programma e' multithread potra' avere piu' thread in esecuzione in
contemporanea su diversi processori, se non lo e' comunque se ne avvantaggia
perche' puoi avere processi diversi eseguiti in contemporanea sui diversi
processori (e poiche' su un sistema solitamente ci sono molti processi in
esecuzione e' comunque una cosa utile).
Alessandro.

Paolo Gaggini wrote:

si , su x86 il kernel 2.4.19 è scalabile fino a 8 processori , dopodiche' 
sfrutta i successivi solo dopo il sovraccarico dei primi .
su powerpc è ancora piu' scalabile , arriva a 16 processori indirizzabili 
direttamente e a 128 su sovraccarico dei primi.
ps: il mio regatta ha 16 processori power4 e va' + di una scheggia....
ps2: purtroppo non ce l' ho a casa ma al lavoro ;-)


wrote:

aggiungo che hanno o stanno ancora discutendo sull'eventualita' di
permettere al processo di specificare il processore (non so se solo a
livello kernel o anche a livello utente). questo per limitare eccessivi
cambi di processore con tutte le conseguenze del caso. a tal proposito
mi viene in mente una volta che ho lanciato seti@home su un biprocessore
e il processo saltellava periodicamente da una parte  all'altra. :-)
ciao
-- 
Seti@Home Java Applets
http://maruko.cjb.net/

 e il processo saltellava periodicamente da una parte  all'altra. :-)
Potevi lanciarne due (di seti@home)...
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 del caso.
siamo sicuri che il cambio di processore dia tutto questo fastidio? è 
tanto più pesante per un programma di un context switch? più che altro 
mi viene in mente che parti del kernel potrebbero non essere sicure o 
particolarmente ottimizzate per multiprocessore
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.20. C, C++ and ASM developers
                              and beta testers are welcome!

particolarmente ottimizzate per multiprocessore
penso che il punto della questione fosse evitare inutili cambi di
processore. il context switch e' necessario per il multitasking. il
cambio di processore serve a bilanciare il carico tra i processori.


 processori.
la mia domanda era se un context switch *accompagnato da* un cambio di 
processore fosse realmente meno efficiente di un context switch e basta


processore fosse realmente meno efficiente di un context switch e basta
ho capito cosa intendi e, attualmente, non so dirtelo. ho letto a
riguardo un po' di tempo fa e ora non ricordo abbastanza.


 processore fosse realmente meno efficiente di un context switch e basta
Si`, un context switch accompagnato da cambio di processore e` molto
piu` lento di un normale context switch ma rimanendo sullo stesso
processore, perche` va svuotata e riempita la cache del processore.
Nelle architetture Intel la cache e` completamente (livello 1 e 2, e per
alcuni anche il livello 3) dentro il processore.
Su alcune architetture mi pare ci sia cache L2 o L3 condivisa tra i
processori, rendendo meno traumatico il cambio di processore.
Nelle ultime versioni del kernel si sta cercando di rendere
"appiccicose" le applicazioni con riferimento al processore proprio per
questo motivo. In pratica un'applicazione che parte su una CPU, se
rimane in idle per meno di tot millisecondi trorna a funzionare sullo
stesso processore, altrimenti viene liberata e puo` essere messa su uno
qualsiasi.
Il problema e` appunto decidere il quanto di tempo, visto che dipende
molto dalle dimensioni della cache e dall'utilizzo della macchina.
Bye.